dna

Случайный пост про Apple

Я сегодня понял, что моему основному домашнему компьютеру, 15тидюймовому MacBook Pro скоро исполнится 12 лет. Я купил его в конце 2008го года, с 4 гб памяти и 320гб жесткого диска.

За прошедшее время я:

1) нарастил памяти до 8 гб,

2) сменил 320 гб жесткий диск на 512 гб ssd накопитель,

3) сменил сгоревший блок питания,

4) заменил аккумулятор (сейчас держит час-полтора),

5) два раза менял т.н. «сабвуфер», третий динамик для низких частот — от старости рвалась мембрана.

Я использую этот компьютер в такой конфигурации каждый день для браузинга в Хроме, просмотра видосиков на ютубе, несложного программирования.

Чего не хватает:

1) не могу обновить mac osx выше 10.11.6 без левых хаков,

2) не работают tensorflow и pytorch, для них нужен процессор поновей,

3) для того, чтобы использовать Docker, нужно ставить старый маковский дистрибутив Docker Toolbox, так как новому Docker Desktop нужна mac osx 10.13+

4) довольно-таки minor point: на моей версии mac osx brew все собирает из исходников, бинарных файлов для этой версии ОС уже нет. Как следствие, обновление пакетов brew занимает очень много времени.

В 2016 году я купил 12тидюймовый MacBook, но использую его исключительно в поездках (или для поделок с tensorflow/pytorch), дома мне гораздо приятнее работать с 15тью дюймами экрана.

Collapse )
dna

Functional Programming in Scala

Закончил 11ую (монады) главу из 15.

611 commits 8,474 ++ 4,215 --

Пока книга производит очень сильное впечатление с одним «но»:

Большие проекты типа парсера, параллельных вычислений и property-based testing написаны в инкрементальном стиле и отсутствие стандартной имплементации до конца главы очень напрягает. Непонятно, куда движется мысль авторов. Мне было бы гораздо приятнее иметь простую, возможно, не конечную, имплементацию, но которая бы работала и с которой можно было бы играть.
dna

Парсер Джейсона

Я все еще читаю книгу Functional Programming in Scala, и порешиваю из нее упражнения и пять минут назад мой парсер Джейсона, написанный с нуля, без использования каких-либо библиотек, распарсил вот эту схему Джейсона, написанную на Джейсоне. Для меня это первый законченный проект парсера, который умеет парсить какой-то реальный язык (пусть и не полностью).

Тем самым завершив решение упражнения 9.9, которое я начал решать 21-го августа.

Для меня это все чорная магия, как все в свое время было придумано с нуля.
dna

Functional Programming in Scala

Я заканчиваю читать/прорешивать девятую главу fpis'а, про парсинг. Субъективно она у меня заняла больше времени и усилий, чем восемь предыдущих.

Мне была не совсем понятна структура классов, чего ради надо было делать
trait Parsers[Parser[+_]] {
  def run[A](p: Parser[A])(input: String): Either[ParseError, A]
  ...
}

Потом я понял, что алгебра Parsers имеет гораздо более user-friendly сигнатуру методов типа run() и призвана скрыть plumbing состояний, которыми оперирует Parser[_].

Еще одно открытие: никаких громоздких классов для Parser[_] писать не нужно, вполне достаточно описать тип возвращаемого и употребляемого состояния (например, type Parser[A] = S => (A, S) для подходящего S), и все определения низкоуровневых парсеров можно закинуть в имплементацию Parsers.

Да, парсер JSON (упражнение 9.10) еще не написан и, тем более, не тестирован.
dna

SICP, Functional Programming in Scala

Я дорешал SICP до двух последних секций последней главы — весь этот код компилятора/интерпретатора стал для слишком involving для хобби. Итого я решил порядка 87% процентов всех упражнений.

На этих выходных я начал решать упражнения из Functional Programming in Scala. Очень приятно вернуться в мир, где решение одного упражнения зачастую занимает не больше пяти строк. Книга написана отлично, упражнения make sense.
dna

Открыл второй мотосезон

Мотоцикл после четырех с половиной месяцев в холодном гараже завелся моментально.

Ощущение скорости притупилось — то, что в прошлом году воспринималось «офигеть как быстро, надо сбавить» сегодня на автобане казалось «да, быстро, но ничего страшного, вполне комфортно, можно ехать и дальше». То же самое по городу — смена полос в плотном трафике дается психологически гораздо легче, до такой степени, что после маневра кажется, что я поприжал впускающего. Скорее тревожные знаки, кмк.

Накатал за выходные 250 км по загородным дорогам и автобанам, по большей части, с навигатором от Google Maps в ушах по беспроводной гарнитуре. Уходит где-то 10% заряда батареи на 100 км, т.е. на дневной перегон в теории должно хватить одной зарядки.

Со вторым номером и 15кг кофром вышло в среднем по 4,5 л на сто километров, что проектируется в 400-450 км. на одном баке.

Один раз гугломаповская тетка перестала говорить и все, решилось перезапуском приложения и рестартом гарнитуры.
dna

(no subject)

Мне только одному кажется, что это очень круто зарифмовано


Она листает ленту ту же,
Петля на шее туже
На моей на Эйфелевой.
Вот теперь ей нужен ужин,
Устрицы, вино — серьезно?
Седалище не треснет?
Я прошу тебя, Сережа,
Проще рожа, реже песни!
dna

Нет у революции начала...

Коллега родом из Шанхая, с китайским внутренним паспортом жителя Шанхая. Со вчерашнего дня этот внутренний паспорт аннулируется, если провел за границей больше пяти лет. Без паспорта городского жителя (или паспорта иностранного государства) в Китае не снять комнату в отеле, например.
dna

Нассим Талеб

Прочитал Skin in the Game, понравилось до такой степени, что сразу купил остальные его книги и начал читать в хронологическом порядке. Сегодня дочитал Fooled by Randomness, начал читать Черного Лебедя.

Понравилось из обзора на Амазоне: его тексты похожи на разговор со слегка подпитым образованным интеллигентом за баром в зоне отлета аэропорта.