?

Log in

Tue, Dec. 31st, 2013, 11:59 pm [sticky post]

“Between stimulus and response, there is a space. In that space is our power to choose our response.”
—Victor Frankl

Wish lists and resolutionsCollapse )

Fri, Dec. 2nd, 2016, 11:17 pm
Swagger.

Прорекламирую Swagger. Это такая штука, которая позволяет на коленке специфицировать всякие там REST/JSON API.

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

Fri, Dec. 2nd, 2016, 12:56 pm
Пракено.

Выдался час времени, решили посмотреть первую серию The Young Pope, которого вы все тут нахваливали.

Господа, что это было?

Если это пародия, то я не понимаю, что пародируется. Если это серьёзно (ну, это не может быть серьёзно, но всё-таки), то я не понимаю, кто может сорок минут смотреть на человека без единого проблеска интеллекта в лице. Если это аллегория на предстоящую инаугурацию Трампа, то тоньше надо быть.

В общем, расскажите мне, чего я не понимаю?

Update: я тут подумал, что это не первый случай. Я не понимаю вообще половины современного мейнстримного кинематографа, который слишком натуралистичен для того, чтобы быть tongue-in-cheek, и слишком сюрреалистичен, чтобы приниматься всерьёз. Это началось с новой бондианы, потом Dark Knight, потом Hot Fuzz, потом Prometheus, и вот теперь этот папа. Все эти произведения оставляют у меня только недоумение -- "что сказать-то хотели?" -- что в сочетании с высокими рейтингами заставляют меня подозревать, что я просто уже немного вышел в тираж, чтобы понимать веяния современной молодёжи [фальцет] [старческое кряхтение] [поиски тега сарказм].

Просветите меня, пожалуйста!

Tue, Aug. 16th, 2016, 01:26 pm
Фрибсдя инсталля шайтанама.

Учёные всего мира много лет задаются вопросом: можно ли работать с FreeBSD?

У меня есть традиция: каждый год 31 декабря мы с друзьями в гордом одиночестве ставим свежий major-релиз FreeBSD и отвечаем себе на вопрос: можно ли с этим жить. Все предыдущие релизы ответ был «нет». Но сейчас, с выходом FreeBSD 11.0-RC1, ответ уже превращается в «хм... а вдруг?»

Наблюдения за новым релизом:

+ Инсталлятор, наконец, стал достаточно тупым, чтобы можно было ни разу не заглянув в хэндбук, поставить фрю с настройками по умолчанию, тупо нажимая на Next. Это огромное достижение!
- Но всё же заставляет думать и выбирать опции, которые надо бы делать по умолчанию, а конфигурировать потом. Например, ставить ли ntpd (ну конечно же, ставить!)

+ ZFS везде, ZFS рулит. ZFS, кто не знает, это лучшая файловая система всех времён и народов, лишённая недостатков и совершенная. Как нутелла, как Битлз, как сериал Firefly.
- Чтобы насладиться великолепием ZFS, в инсталляторе нужно не забыть поставить галочку «использовать ZFS как основную файловую систему».

+ Новый package manager работает хорошо. Всё ставится как обычно, например, "sudo pkg install openjdk8". Да, джава работает хорошо.
- Тоже мне, достижение, в 2016-то году (да, он был ещё в FreeBSD 10, но сейчас, наконец, допилен и работает как зверь). Да, я упомянул, что sudo в инсталляцию по умолчанию не входит, и надо-таки один раз залогиниться рутом и сделать pkg install sudo?

+ Нет systemd! За одно это можно полюбить фрю.
- BSD init, конечно, лучше чем SysV init (и чем systemd — всё что угодно лучше чем systemd). Но всё же дикость какая-то, прошлый век. Эх, вот бы туда Nix прикрутить, он бы идеально работал, с ZFS и курируемым юзерлендом.
+ Всё конфигурируется текстовыми файлами, никакой бинарности и непрозрачности.
+ Превосходная документация, великолепный олдскульный handbook, в котором есть ответы на все вопросы.
+ Наконец-то починили termcap, все клавиши работают нормально.
- (Ага, в 2016 году!)
+ Инсталлятор предлагает сразу включить разумные секьюрити-опции (рандомизацию pid, всякие там паддинги против атак с переполнением буфера, etc.)
- Надо не предлагать, а включать не спрашивая.
+ Великолепное всё, что связано с сетью: роутинг, файрволлы и т.д. Прямо получаешь удовольствие и чувствуешь, как начинает расти мягкая пушистая борода.
- FreeBSD не готова для десктопа: с иксами и проч. придётся возиться самостоятельно (можно, но удовольствие ниже среднего). Только сервера.
+ На DigitalOcean и AWS есть и работает.
- Половина management-тулзов для DO и AWS всё же заточены под линукс.
+ В экспериментальном режиме работает Docker! Каково, а?
- Докер и сам по себе экспериментальный, а уж под фрёй... Впрочем, если душа жаждет извращений...

В общем, мне скорее понравилось, впервые выношу вердикт «можно использовать».

Thu, May. 12th, 2016, 08:31 am
33.

Поздравлять тут. :)

Tue, May. 10th, 2016, 09:10 pm
Как просрать миллион.

Не могу молчать! Захотел поведать миру профессиональную тайну о контроле качества в мире финансового программирования. Как проверяются системы, через которые проходят миллионы долларов в секунду?

Формальные методы? Нет.

Покрытие юнит-тестами, контрактами и прочей ерундой, 100% coverage? Нет.

Staging? В какой-то мере да; как правило, каждая система задеплоена в трёх экземплярах: dev, UAT и продакшн. Но этап UAT короткий и это именно UAT (удостовериться, что программист всё правильно понял): человек проверяет пару дней, что нигде не перепутаны знаки и все сделки происходят в нужном порядке, и даёт отмашку, что всё ОК.

Так как же тогда?

Правильно. Сырая система, только что из-под трясущихся пальцев программиста, пройдя минимальный контроль UAT, попадает СРАЗУ В ПРОДАКШН НА ЖИВЫЕ ДЕНЬГИ. Но деньги это не очень большие; ставить заметный capital allocation и/или высокие лимиты на новую систему дураков нет. Только успешно проработав несколько месяцев или лет, она увидит эти самые миллионы долларов в секунду.

Этим убиваются сразу много зайцев:

1) Программисты мотивируются писать сразу хорошо (или по крайней мере, выполнять большую часть тестов самим, не дожидаясь фейла в продакшне).

2) Каждая система в финансах попадает в неизвестную враждебную среду, в которой кишат, как мудро сказал когда-то один начальник госдепа, unknown unknowns. Совершенно невозможно их все предусмотреть заранее, поэтому приходится вести разведку боем.

3) Функциональное программирование, формальные методы и прочие мазохистские развлечения отдаются на усмотрение программиста, который иногда от этого даже получает удовольствие. Если, конечно. не просирает дедлайн.

4) Любая система может упасть, ошибки неизбежны, а потому за продакшном всегда должен следить специально обученный человек, который кормит собак и ничего не трогает. Когда человека нет — обязательно происходит какая-нибудь гадость, no exceptions. (Это касается и других высокорисковых областей вроде полётов в космос или ядерных станций).

Fri, Apr. 29th, 2016, 09:12 am
Герои деццтва.

Решил запостить список кумиров детства — мне тут пришло в голову, что он может отличаться от обычного. :)

Итак:

Наука:

— Леонардо да Винчи — первый человек, который знал и умел всё.
— Джон фон Нейман — второй человек, который знал и умел всё, и, наверное, самый крутой гений за всю историю (Эйнштейн нервно курит).
— Оливер Хевисайд — легко учиться математике в пятьдесят седьмой, на матмехе или там в Принстоне. Чувак выучил математику сам, по книжкам, и потом изобрёл векторный анализ!
— Алан Тюринг — универсальность машины Тюринга это концепция покруче теории относительности. Очень жаль, что в «Игре в имитацию» его биографию настолько запороли.
— Эварист Галуа — ВНЕЗАПНО открыл теорию групп и закрыл вопрос с уравнениями пятой степени, потом в рамках бурной юности неудачно поучаствовал в дуэли. «Живи быстро, умри молодым! — Пенсионный фонд Российской Федерации».
— Джон Конвей — придумал игру «Жизнь» — развлечение для интровертов на все времена. Как вы наверное поняли из списка, меня волнует концепция универсальности.
— Ричард Фейнман — ну кто не любит Фейнмана, получившего Нобелевскую премию за квантовую электродинамику, рисовавшего обнажённых женщин, пробовавшего ЛСД и вообще своего парня?

Бизнес:
— Билл Гейтс — кто в детстве не хотел быть как Гейтс?
— Джэк Уэлч — я восхищаюсь организаторскими способностями, которых мне самому совершенно не хватает. Человек, который смог реорганизовать целый General Electric — это примерно как обустроить Россию по сложности.

А как у вас?

Update: забыл тех, ради кого, собственно, писал пост. Норман Борлауг, творец зелёной революции, человек, спасший от голода миллионы — и Роберт Вудвард, гений химии, для которого не было несинтезируемых субстанций.

Sat, Feb. 13th, 2016, 03:02 pm
We have a go!

Взялся пописать немного на го.

Я искренне офигеваю от наглой тупости го. Это язык, где тупость и очевидность ценится, возводится на пьедестал и является объектом поклонения (если вы думали что это питон, то го превосходит его на десятичный порядок как минимум).

Ну то есть, для начала:

1) Там нет generics. Но есть указатели (со сборкой мусора, не волнуйтесь), и есть возможность, соответственно, передавать by value (c копированием) и by reference (что позволяет не выделять место на куче для каждой фигни — крайне нетривиальный вопрос в джаве).

2) Очень тупое ООП, напоминающее таковое в раннем перле (если кто застал). Ссылка на this передаётся первым аргументом в функции (выделяется отдельными скобками, чтоб никто не перепутал).

3) Нет и не будет map, reduce и filter. Роб Пайк сказал, что они не нужны. Вася, не выпендривайся и слушай песню про валенки циклом for, как в прошлом веке. Чтобы ни у кого не было соблазна написать их самому (что несложно), Роб превентивно сделал это сам, выложил на гитхаб и сказал, что использование вот такого функционального гейства discouraged. Мужик!

4) Да, кстати, ровно два вида коллекций в стандартной библиотеке — массив с неизменным размером (и немного синтаксического сахара для копирования данных в новый массив, если прежний стал слишком мал), и map. Should be enough for everyone, не так ли? Впрочем, Lua вообще обходится одной коллекцией, ничо, живут.

5) Иммутабельности тоже, разумеется, нет. Кто-то таки сделал персистентные структуры данных и выложил их на гитхаб. Правда, не вполне понятно зачем они нужны в отсутствие простейших функциональных примитивов. Разве что тренироваться в рекурсии, почитывая SICP.
При этом нельзя сказать, что это быдлоязык навроде PHP (хотя с первого взгляда может так показаться). В быдлоязыках (это не только PHP, хотя не будем показывать пальцем) помимо простоты хуже воровства существует ещё множество неочевидных corner cases, про которые нужно знать и обходить стороной. Тут такого нет — всё брутально просто и вырублено топором, оставлено только самое нужное (concurrency-примитивы входят в число самого нужного). Это внушает уважение. Вообще, Роб Пайк дал нам целый Plan9, и быдлокодером его считать нельзя.

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

Fri, Jan. 22nd, 2016, 10:34 am
Список русскоязычных старожилов ЖЖ, которые ещё что-то пишут.

http://ljpromo.livejournal.com/631505.html

Обнаружил себя на 23 месте. В августе этого года будет 15 лет как.

Вообще, хорошая штука ЖЖ. Даже немного грустно уходить в фейсбук. Надо хотя бы на Medium.

Tue, Dec. 29th, 2015, 01:04 pm
Ещё о будущем программирования.

Я долго думал, и тут до меня дошло.

Все математические выражения (начиная с 1 + 1) — это DSL. Их не должно быть в языках программирования общего назначения (в качестве части собственного AST) во-об-ще.

Вместо этого работать с ними нужно как с SQL: взял выражение из текстовой строки (да хоть из латеха), подставил параметры, выбрал режим вычислений, получил результат. Всё, что можно считать на GPU — будет считаться на GPU.

Сколько проблем-то снимается! Ни тебе возни с приоритетом операций, ни floating point errors, ни впихивания их в синтаксис. Программирование — оно же вообще не про вычисления, давно уже, с конца холодной войны.

10 most recent