сряда, 11 ноември 2009 г.

Аз съм много тъп, но поне се старая

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

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

На всички които са се чудили защо съм толкова странен и различен: Интересувам се от всичко и не ме е страх от непознатото. Прекомерно любопитство. Това е. За това се занимавам с компютри, математика, за това се опитвам да се науча да пиша с този блог, за това се мъчих да се науча да рисувам, за това уча и за това се съм замислен постоянно, защото съм любопитен, а не защото съм умен или имам някакви особени таланти(любопитството е ЕДИНСТВЕНИЯ ми потвърден талант, всичко останало е спорно).

Чудих се защо повечето хора не са като мен в това отношение. Нямам никаква представа. Отне ми доста време докато осъзная какво точно ме прави различен, доста ще ми отнеме да разбера ЗАЩО повече хора не са различни като мен.

Хората ме мислят за антисоциален, защото прекарвам толкова време пред компютъра, и са може би прави. Но едно от предимствата на интернета е че вече не сме ограничени географски. За първи път се почувствах у дома в Hacker News. За първи път открих огромно количество хора, по умни от мен, които се интересуват от същите неща като мен. Тези които се интересуваха от различни неща, споделяха интересите си и заинтересуваха и други хора с познанието и опита и с ентусиазма си.

Любопитството е едно от най важните хакерски умения, ако не си любопитен, най доброто на което може да се надяваш в софтуерния бранш е да си тренирана маймунка, да седиш и да се пощиш по цял ден и да правиш номера по команда. Всъщност без любопитство и ентусиазъм човек е тренирана маймуна в КАКВАТО и да е човешка дейност, като се замисля. Циникът в мен казва че имаме нужда от маймуни, но хората са по интересни за разговори.

Hey look! talking monkey. HaHa

-Johny Bravo

събота, 7 ноември 2009 г.

Книги

На скоро си направих facebook акаунт, и ако питате мен, все още предпочитам twitter, но това е друг въпрос :D Забелязах две неща за секцията ми за любими книги. Първо, почти отсъства фикция, и второ, като изключим SICP, всички други книги съм ги прочел от корица до корица, което е необичайно за мен.

Хм. извода е че явно книги които не са ми любими, не ги завършвам, и разбира се SICP е изключението от това правило, по обясними причини, най вече поради факта че съм гледал лекциите поне 2-3 пъти. Да видим какво съм писал в тая секция:

Zen And The Art Of Motorcycle Maintenance(Дзен и изкуството да се поддържа мотоциклет), от Робърт Пърсиг. Това беше четивото ми за лятото, и честно казано това е най любимата ми книга. Дори си препрочетох 26-та глава, и смятам да я препрочета още няколко пъти. Книгата няма много общо с програмирането. Въпреки че в началото се казва и че няма много общо с мотоциклетите, или със дзен будизма. Книгата просто използва поддръжката на мотоциклет като пример за нещо което може да бъде извършено добре, или зле, т.е. с или без качество, което е и централната идея на книгата, изследване на това какво е качеството. Споменатата 26-та глава се занимава с идеята за gumption, дума която може да бъде преведена като находчивост или ентусиазъм за дадена работа. Според главата, имаме резервоар от гъмпшън с който вършим качествена работа, и има определени гъмпшън капани, които ни изсмукват гъмпшъна и ни пречат да вършим работата си добре. Книгата изгражда цяла нова метафизика, но мисля че това което получих от нея беше именно по добро разбиране на връзката между техническия и художествения свят(наричани в книгата класически и романтичен поглед към света), както и идеи за това как и защо да търся качеството в работата си. Определено си заслужаваше 15-те кинта които дадох, и времето което отделих за тази книга.

Следващата в списъка ми е "Изкуството на войната" От Сун Дзъ. Аз съм особено обсесивен човек. От време на време ме хваща някаква идея и искам да науча колкото се може повече за тази област, и тогава в един момент, ентусиазмът ми изчезва и се захващам с нещо друго. Преди няколко години, това беше военна история и разбира се военна авиация. Бях обсебен от авиацията, физиката, механиката и технологията, и съвсем естествено този интерес прерасна в цялостен интерес в историята на войната и военните технологии и разбира се стратегии и тактики. Любимите ми компютърни игри бяха lock on и starcraft, т.е. военен авио-симулатор и военна стратегия. Съвсем естествено беше за мен да потърся нещо по задълбочено върху теорията на войната. В тази книга е докосната повърхността на толкова много и разнообразни теми свързани с войната, икономика, политика, психология, физика, дори математика и абстрактна логика и разбира се философия. Изучаването в дълбочина на тези теми със сигурност е доста важно както в истинската война, така и в хобито ми: стратегически игри. Макар и да нямам много време да играя, редовно гледам старкрафт мачове и съм удивен от количеството познание от тази книга която може да бъде приложена върху компютърна игра, създадена векове след писането и.

Следва Структура и интерпретация на компютърни програми(SICP) От Хал Абълсън и Джерълд Съсмън(или сусман, както ви е по удобно) Вече споменах че не съм чел книгата. Чел съм отделни части от нея. Гледал съм всички лекции поне по 2 пъти. Чел съм доста от кода, написан освен на scheme, така и на други езици. Научил съм толкова много от тези лекции. Дори няма да говоря за книгата, защото едва ли някога ще успея да я прочета.

В началото бе командния ред(In the beginning was the command line) от Нийл Стивънсън. Есето е написано през 1999, и според автора, днешно време то е остаряло, заради появата на Mac OS X, но все пак все още е интересно четиво, а и когато го четох ме остави с интересни мисли в главата. Мисля че на няколко пъти съм се опитвал да напиша есе вдъхновено от някой от идеите обсъждани в него. Още от самото начало на интереса ми към линукс се интересувах и от причините поради които толкова малко хора го използваха. Това есе ми даде само частичен отговор, но все още не разбирах, за това и исках да напиша свое есе по темата, защото имаше нещо което още не разбирах. В крайна сметка мисля че днешно време знам отговора благодарение на първата книга в този списък, където изрично се търси отговор на този въпрос. Както и да е, намерих версия на есето с допълнителни бележки, които май са нещо като свеж поглед върху проблемите с които се занимава то, т.е. взима под внимание променения технологичен свят, въпреки че бележките са писани само 5 години след излизането на му :D Смятам да го прочета скоро.

Hackers and painters(Хакери и художници) От Поул Греам. Удивителна колекция от есета. Прочетох всички есета от paulgaham.com и по късно разбрах че всъщност доста от тях са били публикувани в книга, така че прочетох тази инцидентно :D Мога да говоря с часове за това колко съм научил от тези есета. На практика всичко което знам за писането на есета знам от стила с който е написана тази книга. Първите ми насоки в света на програмирането и разбирането на това което се опитвам да правя дойдоха именно от есетата на PG. Също така, аз очевидно съм от новото поколение Lisp програмисти вдъхновени от PG, които учат лисп само защото PG казва че е готин език. И за това се захванах със Scheme, а сега и с Clojure. Повечето есета съм чел повече от веднъж, а някой дори и съм превел на български(разбира се с много грешки :D).

The art of Unix programming (Изкуството на Unix програмирането) От Ерик Реймънд. Когато започнах да се занимавам с линукс, именно писанията на ESR ме насочиха към програмирането, а този труд в частност ми обясни историята и философията на Unix. Нищо повече. Това е просто задължително познание, без значение дали го научавате от точно тази книга, или просто знаете много за Unix от опит. Също така, това е една от малкото книги които имат думите "The art", както и думата "programming" В тях, без това да е маркетингов булшит.

Имам много книги които съм изпиратствал през годините. Повечето от тях няма дори да започна да чета. Няма да навляза подробно в повечето които зачета, а тези на които им посветя повече време, едва ли ще ги завърша напълно, а от тези които завърша е още по малко вероятно да ги прочета отново, или дори само да препрочета по интересните части. Горе са някой примери за книги които наистина са ми харесали.

Повечето от книгите които захващам са технически книги от типа на "Научете Х". Въпреки че са лесни за четене, никога не съм завършвал "For dummies" книга, и само някой от книгите на O'Reilly съм успявал да прочета почти до край. Тези книги са полезни, но доста малко от тях успяват да променят начина ми на мислене достатъчно че да ми харесат повече от обикновени онлайн туториъли. Именно "For dummies" книгите страдат от недостатъка че не ме карат да мисля достатъчно, за това и вече ги избягвам, дори и ако само искам да ги ползвам за бързи туториъли, не са добри дори и за това.

В момента чета Coders at work, на Питър Сайбъл, надявам се книгата да може да влезе в този списък, и въпреки че съм прочел само 3 от интервютата, вече имам чувството че ще я прочета цялата и дори ще си препрочитам някой части. Трудно се намират такива книги.

петък, 6 ноември 2009 г.

Малииии, то станало ноември ве

Хм, май се олях. Нямам какво да правя точно в този момент и за това на бързо ще начаткам този блог пост. Студентския живот е ок, предполагам, като изключим факта че трябва да уча С++. Математиката е поносима и дори линейната алгебра ми харесва повече от колкото очаквах. Не мога да кажа същото за анализа.

Заради факта че ми се налага да уча С++ и 2 вида математика, може да си представите колко не ми се програмира вечер в къщи. На няколко пъти успях да седна пред компа през уйкендите и да попиша малко "истински" код, но ако още веднъж трябва да реша някоя смотана задача където да трябра да "нарежа" дадено число на цифри използвайки %, ще откача и ще започна да избивам хора около мен.

В момента съм отново в нещо като дупка относно на къде си насоча вниманието, и отново имам много идеи. Едната е да се концентрирам повече върху web разработване с Clojure, но след като написах 1 приложение мисля че ще чакам документацията на clojure фреймуърките да се подобри. Gui програмите са опция, но ако ползвам Clojure, трябва да ползвам някоя от Java библиотеките, което е ъъъгххх, пфф. Другия вариант е да се върна при Python, което е добра идея, освен с GUI, от известно време ми идват и идеи за 2D игрички, което означава че може НАЙ накрая да науча Pygame, или пък направо да се захвана с java bindings-ите за SDL, които намерих в нета и да се опитам някакси да ги ползвам с Clojure, въпреки че въобще не харесвам да ползвам java библиотеки за такива неща. Другия вариант който доста рано заебах беше идеята ми да понауча нещо за системното програмиране и Unix+C. Като цяло идеята е интересна, понеже така или иначе уча С/С++ в университета, може да се занимавам в къщи, но бързо осъзнах че всъщност мразя С. Хм, май не го осъзнах бързо, защото се опитвах да науча чудото в продължение на доста дълго време и още не знам как е възможно някой да програмира ИСТИНСКИ програми на това нещо. Просто съм прекалено тъп за чистото С явно.

Уау, най накрая блог пост. Предполагам че това е нещо като постижение :D

понеделник, 12 октомври 2009 г.

Програмиране за ламери

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

Какво точно означава това? Ами най вече че повечето от кода ми ще е написан на С (НЕЕЕЕЕЕЕЕЕЕЕЕ), и доста от него ще решава тривиални проблеми като за тъпи първокурсници(като мен :D). Възможно е и да пиша малко за математиката която учим, или която може да понауча самостоятелно, но математиката не ми е силна страна, за това ще се въздържа от нея.

С цел прилично поведение(да, четете това правилно) ще се въздържам от оплаквания, както правех когато бях в даскало, това ще го правя в twitter :D (погледни sidebar-а).

Разбира се ако се занимавам с някоя нова и интересна технология, която не я учим, ще блогвам и за това. Не смятам да превръщам блога си в място за постване на домашни на С. Също така С няма да измести напълно Python и Clojure от този блог, просто ще си намери нисша.

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

сряда, 23 септември 2009 г.

Върнах се(май?)

Блогът ми не го убих официално, но съдейки от статистиката в google analytics, на никого не му пука. Реших да го съживя малко и да се опитам поне този път са набера някаква аудитория.

Започваме с новините:
Станах студент по информатика в шуменския университет. Поносимо е.

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

Написах първото си Clojure macro, доста е грозно. Скоро ще почна да поствам и код :D

Този пост НЯМА да има нищо важно/интересно в него, така че го поствам само за да отчета активност.

вторник, 7 юли 2009 г.

Clojure

Обичам лисп. Още веднага след като изгледах първите лекции от SICP серията, осъзнах че обичам функционалното програмиране, и обичам lisp езиците, и в частност scheme. Елегантноста на минималистичния синтаксис, мощните абстракции, простотата с която могат да се изразяват сложни идеи, това всичкото в един невероятно малък език. Scheme може да се научи буквално за часове, Scheme е единствения език който заслужава книга "Learn Scheme in N days", всички други подобни заглавия вероятно ви булшитват, тъй като е невъзможно да научиш php да речем за N часове. Всъщност наистина ИМА книга ма scheme наречена Teach Yourself Scheme in Fixnum Days, като до колкото разбрах fixnum е малко цяло число(или нещо от сорта). Книгата е САМО 100 страници, това са 50 листа!

След като обичам лисп и обичам функционалното програмиране, нормално е да се опитам да пиша програми на scheme, така и направих, поне за кратко. Така и не успях да напиша нищо особено дълго или впечатляващо. Но scheme си изигра ролята, заедно със гореспоменатите лекции, овладях основите на функционалното програмиране, разбрах как работят абстракциите, научих се как да създавам рекурсивни алгоритми, разбрах да разграничавам абстрактния модел по който работи дадена програма от реалния начин на работа(за да мога да разбирам по големи и сложни програми) и се научих да гледам на кода от високо, да мисля по абстрактно. Не е зле за език който научих за 1 седмица. След всичко това, така и не получих това което исках, малък език на който да програмирам бързо и лесно. Scheme е удобен език за обучение, но ако искаш да го ползваш "In real life"TM трябва да си наистина посветен на идеята. Няма да влизам в детайли относно това какво точно ме отказа от scheme, но като цяло леснотата с която писах код на Python(първия ми език), така и не беше достигната от scheme, което беше разочароващо.

От известно време се интересувах от clojure, диалект на lisp създаден специално за jvm-а предназначен за паралелно програмиране. Езикът има повечето предимства на традиционните лисп диалекти, но скъсва връзките с някой исторически остатъци, които са в ядрото на "старите лисп-ове", или поне така казват всички в нета :D Езикът набира популярност, но въпреки че отдавна го следя, едва на скоро имах време да го науча. Scheme опитът ми беше полезен, тъй като аз напрактика вече знаех по голямата част от езика, не ми отне повече от седмица да овладея основите.

Няма да обяснявам в подробности какво точно прави следния код, просто го поствам за да видите как изглежда Clojure по принцип:
(defn sort-banknotes [sum]
(loop [sum sum banknotes [50 20 10 5 2 1] sorted []]
(if (or (= sum 0)
(= (count banknotes) 0))
sorted
(recur
(mod sum (first banknotes))
(rest banknotes)
(conj sorted (int (/ sum (first banknotes))))))))

(println (sort-banknotes 394))


Кодът е прост, ето какво прави на бързо: разполагайки с банкноти от по 50,20,10,5,2 и 1 лв., за произволна сума трябва да се определи по колко банкноти от всеки номинал са необходими, като се предпочитат по едрите банкноти. Ето еквивалентната програма в c++ за сравнение:



#include<iostream>
using namespace std;

int bn[6]={50,20,10,5,2,1};
int sbn[6];
int sum;
int i;
int main(){
cout<<"summa za izchislenie=";
cin>>sum;
for(i=0;i<6;i++){
sbn[i]=sum/bn[i];
sum=sum%bn[i];
cout<<bn[i]<<"=>"<<sbn[i]<<endl;
}
}

В следващия ми пост ще говоря за Compojure, лека web framework за clojure, очаква се да е по интересно, ще има повече код поне :D

четвъртък, 4 юни 2009 г.

Малко промени

Ако някой от вас е виждал стария блог, това е същия! Смених URL-а, както и скина и описанието. Това е по дескриптивно.

Това означава ли че се завръщам към редовното блогване? Не съм сигурен, със сигурност ще блогвам по често от преди, но дали ще е редовно както правих преди 1 година(1 пост на 2 дена почти), не знам, Със сигурност се надявам, но това не е съвсем същото нещо, нали?

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

четвъртък, 23 април 2009 г.

Kubuntu, KDE и Windows 7

I. Въведение

Ако вярваме на слуховете, финалната версия на Windows 7 се очаква в началото на следващата година. Самия аз имах възможност да тествам бета версията която се появи в нета и съм готов да споделя някой от впечатленията си. Също така съм и луд Линукс фен, и от няколко дни тествам новото кубунту 9.04. Днес излиза неговата финална версия, по този повод ще споделя впечатленията си от RC варианта, който ползвам от няколко дни. Мисля че ще се получи интересно сравнение.

Малко ще се отклоня, за да вкарав в час хората които може би са ентусиазирани относно Windows 7, но не са чували за Kubuntu. Kubuntu е Линукс базирана операционна система. Както и брат и Ubuntu, тя е свободна и безплатна за сваляне от интернет, но за разлика от Ubuntu, използва графичната среда KDE 4. KDE освен че е красива, е и доста функционална и по голямата част от ревюто ми на кубунту ще се концентрира именно над графичния интерфейс и сравнението на интерфейса на Windows и KDE. В този пост ще се стремя към обективност, но за съжаление съм предубеден, така че не ми се сърдете когато съм ирационален в софтуерните ми предпочитания.

Нека разгледаме по един скрииншот и от двата десктопа. Да видим първо Windows:

desktop


Имате право да се посмеете на ироничния ми избор за тапет(Debian е друга популярна линукс дистрибуция). Както вече вероятно знаете, Windows 7 има нов таскбар. Други новости са премахването на сайдбара и някой нови трикчета с прозорците, за които ще говоря по късно. Другите неща са общо взето същите както и в Windows Vista(или поне на пръв поглед). Не претендирам това да е пълен списък с промените и нововъведенията, по скоро това са по интересните визуални промени.

Следва скрииншот от кубунту:

plasma



Да използвам същия фон и под кубунту е още по иронично :D.
Ако не сте виждали линукс до сега, не би трябвало да ви изглежда прекалено объркващо. Долу имаме таскбар с някой познати елементи, това което може би е ново за вас е самият десктоп. Новата версия на KDE има нова концепция за това какво е десктопът. Ще вляза в подробности за него по късно.

II. GUI сравнение:

1. Главното меню.


В Windows старт менюто е мястото от където започва всяка операция(включително и спирането на компютъра, което трябва да започне все от някъде). В Windows 7 то си е все същото, с две колонки, меню на всички инсталирани програми, и с лента за търсене, наследена от Vista:

menu

В Кубунту, главното меню се нарича K меню и представлява малка синя иконка с буквата K. От горе то има лента за търсене, а от долу има табчета с категории(любими програми, меню с всички програми, места на компютъра, скорошни файлове и менюто за изход от системата):

menu

Това което беше премахнато от Windows 7 е опцията да се използва класическото меню, това което ни е познато от времето на Windows 95. За щастие в Kubuntu все още е възможно да се използва класическото K меню от предишни версии:

menu-clasic

2. Таскбар.

Друг елемент познат ни от Windows 95 е уйндолс таскбарът. В новата седмица той е променен значително. При него, всяка иконка представлява дадено приложение, всяко приложение може да има множество отделни прозорци асоциирани с него. Т.е. на този скрииншот Firefox има 3 отворени прозореца, но само 1 отворена иконка в таскбара, вместо 3 ленти, както е в по старите версии на уйндолс. Това е така, защото когато има прекалено много отворени прозорци, управлението им е трудно, с този трик обаче е малко по лесно:


stack

Можете да преминавате през прозорците без особен проблем, използвайки така наречените jump list-ове. Разбира се, както се очаква има и бърз преглед на приложението, така че ако нещо е минимизирано, може да видите прозорецът му:

prewiew

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

Да видим как се конкурира Kubuntu. При него нещата са сходни с предишните версии на уйндолс. Тук, до "K" менюто има иконки на различни програми, това е познатия бърз достъп, т.е. това са просто шорткътове към приложения, едва ли има какво повече да добавя:


quckstart


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


video

preview

Това добре, но какво става с този проблем за който говорихме? Онзи за многото отворени прозорци? Как KDE решава този проблем, като използва само стария таскбар? Ако сте стари линукс потребители, знаете че в повечето линукс графични среди може да ползвате повече от 1 десктоп. Уйндолс потребителите може да се объркат тук. Виждате ли тези 4 квадратчета:



pager

Това са 4 отделни десктопа. Уйндолс има само 1, за това новия таскбар му е нужен за да управлява по ефективно прозорците си. Не че не бих искал да видя нещо подобно и в KDE, но за сега нямам проблеми с много отворени приложения, защото имам много десктопи. Мога да групирам различните програми на различни десктопи например, както виждате от скрииншота, на 4-тия имам отворен firefox, а на 3-тия виждате иконката на аудио плеърът Amarok. 1-ви и 2-ри десктопи нямат нищо, а в момента скринът е на 1-ви десктоп. Това го има в линукс от години, и е едно от най удобните неща в цялата система, самият аз намирам за непоносимо използването на XP например, именно защото когато отворя много прозорци става доста гадно и объркано.

3. Управление на прозорци и 3D ефекти


Когато излезе windows Vista, много хора се впечатлиха от добавените 3D ефекти, това което те не знаеха обаче е че години преди това, подобни ефекти вече бяха достъпни за потребителите на MacOSX и Линукс. Хубавото в случая е че освен красота, някой от ефектите имат и практическа стойност, вече видяхме например превюто на минимизирани прозорци. Нека разгледаме и други удобства.


В Windows 7 има една нова функция, наречена Aero Snap. Тя представлява възможността, ако завлечете даден прозорец към горния край на екрана, той автоматично да се максимизира. Също така ако завлечете даден прозорец в единия край на екрана, той заема точно половината екран, така можете лесно да подредите 2 прозореца един до друг и да работите и с двата. Това е доста удобно и полезно:


half

half1

double


Превключването на прозорци е едно нещо което вероятно ползвате често. Познатият Alt+Tab изкарва тази красива прозрачна лента с която може да превключвате между прозорците:


task switch


А триизмерния flip беше едно от по визуалните екстри на уйндолс виста. Чрез win+tab, може да смаете всеки абориген пред компютърът ви:


flip view

Да видим как стоят нещата под линукс. Вече споменах че подобни 3D ефекти бяха достъпни за линукс и уникс света доста преди появата им във Vista. В KDE4 те са част от самата система, докато преди бяха допълнителна програма, която трябваше да се инсталира и настройва, сега са лесно достъпни функции. Необходимо е само да имате 3D драйвър на видео картата(за щастие моята невъзможно смотана карта работи прекрасно с линукс).

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



Въпреки това, за да запазим баланса, ще ви покажа 2 скрииншота на различни ефекти. Първия е на еквивалента на flip:

swich1

Другият скрииншот е на възможността също така да отворите всички прозорци и да превключвате между тях със стрелките. Аз съм настроил това на ctr+space за прозорците на текущия десктоп, и win+space за прозорците на всички плотове. Доста удобно:


swich


4. Джаджи и плазмоиди

Windows Vista дойде с възможността малки програмки, наречени джаджи(gadgets) да предоставят информация и допълнителна функционалност в странично поле, наречено sidebar. Много хора мразиха сайдбарът, включително и аз. В новата 7 версия, сайдбарът го няма, но джаджите остават, сега могат да бъдат поставяни на всякъде на десктопа, което е малко по удобно. Тъй като не ползвам джаджи под уйндолс, пуснах няколко само за един демонстрационен шот:

gadgets


Тази проста идея, в кубунту е доведена до революционни висоти. Джаджите в KDE се наричат плазмоиди(plasmoids) и са доста по гъвкъва концепция от колкото уйндолс еквивалентът им. От първия скрииншот може да сте забелязали че десктопът не изглежда като обикновенно поле съдържащо шорткътове и иконки от дадена папка. Вместо това десктопът представлява поле на което могат да се поставят плазмоиди. Всичко, включително иконки на шорткътове са плазмоиди. Плазмоиди са и елементите на таскбара, K менюто е плазмоид, както и quick start полето, както и часовника и десктопите... На теория мога да ги разкача от панела и да ги сложа на десктопа и да нямам панел, или да отворя още панели и да сложа различни плазмоиди на тях.

В моя случай, аз нямам иконки, както повечето хора правят с десктопите си(въпреки че това е възможно). Класическия десктоп може лесно да се симулира с плазмоидът folder view, който показва съдържанието на дадена папка. На своя десктоп аз имам 3 подобни плазмоида, сочещи към различни папки, по този начин имам бърз достъп до всяка от тях:

folder view

Този плазмоид може да бъде закачен и за долния панел, всъщност аз вече имам един такъв. Може би сте видели синята папка с жълта звезда на скрииншотовете, това всъщност е плазмоид folder view, както тези на десктопа само че свит, защото е на панел(плазмоидите могат да имат разчлично поведение в зависимост от размерът им). Ето какво става като го натиснем:

folder view1

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

plasmoids


По-големия брой дестоп ефекти, също така и по големия брой плазмоиди(както и по голямата им гъвкъвост), правят KDE победител в състезанието по GUI иновативност, или поне за мен, но като удобство и двата десктопа са използваеми, и са доста по добре от стария XP(който има други преимущества, но няма да говоря за това сега). Да преминем на татък.

III. Приложения.

Това което остана да сравним са приложенията. Това което може би не знаете е че KDE всъщност не е просто графична среда за линукс операционните системи, а е и платформа за приложения, и идва с цял набор от полезни програми. Нека сравним няколко от по основните.

1. Файлов мениджър.

Традиционния файлов мениджър под уйндолс е explorer.exe. Той ви е познат, самият аз не го харесвам много, но е използваем. Ето как изглежда той:

explorer

Традиционния KDE файлов мениджър се нарича konqueror, който е и уеб браузър(2 в 1). В новата версия KDE4 има нов файлов мениджър наречен Dolphin, а konqueror се използва предимно като уеб браузър. Самият аз харесвам konqueror повече и го използвам постоянно, но можете да изберете кой от двата харесвате повече и да го настроите от системните настройки на kubuntu. Ето и двата в един скрииншот:

filebrowsers

2. Медия плейър.

Ако сте под уйндолс, най вероятно ползвате тази змия winamp, който със сигурност е по добър от онази другата змия Windows Media Player, но все пак и двете бледнеят пред amarok. За съжаление в новото кубунту е и новият Amarok 2, който по мое мнение още не е пълноценен от към екстри и функционалност, но пък е използваем. Ето сравнение между него и windows плейърът:

media

Ето го самият амарок:

amarok


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

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

IV. KDE под уйндолс

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

kde


Сега мога да ползвам Dolphin под уйндолс, вместо експлорер-а:


dolphin

Или okular вместо Adobe reader, за да чета pdf-четата ми(имам над 3000):

okular

Или цял куп други KDE програми:

kdeaps


sweet!

V. За финал

Днес излиза новото Kubuntu 9.04, ако сте уйндолс 7 ентусиасти, и успях да ви заинтригувам относно света на линукс със няколко евтини скрииншота, можете да го свалите безплатно от kubuntu.org. Повече помощ относно Linux можете да получите на адрес google.com. Повече информация за Windows 7 можете да получите на сайта им(какъвто и да е той, виж предишния линк).

За тези интересуващи се зад самата KDE4, ето този клип от излизането на KDE4 преди малко повече от година може да обясни нещата доста добре:



Със сигурност има по важни неща за сравнение между двете операционни системи освен графичния интерфейс, но смятам че всички подобни(да, и моето) сравнения са обикновенно предназначени да оплюят леко уйндолс(леко е неточна дума, здраво е по точната), и за това се въздържах от друг коментар освен по интерфейса и обидните(леко) думи по адрес на windows explorer и windows media player, похвалните ми дури за новия таскбар и Aero Snap обаче балансират нещата, за смея да претендирам за относителна обективност.

четвъртък, 19 февруари 2009 г.

скрипт за синхронизация на статуса ви от twitter към скайп

Днес написах един прост скрипт за синхронизация на статуса ви от twitter.com към скайп. Когато го стартирате ще ви поиска име и парола от туитър, ще изтегли последния ви ъпдейт и ще го вкара в mood полето ви на скайп. Скайп разбира се ще ви попита дали вярвате на този скрипт и вие се съгласявате.

Той има следните зависимости:

Skype4Py: https://developer.skype.com/wiki/Skype4Py

python-twitter: http://code.google.com/p/python-twitter/

Инсталацията и на двете е лесна под линукс. И двете ги има в pypi

така че лесно би трябвало да можете да ги инсталирате със командите:


python easy_install Skype4Py
python easy_install python-twitter


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

А ето го и самия скрипт:



#!/usr/bin/env python
#-*-Encoding: utf-8-*-

#importing the needed api's
import Skype4Py,twitter

def get():
"""
getting the username and password from the user

"""
user=raw_input("twitter username:")
passw=raw_input("twitter password:")
return (user,passw)

user,passw=get()


#instantiating skype and conecting to the client
skype=Skype4Py.Skype()
skype.Attach()

#conecting and autenticating to twitter.com
twitterAPI=twitter.Api(user,passw)
twitter_user=twitterAPI.GetUser(user)

#composing the status mesage
status=u' Status from http://twitter.com/: "'
status+=twitter_user.status.text+'"'

#inserting the mesage in skype's mood field
skype.CurrentUserProfile.MoodText=status

print "Done!"




можете просто да го копирате във файл на име tw2s.py или нещо подобно, да му дадете права за изпълнение:

chmod +x tw2s.py

и да го стартирате:

./tw2s.py

Това е.

четвъртък, 12 февруари 2009 г.

Защо Javascript е истински език?

За да поясня един спор между мен и един млад и заинатен С++ програмист реших да понапиша няколко реда. Ще се опитам да се въздържа от обидни думи към майката на Бярне Строуструп, защото е излишно. Целта на този пост е образователна.

Да се върнем към фундаментът. Какво е компютърът? Изчислителна машина! Ок. Ето как бих обяснил компютърното програмиране на човек който няма почти никакъв досег с компютър(т.е. няма предразсъдъци относно какъв е процесът):

"Компютърът е машина, която е неспособна да прави каквото и да било. Работата на програмистът е да я научи как да се "преструктурира" във специализирана машина, която да извършва точно определена задача".

И ето поясненията: Компютърът наистина е безполезен без софтуерът. А какво е наистина софтуерът? Това е описание на някаква машина.

def fib(n):
if n==0:
return 1
else:
return n*fib(n-1)

Това е описание на машина, която да изчисли n-тото число на фибоначи. Въпреки че това е python, ако напишете тази програма на който и да е език, резултатът е един и същ, компютърът се преконфигурира за да изпълни това изчисление. Това е фундаментът. Всичко останало са слоеве абстракция, и други неща предназначени да превърнат компютрите от теоретични играчки в машини за решаване на истински проблеми.

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

Това е така, на теория не ти трябва нищо друго освен туринг машина. На практика обаче, подробностите са решаващи. Спорът ми не стигна до фундаментът на компютърното програмиране, но усетих че основната идея не е особено ясно дефинирана в главата на опонентът ми, за това беше добра идея да я обясня, защото аргументите ми се градят върху тази идея.

Когато погледнем на нещата от този ъгъл, осъзнаваме че подробностите имат отношение само към конкретния проблем който решаваме. И да отречеш даден подход напълно, или да проявиш липса на разбиране и арогантност към определен дял от изкуството е равносилно на неразбиране на фундаментът. Или по конкретно, ако смяташ че уеб програмирането не е истинско програмиране, защото не можеш да продуцираш .exe файл, проявяваш невежество. Не е важно дали създаваш .exe или .sh или .py и дали кодът ти се компилира или интерпретира за да определиш дадено програмиране като истинско, а друго като нещо тотално различно. Това са подробностите които зависят само от конкретния проблем. Ако пишеш десктоп програми за уйндолс, ползвай C++ или C# и продуцирай .exe-та, ако искаш да организираш цялата информация на планетата създай мега-сървър, използвайки JVM като платформата ти, ако искаш да напишеш инсталатор за библиотеката ти, използвай bash... Не можеш да кажеш че само .exe файловете са истински софтуер, това е глупаво и най важното: НЕ Е ВАЖНО. Или поне не е най- важното. Отново повтарям: Това е просто детайл свързан със специфичния проблем който се решава.

Каква е разликата между scheme интерпретатор написан на С и Scheme интерпретатор написан на Scheme? Едното е по бързо от другото, да, но това е само подробност. Ако погледнем на нещата от по високо, разбираме че единствената разлика са детайлите, всъщност това че едното е .exe а другото е .scm няма никакво значение, и двете се подчиняват на което и да е определение за софтуер. Всъщност дори и интерпретаторът да беше написан на Javascript и да работеше в браузарът, пак нямаше да има значение, защото кодът просто описва машина, която върши действие, няма нищо магическо в .exe файловете, те са просто друг формат. Няма нищо срамно в това интерфейсът ти да е написан на HTML, вместо на QT, резултатът е същия, просто едното е в табче във firefox, а другото е в собствен прозорец. Въпросът е да си свършиш работата!

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

неделя, 1 февруари 2009 г.

Какво следва от тук на татък...

Днес(01.02, т.е. вчера, това ще се постне след полунощ) навърших 19. От утре(13 минути от момента на писане) започва нова година от моя живот. Това ще е една от най трудните ми години. Вече се примирих с факта че съм тотално преебан за следващите няколко месеца и осъзнах че реалистично нямам време да се занимавам с програмиране и блогване и с други готини неща в същото време в което се занимавам с учене.
Дълго време се борих за да не ми се налага да променям радикално начинът си на живот.

Обичам да ставам сутрин, да си чета комикси и да си сърфирам за няколко часа в нета, след това да отида на даскало и вечерта като се прибера да почета блогосферата и да попиша малко код, и може би да отделя малко време за учене по математика(предметът който трябва да овладея до съвършенство в близките 2-3 месеца).

Осъзнавайки че нямам достатъчно време, разбрах че няма да я бъде мойта. Използвайки прекрасната(не толкова) програма google calendar, си направих режим за деня, който ми дава по 3 часа време за учене на ден, и почти всичко останало е време в което се занимавам с хобитата ми.

Това не е достатъчно. За съжаление обаче аз съм мързел. Дълго време мислих как да се справя с проблема, дори и писах софтуер за да ми помогне да се мотивирам да уча. Истината е че задачата ми е прекалено трудна за да се справя без да я възприема дълбоко в душата си.

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

Постигнах много през изминалата седмица. Спрях да се оплаквам от това какво имам да правя, вярно е че не е честно от моята гледна точка, но на никой не му пука. Аз съм тоя който трябва да седне и да учи. Всички други учат, това че съм бил мързелив през последните 4-5 години и не съм учил по нищо, и съм си начаткал кофти оценки си е мой проблем. Първата стъпка е направена.

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

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

Това е началото. Да разбера проблема и методите за решаването му, както и да преодолея стратът от сложността му са първите стъпки. От тук на татък следва само труд. Надявам се да успея, със сигурност имам шансове, със сигурност ще е трудно, но вече няма страх от това. Сега остава само да разбера как ще живея без свободно време :D

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

понеделник, 26 януари 2009 г.

Как да превърнем уйндолс 7 в хакерска ОС

Това е полу-сатирично ревю на Windows 7, не е истинско ревю, просто се забавлявам, не се обиждайте ако сте от майкрософт дроните, това е просто майтап :D

На скоро се регнах за BETA програмата на Майкрософт за уйндолс 7. Изтеглих си iso-то, получих си ключа и си инсталирах напълно легално копие на уйндолс 7 beta. Това означава че след 30 пак ще си бачка ок. Няма да влизам в подробно ревю на системата, има достатъчно такива(повечето са скапани).

Никога не съм бил уйндолс фен. Аз съм фанатичен линукс потребител от повече от година и половина и съм много доволен от факта че чичо Бил и чичо Балмър не ме закачат(гадни копелета). И все пак имам един уйндолс ХП който ползвам за игри и други такива безполезни неща. След като прочетох предимно позитивните ревюта относно 7-цата, реших да я тествам до край и да видя дали мога да я превърна в хакерска ОС. Идеята е да и дам мощ, да я направя истински звяр и половина+ две трети! Ще я накарам да пуши през аерото си. Ето какво трябва за да направим уйндолс 7 по малко противна за хакерите.

Стъпка първа. Изключваме аеро. Сериозно, това говно ме дразни, не че под линукс нямам прозрачен таскбар, но 3д ефектите ми ги няма, просто защото ме дразнят, и бавят машината. Уйндолс класик е подходящия формат за десктопа, за това го настройваме така:

step1

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

step2

Всичко това е доста готино, но какво е най важното умение за един хакер? Да може да програмира естествено, за това без да се бавим инсталираме два доста готини хакерски езици Python и Ruby:

step3

Тези езици може да намерите съответно в гугъл и ъъм в гугъл, приятно гугълване.

Разбира се трябва и да се научите да програмирате за тях, но нека продължим на татък. Истинския хакер има нужда от мощтни инструменти. Уйндолс 7 идва със един такъв мощен инструмент. Нарича се уйндолс пауър шел. Егати пауъра братче! Якото за него е че някой от командите бачкат и за линукс, кофтито е че е уйндолс програма :D Друг готин инструмент е уникс мега редакторът Vim. Той не идва с уйндолс 7 защото е прекалено мощен за вас лузъри, но все пак можете да си го изтеглите от vim.org или друг подобен сайт:


step4

И в крайна сметка, ако искате да имате хакерска машина ви трябва една програмка, тя се казва Kubuntu. Ето скрииншот:

screen

Както споменах, фонът е същия като 7-цата, но останалото е чиста мощ! Уйндолс има още много път да извърви, за да стане истинска хакерска ОС, но този полу-сатиричен блог пост, най вероятно ще бъде последван от по сериозен такъв, изследващ проблемите с хакерството под уйндолс, липсата на инструменти, и като цяло якостта на линукс. Стей туунд нуубс!

сряда, 21 януари 2009 г.

Черно-белите есета

За щастие в даскало пишем есета доста рядко. Когато пишем есета(обикновено в часовете по английски език) първата ми реакция като видя заглавието на темата е:

-пфффффффф!!!!!!!!!

Ето няколко теми които по които сме писали есета тази година:

For or against death penaulty(за или против смъртното наказание)

Some people enjoy eating meat, while others concider it murder(Някой хора се наслаждават на яденето на месо, докато други го считат за убийство)

Studyind abroad-for or against(учене в чужбина- за или против)

Какво е първото нещо което виждате за тези 3 заглавия? Това е проста буленова логика, ключова е думата "или". Първо, тези теми рядко са толкова ясно дефинирани, че да можем просто да си изберем едната от двете страни и да я защитаваме, в много от случаите страните са повече от двете страни на "или"-то, а понякога дори и няма страни. Второ, това не е начинът по който се пишат есета, да това е начинът по който се пишат есета в даскало, в часовете по английски, но кога за последно сте чели добро есе написано в час по английски? Дори и в час по литература, ученическите есета са скапани.

Причините са много, като изключим талантът и уменията на учениците, можем да дефинираме няколко проблема със ученическите есета:

-Те не се пишат за аудитория, а за учителя, т.е. Целта е не да се постигне добър текст, а да се постигне добра оценка.

-Темите, доста често са доста лоши, зле дефинирани, банални или скучни, понякога са и комбинация от изброените.

-Освен ако не са домашни, процесът на писане и разсъждение се извършва за 40-80 минути във гадна стая, със още 20+ човека, във непродуктивна и стерилна обстановка(това е по противоречива тема, ще говоря повече за нея по късно в друг пост).

В този блог аз пиша за малката си аудитория от няколко стотин човека на месец(макар да нямам все още крайна статистика за първия месец на този блог, вече е минал 100 посещения). Проблемът с есетата в даскало са че трябва да се подчинявам на тяхната дефиниция на есе. Есето е опит, текст, който пишеш, за да разбереш нещо, за да подредиш мислите си и да изследваш дадена тема, да пишеш докато разсъждаваш, и може би да намериш отговор на някакъв въпрос. Тяхната дефиниция на есе е текст, в който защитаваш някаква позиция. Може би нямам позиция, може би търся отговор на въпроса "Каква е моята позиция?", може би позицията ми е че въпросът е сбъркан, и че трябва да погледнем на проблема от съвсем различен ъгъл. Не е възможно да пиша подобни експериментални текстове в училищни есета.

Да погледнем например темата относно смъртното наказание. Ето проблемите с нея:

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

-Въпросът е зададен грешно. Смъртното наказание, за какво престъпление? Някога хората са били убивани, за това че 4 годишни деца са ги видели да летят в небето на обърнати крави(много вещици в Швеция са били екзекутирани по абсурдни показания на деца). Също така идеята на заглавието е че ще заемете някаква позиция и ще я защитавате. Може би не искам да защитавам нито една от двете позиции, може би не знам отговора и ще го търся в разсъжденията си на листа.

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

Темата с месото! Това ми е любимото. Аз написах просто пародия на есе, в което описвах как се държат със свинете в свинефермите и как ги убиват, като преди да им прережат артериите ги зашеметяват с ток, закачат ги за краката и ги оставят да умрат от кръвозагуба. Ето как е темата:

Some people enjoy eating meat, while others concider it murder(Някой хора се наслаждават на яденето на месо, докато други го считат за убийство)

Това няма смисъл. Някой хора считат яденето на месо за убийство? Мамка му, днес убих 3 пържоли докато вечерях, добре че вече бяха мъртви и не усетиха как ги дъвча :D Ако игнорираме явното противоречие, имаме отново бинарен въпрос касаещ комплексна тема.

Последната тема за ученето в чужбина. Това отново е бинарен въпрос, отново е зле дефиниран, защото Зимбабве също се брои за чужбина, така че в този случай отговорът е НЕ! Обаче в България чужбина значи на запад, така че може би е ДА! Но Мароко също е на запад, а значи се има в предвид северна Америка и западна Европа! Хм, Да, и Япония и югоизточна Азия, както и Австралия. Това е цивилизования свят. Така ученето в цивилизования свят- да или не? Ъъ, дам, много обичам да пиша тъпи есета и да уча във разпадаща се държава с разпадащо се образование и да трябва да търпя глупостите на цялата система. Предпочитам Мароко, въпреки че едва ли е много по добре и там.

сряда, 14 януари 2009 г.

Умствени упражнения

За да влея малко разнообразие в днешния пре-емоционален ден, нека говоря с вас за умът. Аз съм много тъп. Не мога да свиря музика, тази която слушам едва я разбирам(прекалено много ноти), не мога да пиша особено добре(и правопис, и стил, въпреки че работя по въпроса), не струвам на шах, още по зле съм на 66, не струвам на старкрафт, или която и да е друга компютърна игра(освен minesweeper), не мога да решавам задачи по математика(въпреки че имам най добрите оценки от класа ми), и със сигурност мога да твърдя че не струвам като програмист(все още ;D).

Изводът? Аз съм мнооо тъп. За сметка на това съм по умен от средния човек, което трябва да ви каже нещо за средния човек, той не е способен на нищо повече от посредственост. Но мен не ме интересуват по тъпите от мен, след като са по тъпи от мен, най вероятно СА СУПЕР ТЪПИ, ШОТО АЗ СЪМ СУПЕР ТЪП.

Интересуват ме по умните от мен. Чудя се как са станали толкова добри и умели в това което правят? Безспорно имат талант в тази област, но аз също имам талант, и за това се занимавам с програмиране, а не с музика. Явно талантът не е достатъчен, иска се гъзец! Въпреки че съм много тъп, ето какво правя:

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

Играя шах, въпреки че съм доста зле.

Рисувам, въпреки че всичко което правя е супер грозно.

Програмирам, въпреки че си нямам и понятие от програмиране(за жалост, има прекалено много програмисти, които са по тъпи от мен, което не означава че аз съм много умен, а че просто има много по тъпи от мен).

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

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

Така с времето ставаш доста добър и може би някой ден ставаш майстор в своята област. А може би достигаш до експертно(по ниско от майсторство, повечето хора не минават това ниво никога) ниво в някоя област и се пренасяш в друга, коренно различна област, и осъзнаваш че голяма част от опитът ти е безполезен в случая. Но също така забелязваш че част от опитът ти е универсален за определен тип дейности, т.е. ако вече имаш опит в дадена област, вероятно имаш скрито предимство ако искаш да се занимаваш с друго. Усилията ти не са били на празни. Това не е универсална истина, но се случва доста често. Както може би сте чували, трактатите на Сун-Дзъ за войната са прилагани успешно в бизнеса, а познанията по програмиране на lisp, могат да ти помогнат ако програмираш на С(програмирането на lisp и C, са изкуства, които освен че са доста различни, обикновено изискват коренно различен начин на мислене относно проблемите, които решавате, също така обикновено проблемите са различни).

Ако сте тъпи като мен, ето ви на кратко посланието на есето: "Ако искате да сте нещо повече в живота от тъпунгер, като мен, тренирайте здраво това което обичате да правите, и може би някой ден ще ви бъде полезно!"

А, да и единствения политически коментар, който ще направя за станалото през изминалия ден е:

A.C.A.B.

събота, 10 януари 2009 г.

Историята ми, и защо се занимавам с програмиране само от 1 година

Обичам програмирането! Толкова много го обичам че се чудя защо се захванах сериозно с него чак на 17/18 вместо още от съвсем малък. Всъщност не се чудя, знам точно защо. Ще изброявам под ред:

Получих първия си компютър прекалено късно.
Първия ми компютър получих на 14, това е почти 5 години след като започнах да ходя на уроци, и почти 6-7 години след като започнах да се интересувам от компютри. Да благодаря на българските правителства от втората световна война на сам, за това че родът ми не е заможен :D

Лошо обучение.
Първия ми досег с компютър беше на 8-9, не се сещам точно. Въпреки липсата на средства по онова време и невъзможността да си купим домашно ПС, родителите ми ме пратиха на уроци. Въпреки че се занимавахме с paint и word, беше забавно, и рисувахме и правихме цветни документи със интересни шрифтове и рамки и други такива неща, не учихме програмиране от начало. Ходих на уроци доста дълго, и години на ред това беше досегът ми с компютър, това и компютърните зали разбира се, starcraft ftw!!!

След няколко години рисуване и правене на цветни документи и по късно малко photoshop, дойде ред на logo!!! Това беше началото! Лого беше перфектно, бях правилната възраст(въпреки че и сега си играя много с turtle модула на python), бях ентусиазиран, имах вече доста опит с компютъра, бях готов да се науча да програмирам. Учих лого няколко месеца на уроци и това беше.

Дойде лятото, и на следващата година когато отидох отново на уроци започнахме с pascal. Този език е супер за начинаещи, но само ако си пуснеш радиото и чуеш 80-тарска музика от него. Учих го, но така и не навлязох в големите подробности, научих какво е while цикъл и какво са променливи, написах прост калкулатор, нито лого, нито паскал не ги смятам за първите ми езици, не научих достатъчно от тях за да го направя, не знаех да програмирам, не знаех нищо!

И дойде C++!!!
Ужасен и грозен език! Същото се отнася и за С, но С има една особена красота, която има по общо с мазохизма, от колкото с естетиката. Но тук говоря за С++. Проблемът с С++ не е че има скапан синтаксис, или че е прекалено сложен(в естетическия смисъл на сложен, т.е. грозен), или че се компилира прекалено бавно, проблемът е че има прекалено много скапани С++ програмисти!!! Освен
това е скапан първи език и причината поради която го преподават в даскало е непонятна за мен.

Разгледайте следния израз:
C+++
българската образователна система+
български ученици+
български учители+
фактът че повечето програмисти изобщо си нямат и понятие от програмиране=
=български часове по информатика!

Вече споменах проблема с С++, проблемът с българската образователна система е че тя създава учебни планове и одобрява учебници без да си има понятие от материята, това не е математика!

Проблемът с учениците е че са на грешното място в грешното време, ако някой от тях си мисли че ще научи нещо в тея часове, да се огледа около себе си, всичките му съученици джъгат CS, което в случая не е съкращение от computer science :D

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

Следващия израз е ясен, действително повечето програмисти(в това число и аз, разбира се) са в долните 90% от програмисти, известни като "идиотите", или "некомпетентните", или комбинация от двете :D Не можем да очакваме че учениците ще успеят да получат дори и елементарни знания за област, в която дори повечето експерти са невежи.

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

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

Занимавах с с HTML през цялото това време. HTML е по подходящ за обучение от C++, въпреки това не бях особено добър, не знаех CSS и не знаех нищо относно естетиката и други подобни трикчета. Въпреки че сега не правя особено красиви страници, не са толкова зле. Ярко червен фон със сини надписи! Да живеят таблиците! Беше забавно, но не беше програмиране, за сметка на това научих колко важен е редактора и как се работи с ftp за да си качвам страничните в data.bg. Също така ми беше интересно да си изтегля готови темплети и да си ги бъзикам, да ги променям и да си играя с тях. Това беше и с HTML, след време осъзнах че не струвам, и спрях да се интересувам и да се занимавам. Дойде времето на апатия.

След кратката апатия дойде Lock On! Супер яка игра! Авио симулатор! Летях с часове на МиГ-29 и Су-27, четох много, четох всичко. Всичко от технически книги за авиацията, списания, бойна тактика, история, дори и поезия за авиацията, бях маниак! Най якото за тази игра беше че беше лесно да се правят модове. Научих се как да правя скинове за самолетите със фотошоп, научих се как да модифицирам конфигурационните файлове и да правя готини неща с играта, тези конфигурационни файлове всъщност бяха lua скриптове, но не знаех нищо за lua, просто си играех играта. Купих си джойстици, правих си джаджи за играта, гледах клипове на други играчи и си правих свои. Това беше истински откривателски дух! 2 години се занимавах с тази игра, по цял ден, само тази игра и още 2 имах на компа си, нищо друго. Само игри и фотошоп за да правя скинове, уйнамп и файърфокс.

Уйндолса се ебаваше заради многото вируси и други случайни говна които му инсталирах, имам навика да правя това :D Общо взето повечето от вас знаят как е с уйндолс, преинстал-универсално лекарство за компютри!. Писна ми, инсталирах си линукс, нетът не бачка! Мамка му! Инсталвам друго дистро, същия резултат, няма нет! при ХП само си пъхам шибания кабел и бачка! Опитвам се да
инсталма МакОСХ, шибаното ми дъно не бачка с мак, ок пак на линукс. Убунту! АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
Нета бачка!!!! Нетът бачка! Нетът бачка! Най накрая мога да правя квото си искам с компа си! Следващите 2 седмици ползвах предимно убунту и се учих. Писна ми и си инсталирах кубунту! От тогава това е моята операционна система,ползвам я всеки ден, вече година и 6 месеца почти! След време започнах да се уча да програмирам на python, занимавах се с код и други такива неща, но не учих програмиране до зимната ваканция, просто четох есета и такива неща. Купих си книга за python от книжарница и започнах да я чета, за 2 седмици я преполових! Това беше мания! Така до ден днешен, вече 1 година съм официално програмист, хакер, едва ли, но съм писал хакове, не са най впечатляващи, но са вършили работа.

Това е историята ми, 17 години се лутах докато достигна до правилната среда и правилния език за да започна да уча програмиране, това е тъпо! Каква неефективност! Когато си спомням булшит детектора ми откача! Това беше и част от причината да се опитам да напиша добър български туториъл за python, искам хлапетата да се научат да програмират. Познавате ги, те са момчетата които викате да ви оправят компа, те ви правят HTML странички, те ви правят домашното по информатика и с тях цъкате CS по нощите, искам тея хлапета да не трябва да откриват сами всичко, искам да учат и да знаят!

Мисля да започна втори туториъл за python, версия 3.1415926535897931, този път идеята е различна. Ще е нещо като смесица между unix/python туториъл, ще се предполага че си имам работа с умни хлапета, може би дори по умни от мен, ще предполагам че се кефят на компютри, ще предполагам че ползват уйндолс и че се правят на разбирачи пред задръстените си приятели със знанията си по компютри. Ще предполагам също така че имат някакви познания по HTML поне, а в най добрия случай php/javascript и че са учили pascal/C++ в даскало(или поне са присъствали в часове докато учителите им са се опитвали да им преподават). Въпреки очевидната ми липса на време, мисля че го дължа на хората които са ми помагали(и продължават, защото аз съм все още в самото начало) докато уча, да помагам на други, за това блогвам, за това пиша в форума за информатика, за това присъствам в irc и за това се занимавам с програмиране, това е изкуството ми, животът ми, вдъхновението ми.

четвъртък, 8 януари 2009 г.

Дисциплината никога не ми е била силната страна

Внимание, шибано дълъг пост:

Аз съм артист, не калкулатор! Посредствен артист, без особен талант, и със грозна мутра, но все пак артист! Светът изисква от мен да съм калкулатор. Преди бях доста добър в това, преди 8-ми клас, бях истински мега калкулатор, запомнях всичко и знаех колко е 7*8, сега трябва да се замисля, 56, след около 5 секунди мислене, и още 10 в които проверявах дали съм прав. Но разбира се, както се случва в живота, не получих това което исках, исках да вляза в математическа гимназия, да уча математика, химия и др такива готини науки. Но понеже имах кофти оценки по математика, не ме приеха, вместо това влязох в хуманитарна гимназия, защото имах доста добри оценки по история.

Това че влязох в хуманитарно даскало, вместо в математическо доведе до днешната ситуация на смесени чувства, относно това което се случи преди толкова години. Хуманитарното даскало ме научи на много неща. Бях доста добър по английски, понеже го уча от много малък, и 8-ми клас си бях като у дома, понеже имахме много(ама наистина много) часове по английски език, мисля че за една година минахме 4 учебника(4-5 часа на ден). Това не беше толкова зле. Ако се опитам да си спомня за хубавите неща за тези 5 години прекарани в това даскало, непременно ще спомена историята и литературата, подготовката ми по тези предмети беше наистина интензивна, учителите изискваха много и вършеха чудесна работа, въпреки че не можеше да ми пука по малко за литературата. А историята я харесвам, винаги съм я харесвал, но никога не се бях напъвал да я уча до 10-ти клас, 10 и 11-ти клас се скъсах от учене и изкарах 6 по един от най трудните предмети в нашето даскало, 10-ти и 11-ти клас беше по лесно от 4 да повдигнеш на 5 от колкото от 5 да изкараш 6, за това трябваше да знаеш материала почти без грешка, бях адски добър на това, знам историята на 20-ти век перфектно!

Ето я лошата страна на даскалото. Часовете по математика са прекалено малко. Часовете по физика са прекалено малко, часовете по химия бяха прекалено скучни и не научих нищо, а часовете по информатика бяха подигравка с идеята за "образование". Всички науки в които бях добър и имах особен интерес преди да вляза в това даскало(освен английския и историята) бяха недостатъчно интензивни, или недостатъчно интересни, или даскалите просто бяха некомпетентни, за това и загубих тотално интересът си по химия, уменията ми на калкулатор замряха и прекарвах всяка седмица по 2 часа в даскало, учейки се как да пиша на word.

Тази ситуация доведе до 2 последствия. Първо, загубих фокусът си от науката и технологията, и се концентрирах върху изкуствата и хуманитарните науки, понеже е по добре да учиш неинтересните науки от компетентните даскали, от колкото да се мъчиш със некомпетентни даскали, или зле подготвената програма на другите предмети, които може да са интересни като науки, но са ужасни като предмети в даскало. Въпреки че не се опитвах и не ми пукаше, научих много неща за литературата и културата, за развитието на европейската цивилизация и за историята на философията и мисленето на този континент. Това че занемарих истинското си признание за сметка на хуманитарните науки, беше едновременно най доброто и най лошото нещо което ми се случи в даскалото за тези 5 години. Светът ми днес е много по широк и имам много по ясно понятие за себе си и околните. Това несъмнено помага в програмирането, защото това не е изкуство за компютъра, а е изкуство за хората, практикувано от хора, за хора, и този опит безспорно ще ми е от полза в бъдещата ми кариера на h4cK0r!

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

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

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

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

Първия срок почти не учих по математика, освен материала който взехме тази година. Нямах време. Денят ми е разделен на 3, сутрин, когато ми се спи и си губя времето в нета, следобед, в даскало, когато си губя времето в часовете, които вече никой не ме притиска да уча, и на мен не ми пука за тях(и си получавам съответните оценки, но това си е просто бюрокрация), и вечер, когато се отдавам на програмиране. Без значение дали пиша код, чета код или чета книги/блогове/туториъли, гледам презентации или лекции или чета комикси за програмиране, това правя цяла вечер до 3-4 вечерта. Прекарах цялата ваканция в четене и писане на код(с малка пауза, както обясних в стария блог), но дойде даскалото отново и се хванах да уча математиката. Оптимист съм, материалът не е особено много и не е особено сложен. Сравнено със някой от нещата с които се занимавам(функционално програмиране), не е нищо повече от механично извършване на аритметични действия. Това е математиката в даскало, дори и най сложните проблеми са просто механични действия, след като решиш достатъчен брой подобни задачи разбира се. Идеята е просто да тренираш умът си да решава тези задачи на ръка(непосилна задача, за човек свикнал да учи компютърът да му върши работата). В крайна сметка целта е просто да се науча как да извършвам тези действия, не са сложни, не се изисква особена креативност(освен ако не си средно статистически човек, но аз не попадам в тази категория, аз съм шибан гении), изисква се просто да си стегнеш гъзъ и да решаваш задачи докато не ти се налага да мислиш, просто ръката ти сама започва да решава, ти само наблюдаваш за грешки. Това е.

И ето го истинския проблем. Това изисква дисциплина! Иска се гъзец. Обещах си понеделник че ще свърша с втория раздел на учебника за 10-ти клас до края на седмицата, за да мога да свърша целия учебник до края на месеца(и да почна 11-ти клас). Понеделник и вторник вечер решавах доста. Сряда решавах малко и отново отворих блоговете и зачетох за haskell и clojure и python и ruby и в крайна сметка не направих нищо. А днес дори не си извадих тетрадката от чантата, цяла вечер само си играя със python и уча ruby, това е, нямам дисциплина, не мога да уча програмиране, защото няма да мога да си взема шибаната матура, защото вместо да уча математика, уча програмиране! Бахти нещастното копеле съм!

Писна ми, този пост е откровение, това е моя вик в пустинята на интернетът, виновен съм аз, и не мога да се оплаквам за това че трябва да уча математика. Да, имам право да се оплаквам че даскалото ми преебава деня, защото 90% от нещата които учим са безполезни и половината от цялата работа е просто бюрокрация, и също така нещата които учим са ми БЕЗИНТЕРЕСНИ, и най вече НЯМАМ ШИБАНО ВРЕМЕ ДА СЕ ЗАНИМАВАМ С ТЯХ, но нямам право да се оплаквам че трябва да уча математика и че трябва да се боря със любовта ми към програмирането, само за да мога да уча това което искам. Защо по дяволите пиша този шибан блог, трябва да решавам шибани уравнения! Мамка му!

сряда, 7 януари 2009 г.

Изобщо Не задавани Въпроси

ИНзВ:Изобщо Hе задавани Въпроси
CUQ:Completely Unasked Questions

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

1. Защо този блог се казва "Триколка"?
Защото това беше първото име, което имаше рядкото качество да бъде супер тъпо и да е свободно за регистрация.

2. Какви са основните теми на този нов блог?
Има много блогове тип "Всичко което ми дойде на ум", които са писани от прекалено скучни хора, идеята на този блог е да е от този тип, но под "Всичко което ми дойде наум" се разбира наистина всичко странно, изненадващо, или просто интересно, което може да излезе от главата ми, това включва и спам, който ще се опитам да се въздържа от публикуване, но ако искате да знаете каква ще е типичната статия в този блог, нещо от рода на "." би трябвало да ви даде представа.

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

4. Леко заобиколи този въпрос предния път, за това ще го задам по точно: Какви ще са точно с думи, разделени на нов ред, темите в новия блог?

програмиране
наука
изкуство

Достатъчно?

5. Аз задавам въпросите!

Тогава защо последното ти изречение е императивно?

Манифест на въображението

Това е първия пост от новия ми блог. Стария е тук. Добре дошли.

Този блог, както и предишния ми, са експерименти, пътешествия в неизвестното, както и чиста загуба на време, но на кого му пука. Предишния блог имаше 2 цели: да ме научи да блогвам; и да документирам процеса ми на учене(изобщо ученето като умствен процес, не само относно блогването). Целта на този блог е да изследвам друг неизвестен свят. Този блог не е толкова специализиран колкото предишния. Въпреки че предишния беше за програмиране, имах и доста статии които не са техничарски. Този блог ще е по общ, т.е. достъпен за по голяма аудитория, но все още е мега нърдкор. Все още ще има статии за програмиране, но вече това не е основната ми цел, идеята е просто да изследвам съзнанието си и самия себе си, както и многото интереси които имам. Очаквайте материали от широк кръг на научни области, които смятам за готини, както и куп яки неща свързани с различните изкуства които харесвам(комикси, музика, други откачени неща).

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