Категорија: Софтвер

Преглед на глобално инсталираните NPM пакети

Многу користно! Исто и npm update -g

Pondering Developer

I have found myself constantly asking, “Okay, so what npm packages do I have globally installed on this machine again? And what version are they?”.

So, instead of Goggling for the answer each and every time. I’m going to put it here. For my own convenience and maybe it will be useful for someone else.

npm list -g --depth=0

The result will look something like this:

C:\Users\paul.redman\AppData\Roaming\npm
├── bower@1.2.5
├── generator-angular@0.4.0
├── generator-karma@0.5.0
├── grunt-cli@0.1.9
├── jake@0.5.18
├── jshint@0.9.1
├── karma@0.8.7
├── nodeunit@0.7.4
└── yo@1.0.4

View original post

Иднината на оперативните системи

js+pcОперативните системи се софтвер, кој од сите типови на софтвер, ја има имаат потребата најмногу и најбрзо да се менуваат, да се подобруваат и да бидат во тек со најновите харверски новости но и со посакувањата на крајните корисници – меѓу кои барањата за поголема интуитивност и услужливост.

Очигледно зборувам оперативните системи наменети за “десктоп” машините, за мобилните уреди и таблетите, оние кои имаат најмногу контакт со нас – секојдневните корисници. Во овој пост нема да зборувам за оперативните системи кои се наоѓаат во сателитите, во системите кои не смеат ни за еден момент од времето да потфрлат, во серверите (виртуелизирани или не), во уредите во нулеарните реактори, болниците и слично – тие си заслужуваат посебна дискусија и секако не влегуваат во опсегот на она што сакам да го кажам во следните редови.

Имам мислење дека во период од следните години ќе видиме многу промени во декстоп и мобилните оперативни системи, мислење до кое дојдов поради неодамнешни случувања и трендови.

“Декстоп”

Да видиме што се случува тука во последно време:

  • Windows 8 е достапен за јавноста. Една од главните новости е можноста на развивачите на софтвер да пишуваат апликации во JavaScript – јазик кој едно време доминираше само во веб прелистувачите.
  • KDE корисничката околина која се користи во GNU/Linux оперативните системи со најновите верзии нуди подршка за пишување на апликаиции во QtQuick – кој e базиран на QML што е впрочем декларативен јазик базиран на JavaScript.
  • GNOME корисничката околина која истотака се користи во GNU/Linux оперативните системи најави дека JavaScript ќе биде ‘граѓанин од прв ред’ помеѓу другите веќе постоечки јазици во кои можат да се пишуваат апликации. И не само тоа, туку и ќе биде примарниот избор за оваа цел.
  • Chrome OS
    • Самиот оперативен не нуди стандардни десктоп апликации, туку секоја апликација е впрочем веб апликација и се наоѓа во самостоен прозорец во корисничкиот интерфејс – притоа нудејќи ја илузијата дека е стандардна десктоп апликација. Има неколку типови на апликации кои се достапни во Chrome OS, но – иако се ‘веб’ апликации – нудат можност и за работа и кога нема корисникот пристап до интернет – доколку авторот на таа апликација ги има искористено соодветните можности кои ги нуди Chrome OS за таа функционалност.
    • Друго многу важно, поврзано со Chrome OS е фактот дека Chromebook-от на Samsung е најпродаван лаптоп на Amazon во дадената категорија и доминира во неа веќе неколку месеци и фактот дека Google само што го претстави за продажба премиум Chromebook лаптопот Pixel.
Samsung Chromebook - бестселер во "Best Sellers in Laptop Computers" веќе неколку месеци
Samsung Chromebook – бестселер во “Best Sellers in Laptop Computers” веќе неколку месеци
Chromebook Pixel - ултрапремиум (и ултраскапиот) Chrome OS уред од Google
Chromebook Pixel – ултрапремиум (и ултраскапиот) Chrome OS уред од Google

Ова укажува на неколку трендови:

  • ‘The client side seismic shift’ – кајшто се повеќе декстоп апликации ќе се заменуваат со решенија базирани на JavaScript – кајшто е можно (засега).
  • Ќе дојде времето кога ‘десктоп’ оперативните системи ќе бидат поделени на две категории – да речеме лесни и тешки. Лесни ќе бидат тие како Chrome OS кои се одлични за секојдневните корисници кои саат да поминат време на Facebook, да пратат мејл, да напишат некоја белешка во Google Docs, да слушнат некоја песна на SoundCloud и да прегледаат некој видео стрим или клипче на YouTube. Голем дел од корисниците не прават повеќе од годенаведеното. Потоа, ‘тешките’ оперативни системи ќе доминираат таму кадешто треба повеќе моќ од машината но и по-способни апликации. Тука станува збор за користење на софтвер за обработка на податоци, за аудио и видео творење, за програмирање и за софтвер кој влегува во научни цели.
  • Целото тоа оспособување на развивачите на софтвер да пишуваат апликации во JavaScript ќе доведе до можноста една апликација да има две ‘однесувања’ – доколку е извршена на тешката верзија на оперативниот систем – ќе има повеќе функционалности и соодветно доколку е извршена на лесната верзија – ќе има соодветно помало множество на понудени функционалности. Не сум користел Windows 8 и Windows RT – но мислам дека таму веќе се појавува оваа поделба на некое почетно/површно ниво – некои апликации работат и на двете верзии а некои само на Windows 8.
  • Иако се користи JavaScript – за секој оперативен систем и секоја околина соодветно има специфични JavaScript библиотеки кои служат како интерфејс за комуникација помеѓу веб апликацијата и оперативниот систем (пристап до хардверски функции, пример gps, батерија, телефонски повици, итн…). Ќе дојде времето кога ќе има една библиотека која ќе ја користи развивачот на софтвер – а соодветно за избраниот оперативен систем таа ќе ги корсити специфичните методи од предвидената библиотека за него. Ова донекаде е веќе прикажано со QtQuick – кајшто имаме еден ист код – но можеме да правиме апликации и за Linux и за Windows и OS X – но мојата замисла е дека ова ќе биде и на поголемо ниво.
  • Следствено, софтверот како сервис (SaaS) ќе биде во уште поголем пораст. Отворете го Chrome Web Store и ќе ви стане јасно. И новиот Mozilla Marketplace е знак дека овие времиња доаѓаат.

Некои од точкиве се испреплетуваат/се зависни меѓусебно.

“Мобајл”

Во ова поле, кајшто великаните iOS и Android доминираат и Windows Phone е во пораст, се очекува да имаат конкуренција или годинава или 2014та.

Во горенаведените мобилни оперативни системи нема некои ‘сеизмички’ промени, нови верзии од нив добиваме секои неколку месеци, со нови оптимизации и подобрувања но не некои круцијални промени во корисничкиот интерфејс или ‘под хаубата’ во архитектурата на системот и начинот на кој се пишуваат апликации за него.

Но затоа, во развој се неколку оперативни системи кај кои главна работа која ги разликува од горенаведените е тоа што пишувањето на апликации за нив се врши во веб технологии како HTML, CSS и JavaScript.

Тие се веб технологии, но во овие нови оперативни системи ќе создаваат ‘нативни’ апликации за нив. Пионир во овој тип на мобилни оперативни системи беше webOS – кој падна во рацете на HP и отиде во неповрат. Но затоа има нови играчи:

  • Како Sailfish OS на Jolla – фирма создадена од момците кои си отидоа од Nokia а работеа на MeeGo, Maemo и слично – со еден збор талентирани луѓе. Sailfish користи Qt/QML кој веќе е спомнат во овој блогпост.
  • Друг нов играч е Firefox OS на Mozilla – комплето базиран на веб техологии – кои пред некој месец најавија два ‘девелопер’ телефони во соработка со Telefonica и Geeksphone. А денес најавија и телефони во соработка со LG, Alcatel и други производители.
Една од сликите од најавувањето на Firefox OS (превземено од http://live.theverge.com/firefox-os-mwc-2013-live-blog/ )
Една од сликите од најавувањето на Firefox OS (превземено од http://live.theverge.com/firefox-os-mwc-2013-live-blog/ )
  • Трет е Tizen – труд на Samsung за ваков тип на оперативен систем, и секако ‘план б’ и осигурување на независност од Google и Android.
  • Четврт е Ubuntu за мобилни и Ubuntu за таблети – кој како Jolla – со кориснички интерфејс базиран на Qt и јадрото базирано на GNU/Linux. Веќе се очекува во 2014 да почнат да се продаваат уреди базирани на оваа верзија на Ubuntu, но Firefox OS ги претрка.
Ubuntu за мобилни (превземено од http://www.theverge.com/2013/2/19/4005514/ubuntu-phones-2014-might-be-locked-down-by-mobile )
Ubuntu за мобилни (превземено од http://www.theverge.com/2013/2/19/4005514/ubuntu-phones-2014-might-be-locked-down-by-mobile )
  • И да не заборавиме на Plasma Active – трудот на KDE развивачите да направат оперативен систем за таблети кој ги користи иновациите и технологиите кои се достапни во KDE – една од најнапредните кориснички околини. Aпликациите за Active се пишуваат во QML. Веќе има пробни верзии како Kubuntu Active – модифицирана верзија на Kubuntu.

Дали овој нов бран на мобилни оперативни системи ќе создаде промени останува да видиме. Тоа зависи од дали:

  • Секојдневните корисници ќе земат уред базиран на некој од новите оперативни системи;
  • Колку голем “хајп” ќе се создаде и популарност, па да и постоечките (гореспоменати) великани ќе понудат ваков начин на развој на софтвер за нивните оперативни системи;

Доколку има основа, одностно горните зависности се исполнат, ќе доведе до трендови како:

  • оперативни системи базирани на целосно отворени технологии;
  • последните две точки од трендовите кај ‘десктоп’.

Околу овие промени, да не ги заборавиме и веќе постоечките решенија како PhoneGap/Apache Cordova, Titanium, и така натаму, кои веќе овозможуваат користење веб технологии за изработка на мобилни апликации. Доколку имате апликација во Phonegap/Cordova – голема е можноста со лесност во иднина да ја приспособите за горенаведените нови мобилни оперативни системи. Поважниот дел во промените што иднината ги носи е што користењето на овие техологии ќе се извршува на пониско ниво на оперативниот систем од што се случува моментално, со тоа и перформансите ќе бидат подобри од што се моментално.

Уште една мисла за крај: Покрај сите овие промени кои надоаѓаат во софтверот, јасно е дека ќе треба да има промени/надградби и во вештините кои ги поседуваат развивачите на софтвер. Односно да не се само “шлапа” JavaScript туку и да се навлезе во подлабоките концепти и можности кои ги нуди јазикот и да се искористат.

И тоа е тоа, може многу да се навлегува, истражува па и филозофира на темава, но мислам дека има доволно ментална стимулација во постов за да ве замисли.

Доколку забележите некаква грешка, или сакате да го споделите вашето мислење, не се двоумете.

Истражувањата на Гугл во полето на “distributed big data systems” [updated x1]

Постов е со цел да направам листа на објевените истражувања од страна на Гугл во горенаведената област (која нема да ја преведувам :)). Секое од овие истражувања донесуваат нови откритија и се, како што ги нарекуваат, револуционерни поради иновациите кои ги произнесуваат.

Зад секое од овие истражувања стои практична имплементација во Гугл и се производ од нивните потреби да се справуваат ефикасно со огромната количина на податоци кои секојдневно се зголемуваат. Истотака постојат и OpenSource имплементации базирани на некои од овие истражувања, како што е проектот Hadoop.

Би ги поделил во два ‘брана’.

Првиот бран се:

И, да речеме вториот бран, се:

Happy reading ;)

EDIT: Дополнително, и Sawzall е уште едно објавено истражување поврзано со тематиката.

Интересни информации за Stripe како фирма

После Valve, следна интересна фирма за зборување е Stripe. Stripe е сервис за електронско плаќање кој е прилично популарен во Америка (можете да поизнесете интерес за Македонија тука! :)) кој дури има подршка од основачите на PayPal.

Како секој нов стартап, Stripe практикуваат некои методи кои не се стандардни во сите фирми поради најразлични причини, и пред некое време еден од вработените таму спорели искуства. Слободно прочитајте ја целата статија, јас само ќе извадам неколку интересни работи од неа:

  1. Комуникацијата по мејл е комплетно транспарентна: било кој мејл пратен до некој вработен оди или на мејлинг листата на ниво на цела фирма, или на некоја листа до некој специфичен тим.
  2. Состанок на ниво на цела фирма еднаш неделно: што е возможно во помалите фирми нормално :), секој тим кажува што направил минатата недела и што планира следната. Нешто како голем Скрам митинг.
  3. Интернет групи и чат: покрај мејлови, за комуникација користат Google Chat и IRC, што кај нив се покажува дека е поефикасно. Не се прекинуваат сред работа вработените и враќање на порака по чат трае пократко од порака по мејл.
  4. Луѓе и тимови: слично како кај Valve, кога некој вработен ќе дојде со добра идеја, може да создаде тим и да ја имплементира. И исто како кај Valve, се охрабрува вработените да бидат и генералисти, освен нивната спремност во доменот кој го работат се охрабруваат и други работи да работат. Една од таквите идеи имплементирани од страна на вработени им се Хакатоните кои ги организираат, кајшто носат стотина луѓе во нивните канцеларии, нудат храна, пиење и компјутери и работат на идеи и `хакови`.
  5. Читање трудови: ова особено ми се допаѓа и го подржувам. Секоја недела, група од вработени зема еден научен/технички труд, го анализира и работите кои ги осознале ги споделуваат со сите други. Што е уште покул, листата од трудови е јавна.

Блог постот е доста подолг, чек ит аут.

Интересни информации за Valve како фирма

Сите знаеме за Valve – ни ги донесоа Half Life и Counter Strike. Потоа и Half Life 2, Portal и Team Fortress и така натаму. Покрај игрите, истотака нудат и одличен сервис (или подобро речено платформа) наречен Steam.

За сите големци од овој тип кои прават игри одсекогаш се ширеле (кул) муабети за како им е на вработените таму, какви се тие, во какви простории работат и слично. Во тој дух денес на HN беше поднесен еден документ наречен Handbook for New Employees  кој им го даваат на сите тие кои прв ден доаѓаат на работа таму. Слободно можете да го превземете од линкот, а јас ќе изнесам некои факти од него:

  1. Организациската структура во Valve е рамна: кажуваат дека кога имаш умни, талентирани и иновативни луѓе, со наредувањето што да прават и да седат на биро 99% од нивната вредност се губи. Се бараат иноватори – а тоа бара услови каде тие можат да творат. Секој има исто/големо ниво на одговорност и зелено светло за работа на проект.
  2. Бироата имаат тркалца: секој треба да биде таму каде што е од најголема вредност. Тимови се формираат и расформираат, некои бараат помош од некого па треба да биде до нив и слично. Бидејќи овие преместувања често се случуваат, имаат интерен сервис кој кажува кој вработен кај се наоѓа а неговата позиција ја наоѓа во зависност на кој LAN приклучок е приклучен тој.
  3. Вработениот сам одлучува на кој проект ќе работи: треба да одлучи во кој проект ќе биде од најголема вредност, кој проект најмногу го исполнува и најмногу ќе го награди. Некои проекти се кратки, некои долги – како во секоја компанија. Секој со одлична идеја на која веќе не се работи може да регрутира колеги да работат заедно со него.
  4. Секој има право на глас во било која одлука што се донесува: без разлика дали тој моментално работи на проектот на кој одлуката влијае или не. Работата на вработениот е да се `вметне` кадешто смета дека е потребен.
  5. Се формираат кабали и тим лидери: во Valve кабалите се привремени групи кои се спонтано формирани од повеќе тимови кои работат во различни полиња. Се формираат органски и од потребата да се исполни некоја поголема идеја. Тим лидерите ја немаат таа класична менаџерска улога. Тие се луѓе кои со текот на проектот се издвојуваат и го држат целиот проект во нивната глава и служат како ресурс со информации на другите при преиспитувањето на одлуките на кои наидуваат.
  6. Ролјата на вработениот зависи од тоа што тој го работи во моментот: нема фиксни ролји, секој вработен кога е на еден проект си дава име на ролјата што го опишува најдобро. Кога ќе почне подоцна на друг проект да работи може и сосема друга ролја да има. Со други зборови, ролјите се флуидни.
  7. Ако вработен подолг период седи до касно на работа се обрнува внимание: во такви ситуации се врши реевалуација и се корегира каде што е потребно. Кога ги имаш најдобрите луѓе најважно е да бидат задоволни на работа и продуктивни но и да имаат добар баланс помеѓу работа и фамилија и другите важни работи во животот за нив.
  8. Вработените пишуваат евалуации помеѓу себе: еднаш годишно сите меѓу себе си даваат фидбек за нивната работа. Целта е да се соберат информации што би му помогнале на тој за кој се однесува фидбекот да биде уште подобар. Фидбекот се собира, прегледува, анонимизира и испорачува во форма на евалуација до секој за кого има таква.
  9. Стек рејтинг: секој вработен е спореден со другите врз база на четири мерила: ниво на вештина/техничка спремност, продуктивност/исход, придонес на ниво на група, придонес на ниво на проект. Колку е погоре вработениот толку повеќе вредност значи внесува во Valve и со тоа толку подобри компензации добива.

Има уште работи кои ги немам спомнато а ги има во документот (меѓу другото и историјата на Valve) како и одлични илустрации т.д. слободно прегледајте го.

Повеќе за:
[1] Valve
[2] Steam

Calepin – нов начин на блогирање

Пред некој ден се запознав со сервисот Calepin, кој наликува на минималистички блог сервис. Тоа што сервисот нуди и се разлукува од другите е интеграцијата со Dropbox и начинот на пишување статии.

Зошто интеграција со Dropbox? Пред се најавувањето се врши преку Dropbox кој користи OAuth (исто како што се најавувате преку на пример Twitter во други сервиси), и со прифаќање на автентикацијата се создава фолдер Calepin во нашиот акаунт (во патеката Dropbox/Apps/Calepin), во кој подоцна се зачувуваат статиите кои ги пишуваме. А статиите, се текст документи со .md наставка, кои се пишуваат во Markdown формат. Идеално :)

Markdown е формат кој е многу лесно читлив за тие што не ја знаат неговата синтакса, а и лесно се учи. И, секако има едитори кои помагаат за полесно пишување на документи во Markdown формат, и Web базирани (Backpager) и Desktop (ReText за Linux, MarkdownPad за Windows, итн итн..).

Сите статии се зачувуваат во фолдерот во Dropbox, и следните четири реда мора да се наоѓаат во почетокот на секој фајл:

Title: My First Post
Date: 2012-1-11
Slug: first-post
Status: draft

од кои првите два реда се обавезни, додека вторите два зависи од нашите потреби. Кога ќе спремиме статија, за да ги забележи промените Calepin само кликаме на копчето Publish кое се видливо кога ќе се логираме во сервисот. Истотака освен полињата што мора да ги има, мора и документот да е во UTF-8 енкодинг па затоа не користете Notepad туку нешто по цивилизирано :)

Сервисот има потенцијал, и авторот негов најаува бизнис модел поврзан со него, но сеуште го нема соопшетно. Моментално нуди Google Analytics интеграција, и основна конфигурација на автор/пагинација/формат на датум. Јас би очекувал теми/css прилагодување и промена на домен.

Спремете се за Google Summer of Code 2011

Google Summer of Code е програма која се оддржува секоја година, со која студенти работат цело лето (~ Мај – Август) на OpenSource проекти, и притоа и проектите имаат придонес, и студентите имаат придонес.

Принципот на кој работи GSoC е следниот. Менторите ги пријавуваат проектите до даден рок, меѓу кои се GNOME, KDE, Boost C++, Blender, Chromium, Drupal, Git, Haiku, Mozilla, PostgreSQL, WordPress, итн итн… Откако ќе се утврди кои проекти се прифатени, студентите аплицираат. И потоа од поднесените идеи од студентите и од менторите, се доделува по една на секој студент, и тој има рок цело лето да ја реализира, притоа комуницирајќи со меноторот кој ќе му помага, а и другите развивачи кои се дел од тој проект. Секако не очекувајте целата задача некој друг да ви ја испрограмира :)

Зошто би аплицирале за GSoC?

  • убаво ќе ги извежбате вашите вештини во програмирањето;
  • ќе остварите нови контакти со паметни и интересни луѓе;
  • ако успешно завршите: добивате маица од Google и сертификат (сликата подолу);
  • добивате убав додаток во вашето CV;
  • пари. За наши стандарди доста убави пари [link];
  • и најважно, bragging rights :)
Секој студент кој учествувал изјавува дека искуството е повеќе од позитивно.

Како да “се спремите” за GSoC?

  • видете кои организации/проекти биле примени изминатите години [link]
  • секој проект си има своја Wiki-style страница на која биле дебатирани и поставувани задачите за програмирање, разгледајте ги (пример: Fedora, GNOME, Haiku);
  • за секоја задача пишува колку е тешка и кои познавања се бараат од вас (пример кај Gephi проектот);
  • вклучете се во предложувањето на идеи додека организациите аплицираат, тоа е многу важно од повеќе причини но пред се ќе се запознаете со проблематиката порано;
  • вклучете се во заедницата, сите OpenSource проекти имаат мејлинг листи, форуми и ирц канали на #freenode. Немора да чекате да почне периодот за аплицирање од страна на студентите за да се запознаете со другите луѓе од заедницата!
  • разгледајте ги ланските задачи и пробајте да имплементирате нешто слично, немора 100% да го реализирате, но барем да добиете претстава што сѐ ќе треба да направите летото за да ја исполните вашата задача;
  • отворете си блог, пример на wordpress.com или blogspot.com, претежно сите студенти кои аплицираат, на нерегуларна база од неколку недели постираат по некој блог пост со кој кажуваат до каде се со задачата и какво им е искуството;
  • гуглајте по нет, прочитајте за искуствата на студентите од претходните години;
  • организирајте си го летото, цел месец во Грција може да значи неуспех во исполнувањето на вашата задача;
  • и last but not least, убаво проучете го целиот официјален сајт за GSoC 2011 [link] и пратете го официјалниот блог за OpenSource работи на Google [link].

Ако не сте зафатени летото, строго ви препорачувам учество во GSoC.