Лев Валкин про Силиконовую долину

Вчера Лев рассказывал про то, что отличает Силиконовую долину от России-Украины и что нам делать чтобы появилась среда, благоприятная для стартапов.

Горизонтальная коммуникация

Первым большим сдерживающим фактором на постсоветском пространстве является остутствие горизонтальной коммункации.

Вертикальная коммуникация: разработчик - менеджер - сейлз - клиент.

Читать дальше →

Лев Валкин про ФП и Erlang

Вчера ходили с @vseloved и @matveym на выступление Льва Валкина про функциональное программирование в целом и Erlang в частности. Кратко запишу основные тезисы, которые мне очень актуальны.

Новый набор инженерных принципов, непривычных для императивных языков

Функциональные языки дают возможность поработать с другими способами построения программных систем. Эти новые способы позволяют писать лучше даже на императивных языках. Это очень важный для меня тезис. Я немного поработал с Эрлангом, когда мы работали над Рисоваськой, теперь по совету Льва я изучу Haskell.

Читать дальше →

Стоит ли мне работать руководителем?

Меня давно интересует вопрос “Стоит ли мне работать руководителем?”. В прошлую пятницу я был в Москве и разговаривал там с моим одноклассником Костей Кузнецовым. Много лет назад он был для меня проводником в мир компьютеров. Костя сам является отличным программистом, а сейчас руководит командой из 20 человек и скоро станет руководителем собственной компании. Ему это нравится. Есть хорошие руководители-предприниматели в Grammarly, кто-то с программистским опытом, кто-то без. Им тоже нравится то, что они делают. А вчера я прочитал комментарий Алексея Колупаевахороший программист и хороший менеджер - это совершенно разные люди”, который стал последней каплей в этом вопросе.

Читать дальше →

Неопределенность и страх

Вчера начал работать над новым большим проектом. В нем понятно что нужно получить на выходе, но совершенно не понятно как это сделать. Очень много нетехнических задач, исследований, экспериментов. И я чувствую страх. Страх, что “вот, блин, непонятно что-именно программировать, нужно самому все придумывать”.

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

А еще заинтересованность и горящие глаза обычно помогают находить единомышленников.

Django Dash 9-10 июля

Django Dash - международный конкурс, в котором компактные спецназ-команды за 48 часов создают полноценный проект. Правила простые:

Читать дальше →

Интерактивная консоль для pyuno + django

Недавно я писал про то, как работать с документами LibreOffice из питона. Я сейчас работаю над исследовательским проектом, в котором django application обращается к LibreOffice через pyuno. В этом проекте натолкнулся на неприятную ошибку - ./manage.py shell при выполнении любых связанных с pyuno методов выдает сообщение “SystemError: pyuno runtime is not initialized, (the pyuno.bootstrap needs to be called before using any uno classes)”. При этом если запустить python и сделать в нем import uno, а потом вызывать те же методы, что и в ./manage.py shell, то все работает отлично, за исключением того, что не получается обращаться к своим моделям (потому что не инициализировано окружение django).

Читать дальше →

Рабочий процесс как поход

Вчера в разговоре с коллегой пришел образ гармоничного движения к большой цели. Утром каждого дня нужно находить/создавать интересный маршрут на сегодня. Такой чтобы:

Всё как в хорошем походе. У тебя есть примерное направление куда ты хочешь дойти, но каждый день ты лишь выбираешь куда ты хочешь дойти сегодня. С учетом всего-всего: погоды, настроений, желаний, состояния троп. И в конце дня ты не гадаешь куда идти завтра - ты сидишь у костра и наслаждаешься возможностью отдохнуть, порадоваться тому как здорово удалось пройтись сегодня. А завтра проснешься и как-то вырисуется план еще на один день.

Особенно это касается таких тонких целей как “повышение энергии/мотивации (passion)”, “повышение производительности”.

Использование Markdown

В проекте Grammarly Handbook, про который я писал вчера, грамматические карточки из формата MS Word нужно было конвертировать в какой-то внутренний формат, чтобы в этом формате было легко добавлять новые карточки и редактировать существующие. Кроме того, нужно было ограничить функционал редактора карточек, чтобы не было чрезмерного разнообразия форматирования и, как говорит наш дизайнер, “верстка была семантической”.

Читать дальше →

OpenOffice + Python, pабота с файлами MS Word

Пару недель назад для проекта Grammarly Handbook понадобилось импортировать много форматированного текста из документов MS Word. Текст находился в 40 файлах размером от одной до двадцати страниц. Первые несколько страниц я перенес вручную и несколько утомился - механическая работа меня не очень радует. Начал искать возможность читать вордовские документы из Питона.

У меня был очень позитивный опыт с библиотеками xlrd, xlwt. Первая читает документы Excel, а вторая - записывает. Но подобных библиотек для документов *.doc я не нашел. Зато нашел возможность обращаться из Python к OpenOffice. Эту возможность я успешно использовал, успешно импортировал весь грамматический материал и даже наткнулся на интересную идею для нашего основного продукта - инструмента проверки грамматики Grammarly.

Читать дальше →

В Python 3.x работает старый способ форматирования строк

А старый добрый способ форматирования строк с помощью % в Python 3000 всё-таки оставили!

~ > workon python3
(python3)~ > ipython    

Python 3.2 (r32:88445, Feb 28 2011, 11:06:14) 

In [1]: 'Good old %s still works in Python 3!' % 'string formatting'
Out[1]: 'Good old string formatting still works in Python 3!'

По наводке www.boredomandlaziness.org

Python - на 4-м месте

Python - самый популярный язык программирования после Java, C, C++ (именно в таком порядке).

таблица

график

Источник - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

if request.method == 'GET'

Наконец-то я понял, почему пишут так

def item_view(request, id):
    item = get_object_or_404(Item, id=id)
    if request.method == 'POST':
        form = ItemForm(request.POST, instance=answer)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(item.get_absolute_url())
    else:
        form = ItemForm(instance=item)
    return render('item.html', {'item': item, 'form': form})

и не пишут вот так

def item_view(request, id):
    item = get_object_or_404(Item, id=id)
    if request.method == 'GET':
        form = ItemForm(instance=item)
    elif request.method == 'POST':
        form = ItemForm(request.POST, instance=answer)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(item.get_absolute_url())            
    return render('item.html', {'item': item, 'form': form})

Второй вариант хоть и более выразительный, но не учитывает такие http methods как HEAD. А HEAD частенько шлются всякими программами и фейсбуками про постинге ссылки (чтобы проверить, что ссылка действительно рабочая).

Блоги программистов

Я наблюдаю разительное отличие между блогами программистов и блогами других людей. Независимо от первоначальных причин по которым программисты начали вести блог, главное что они делают через блоги - говорят с другими программистами.

Не выражают свои эмоции, не самовыражаются, не зарабатывают, не продвигают, не продают. А продолжают традицию обмена новыми идеями, полученным опытом. Раньше ученые писали друг другу бумажные письма, а теперь удобно писать одно электронное “письмо” всем, кто подписан на Atom/RSS.

По крайней мере это справедливо для блогов, которые читаю я.

Upd. “Обсуждения через блоги” Ивана Сагалаева

2010 - итоги года

Блог

Читать дальше →

Выбор инструментов

Короткая мысль:

Базовых принципов построения сложных систем немного. MVC, разделение на шаблоны и логику, разделение на сервера приложений и сервера данных, … А вот инструментов для реализации каждого из принципов очень много. Много редакторов, шаблонных языков, key-value datastores, веб-фреймворков, инструментов тестирования разного уровня, систем контроля версий, языков программирования.

Мало пользы в поиске идеального для всех инструмента, еще меньше - в отстаивании позиции, что найденный инструмент - идеальнее всех остальных. Лучше стараться понимать на практике базовые принципы, а инструменты выбирать подходящие лично вам по эстетическим, практическим и прочим любым другим причинам.

В чем польза документоориентированных БД

Первый use-case использования документоориентированных БД, который не дает мне покоя.

Relational Solution

Document Store Solution

Рендеринг шаблонов сейчас может быть очень быстрым, а умная инвалидация кеша все еще остается очень непростой.

Источник - http://codeascraft.etsy.com/2010/05/19/mongodb-at-etsy/

Подписался на 2 новых блога

http://codeascraft.etsy.com/ - компания Etsy делится своим опытом в разработке, мониторинге и прочих областях

http://www.laughingmeme.com/ - когда-то был архитектором Flickr’a, а теперь работает VP of Engineering at Etsy

Akismet to Recaptcha

Внес небольшие изменения в код этого блога. Заметил, что Akismet (сервис проверки на спам, которым обрабатывались все входящие комментарии) перестал пропускать однострочные короткие комментарии. Отключил проверку на спам, вместо этого добавил Recaptcha. Если есть какие-то замечания - пишите в комментарии к этому посту или на roman.vorushin@gmail.com.

Шаблоны страниц глазами дизайнера

В новом проекте я много работаю в роли дизайнера-юзабилиста-фронтендщика. Пишу html, css, javascript. Думаю страницами, действиями, приоритетами. Хочу поделиться тем, что я успел увидеть глазами дизайнера в оформлении шаблонов страниц сайта.

Не уходить далеко от html, css

В случае статического сайта каждая страница - это один html файл. Это очень удобно. Хочешь поправить главную страницу - открывай start.html, профиль - profile.html и т.д. Поэтому всё (или почти всё), что относится к текущей странице, должно быть в одном файле шаблона. Даже javascript код лучше не выносить в отдельный файл, если он относится к дизайну-юзабилити страницы (а не к супер-сложной технологии, которую понимают только программисты). Исключения - методы или свойства моделей, возвращающие часто встречающиеся элементы (например, у меня в профайле есть свойство profile_link, которое собирает полное имя из first_name, last_name и оборачивает его в <a></a>), удобные фильтры и повторяющиеся виджеты (в виде отдельных файлов, добавляемых через {% include %} или inclusion tags - последние удобны тем, что их можно параметризовать).

Читать дальше →

Бывают ли такие дизайнеры?

У меня есть больной вопрос, мои уважаемые читатели.

Я давно читаю блог команды 37signals Signal vs. Noise и я завидую тому, как много внимания они уделяют дизайну. Они рекомендуют использовать команды из 1 дизайнера и 2 программистов. Причем дизайнер сам правит шаблоны.

Я никогда еще не работал с такими дизайнерами. Возможно ли это в xUSSR? Получалось ли у вас работать таким образом? Или дизайнер рисует красивый PSD, его отдают верстальщику, а программисты потом пытаются полученные html/css встроить в приложение? Или все-таки существую дизайнеры, которые так же плотно работают над проектом, как программисты?

Страница: 2 из 5