Така започна един разговор снощи, ако можем да наречем разговор викане в ушите под звуците на delinquent habits. Оказа се, че човека бил sales. Докато (неуспешно) упражнявах телекинезис върху бутилката с текила, през ушите ми прехвърчаха изтъркани фрази относно това как трябва да накараш клиента да си купи каквото там му продаваш, и да го навиеш да повярва че му трябва, дори и това да не е така. Усмихнах се донякъде мило и си отбелязах наум да не наемам сейлсове, поне не и такива. Кой знае къде ги произвеждат.
custom solutions не са домати, които продаваш на пазара.
Звучи просто и ясно, и същевременно сложно на много нива. Да продадеш нещо, което има дори минимална вероятност да не трябва на клиента е едно от най-лошите неща, което можеш да причиниш на екипа. Това означава, че вероятно клиентът не е готов за това, което му предстои, няма да може да сътрудничи с know how от домейна, вероятно ще е прекалено зает с други работи, няма да си дава сметка за необходимите инвестиции, няма да отделя необходимото внимание и няма да е в състояние да вземе решенията. Това ще доведе до проект, правен на изуст от екипа, който вероятно бъкел не разбира от бизнеса на клиента. Дали ще има втора версия? Надали. Дали служителите на фирмата отсреща няма да те мразят, защото си поредния навлек, с който трябва да се занимават, без това да има никакъв смисъл и полза? Много вероятно.
В този ред на мисли, не мисля, че въобще e удачно да се практикува активен sales на решения по поръчка. Ако някой дойде и ме накара да поръчам и опиша нещо, за което аз дори не съм мислил, какво мога да му опиша? А пък продуктът е доста по-сложен от това да си избереш ел. стъкла и климатик за колата.
Разбира се, ако имаш готов продукт, с ясна и готова функционалност, сейлса е задължителен и здравословен.
— Петьо Иванов · 12 март 2008, 00:38
На шести март devbg организираха втора серия на itboxing. Темата този път беше уеб фреймуърци. Уж на майтап, Сава, Станислав, Станислав, Краси (последния не презентира, но указваше морална подкрепа) и моя милост – членове от българския рейлс mailing list успяхме да се организираме и да спретнем една кратка презентация.
Нямам намерение да критикувам събитието – добра организация, щедри спонсори, тук-таме приятни лекции. Пацифисткия ми дух (и килограмите) не ми позволиха да ударя никого, но за сметка на това изговорих един тон глупости за по-малко от 5 минути. Реших да споделя няколко мисли, които ми минаха през главата, докато разсеяно слушах драканията на тема дали apache или iis е по-добрия уеб сървър.
Всички сме от едната страна на барикадата.
Надявам се всички, които бяха там да го разбират. Няма значение каква технология ползваме. Всички се опитваме да правим по-добър уеб. В тази връзка – за мен беше удоволствие да видя новостите в другите вендори; всяка нова добра идея, създадена независимо от кого, може успешно да бъде имплементирана в друга среда, с което да направи живота ни поне мъничко по-лесен. Хареса ми yml-a в симфонито, новото mvc в asp.net-а, шантавите идеи в gwt-то.
rails == innovation. Which Is A Good Thing.
RoR никога няма да замени .net, или java. В голяма степен няма да замени дори и PHP, в това което е. Честно казано, не мисля че някой гори от желание това да стане. Несъмнено обаче идеите, за първи път са реализирани там, обогатяват и останалия web свят. Чест направи на останалите отбори, че го признават.
Дали rails има бъдеще? Или ще изчезне?
Това пророкува един активен чичка от публиката – след няколко години платформата ще бъде асимилирана, посредством разработки като JRuby и IronRuby. Дали ще стане? Не знам, честно казано не ме и притеснява особено, понеже разработките си имат стойност тук и сега. Ако трябва да пророкувам, бих казал – не. RoR обикновено привлича интереса на “екстремисти” (справка: Zed Shaw). А големите надали биха отказали такъв research lab, от който да взимат успешните идеи, при това напълно безплатно. За какво би им трябвало да се опитват да задушават явлението? В крайна сметка времето ще покаже.
Добре, в крайна сметка защо рейлс, след като останалите framework-ци ще окрадат рано или късно каквото става?
Защото обикновено портовете (дори и microsoft-ския) не са толкова добри. И защото с rails имаш шанс да тестваш нещата веднага. И защото е удоволствие да пишеш на ruby.
Понякога да си шофьор определено е набутка.
Особено когато в 00:00 колегите поръчват второ старобърно, а ти преглъщаш на сухо.
— Петьо Иванов · 10 март 2008, 15:52
Винаги нещо в червата ми се преобръща, когато представяме продукцията за първи път пред клиента. Дори и преди това да сме гледали дизайн, да сме обсъждали прототипи, и така нататък, знам много добре, че в повечето случай е блял по стените или просто сега ще му дойде нещо ново на акъла. За това и прекарах известно време умувайки какво мога да направя по въпроса първата (пък и по-нататъшните) презентации по-благи.
Както немалко умни глави са казвали, “content is king”. Старателно пеем тази песен пред клиентите, обясняваме им как дизайна на сайта не трябва да “задушава” съдържанието си, как на преден план трябва да изпъкне информацията и други мили неща. Той кима и се съгласява. И ето – иде ред за първата презентация. Къде го обаче прекрасното съдържание, което искаме да покажем на преден план? Една-две новини със заглавие
djlkqwj d1ggggm
Маймуна била по клавиатура. В последния момент сме въвели нещо, да се види, че работи (работи). В най-добрия случай – няколко пасажа лорем ипсум. Какво правим? Клиентът почва да се почесва дето не го сърби и се чуди как да каже, че му стои постно. Което е вярно, с това увяхнало съдържание. Прекрасния сайт е показан далеч не в най-доброто му състояние. Какво правим?
В най-добрия случай имаме под ръка някой безполезен и бездеен Project Manager или QA, на който казваме “напълни тука нещо”. В най-добрия случай имаме и малко предварително взето от клиента съдържание, което да качим.
При нас обаче нито имаме някой без работа, нито разполагаме с реално съдържание. Какво правим? Логично – решаваме проблема програмистката.
В Ruby on Rails има една работа, която се нарича fixtures. Ако не сте ги гледали – Ето тук ги описват. Много приличат на това, което на мен ми трябва – примерно съдържание. След като говорих със Стефан обаче се схванах, че всъщност не са точно те правилния инструмент за това, което ми трябва. Правени са за статични данни за тестови цели, а пък и yml формата не е много приятен за работа. Аз искам максимално “органично” изглеждащи случайни данни.
За това – запретнах ръкави и се метнах на това да си напиша собствена rake задача. Първото, което си сглобих беше домашнярка lipsum генератор.
class Lipsum
def initialize
@f = File.read File.join(RAILS_ROOT, ‘lib’, ‘tasks’, ‘lipsum.txt’)
end
def rand_sentence
sentences.rand
end
def rand_paragraph
paragraphs.rand
end
def rand_excerpt
sent = “”
3.times do
sent << rand_sentence + ‘. ‘
end
sent
end
def rand_content
sent = “”
3.times do
sent << rand_paragraph
end
sent
end
def rand_name
“s %s” [words.rand.humanize, words.rand.humanize]
end
private
def paragraphs
p ||= f.split(”\n”)
end
def sentences
s ||= f.split(”. “)
end
def words
w ||= f.split(/[\s\.,]/).uniq
w.delete ""
w
end
end
в lipsum.txt има 15 параграфа латински, генерирани от http://lipsum.com.
Дотук добре. Нека да произведем малко съдържание за блог. Какво друго да направиш на рейлс, ако не блог?
task :clean_posts do
p “# Destroying posts”
Post.destroy_all
Post.connection.execute(‘truncate posts’)
end
task :create_posts => [:clean_posts] do
l = Lipsum.new
cats = Cat.find(:all)
pic_folders = [‘pics1’, ‘pics2’, ‘pics4’, ‘pics5’, ‘pics6’]
files = []
pic_folders.each do |folder|
files << File.open(File.join(RAILS_ROOT, ‘lib’, ‘tasks’, ‘content’, folder, ’100.png’))
end
75.times do
f = files.rand
created_at = Date.today – (1..40).to_a.rand
post = {
:title => l.rand_sentence,
:announce => l.rand_excerpt,
:content => l.rand_content,
:comments_allowed => true,
:active => true,
:image => f,
:created_at => created_at,
:small_image => f
}
cat = cats.rand
p “# creating post for #{cat.name} with tilte #{post[:title]}”
cat.posts.create(post)
end
end
$ Rake acme:create_posts
Така. 75 поста в рамките на 40 дни. Доста продуктивен блог. Към всеки дори има прикачена картинка от надърпаните на случаен принцип от интернет такива. file_column плъгина се справя идеално с така подаденото.
Нека да има и коментари към тези постове.
task :create_comments => [:create_posts] do
l = Lipsum.new
posts = Post.find(:all)
250.times do
created_at = Date.today – (1..40).to_a.rand
posts.rand.comments.create(
:author => l.rand_name,
:email => ‘akme@akme.org’,
:comment => l.rand_paragraph,
:created_at => created_at
)
p “# creating comment”
end
end
Няколко секунди по-късно сайта е пълен с постове, озаглавени
Nulla adipiscing, с по три-четири коментара от Vivamus Gravida и Nisl Sed. Различни по обем текстове. Цъфнаха няколко бъга по лейаута, от това, че не съм съобразил размерите на текста.
Разбира се, може да се стигне и доста по-далеч. Имах смелата идея да парсвам rss на някой спамест сайт (да речем – slashdot), и динамично да присурвам примерно съдържание оттам; или да тегля картинки от flickr. За момента обаче и това стига, за да може сайта да бъде представен във възможно по-добра светлина.
— Петьо Иванов · 25 февруари 2008, 22:52
На този въпрос ми се наложи да отговарям, докато убивахме времето, чакайки един клиент. Става въпрос за една от по-старите уеб фирми на пазара, с традиции в PHP производството, установени процедури, натрупано know-how и така нататък.
Отговорът ми беше “За сега – не”. От седмица и нещо го превъртам през главата, и си мисля, че мога да допълня с “И вероятно – няма и да му дойде времето”. Макар че до момента за нашия venture да съм избирал rails, когато е възможно.
Причините ми за това мнение далеч не са технически. Ruby е чудесен, модерен език, с който пишеш по-малко и правиш повече. Rails е хубав framework, обществото около него е добро. По-скоро могат да бъдат “обобщени” с този слайд на DHH. Релсите не гонят mass appeal. Ако трябва да бъда честен, дори имам чувството, че части от от framework-а са нарочно мъгляво обяснени, та да прогонят по-малко упоритите.
Което означава ограничена аудитория от хора, които биха се занимавали с платформата. И още по-ограничена от хора с опит. А ако утре двамата ти релсаджии ги блъсне влак? Дори и да приемем, че един добър RoR разработчик работи за 10 PHP такива, факт е, че вероятно по-лесно ще намериш 10 PHP “маймуни”, отколкото rock-star RoR правяч. Нещо, което не би се понравило на класически shop, където точно тия хора би трябвало да са заменяем ресурс.
Всъщност, май не трябва да ме учудва факта, че продукт стартирал във фирма като 37signals е подходящ именно за… фирми като тях. Или поне такива, които се опитват да работят по подобен модел.
— Петьо Иванов · 20 ноември 2007, 17:52
Вчера успях да отделя няколко часа да се видя с познати на въпросното събитие. Няма да преразказвам, който бил – бил. Само няколко бележки:
- Лекторите (с изключение на на полираните пичове от neveq) бяха… бе можеше и много по-добре. Нищо, следващия път. Practice makes perfect.
- Богомил става все по-забавен с всяко мероприятие. Скоро ще може да води собствено шоу.
- Web 2.0 в България не става, щото няма critical mass. за сметка на това, има critical ass.
- Всъщност, май се оказа, че в България нищо не става, щото пазара е малък; само трябва да се произвеждат неща.
- Имам блуза на swfaddress! Кой казва, че от open source не се печели?
- Времето за такива мероприятия никога не стига, и залата пак беше много малка. Все така да е.
И сега нещо, което не можах да споделя, щото и без това нямаше много време. Колкото повече говореха хората, толкова повече ми се избистряше, че web 2.0 трябва да бъде разглеждано не толкова като технологично, колкото като социално и бизнес явление. И на дискусия, посветена на веб 2.0 трябва да има не пасмина програмисти, ами и толкоз социолози, маркетолози, и други гадове. Щото, както се шегуваше Ростислав, факта, че нещо е писано на RoR не го конвертира автоматично до web 2.0.
— Петьо Иванов · 28 октомври 2007, 17:49
По-стари