First experiments with ML using Keras

I'm still exploring the new world of machine learning.

Recently I discovered few interesting things about it:

  • It's not only for math nerds. A lot of tools are on market, you just have to understand how to use them
  • There are a lot of application of ML, it might be hard to see that from the first sight but it because it's a completely new way of solving problems you probably never thought about
  • Investors LOVE it, any project which has AI/ML in the description make it more attractive for investments
  • It's the next Big Thing as you might see already
  • A lot of human's mechanic work can be replaced with AI
  • In terms of scientific researches I see two kind of them: 1) Very deep math used for building ML tools 2) Adaptation of existing tools, model configurations, best practices for new applications

Hence, I started experimenting with it. First of them was Prisma-like chat bot for Facebook which uses open source implementation of neural style transfer algorithm. Then I made AI-powered visa sponsored job search engine which discovers companies' websites and walk over job listings to extract vacancies. It uses CNN for binary classification to recognise job listings.

Read more

Эксперимент: Guess City 360°

feature-nyc-or-chicaco-1024x500

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

На этот раз расскажу про Guess City 360 - игрушка (что для меня очень не свойственно) для путешественников, для тех кто хочет ими стать. Диванные путешественники тоже подходят. Игра очень простая - каждый раз вы оказываетесь в совершенно случайном месте на земле и ваша задача - понять где вы, гуляя по улицам, читая таблички, рассматривая архитектуру, прохожих, машины и тд.

Read more

Игры с neural style transfer

Последний месяц для саморазвлечения в качестве сайд-проекта играюсь с neural style transfer - нейронные сети, переносящие стиль с картинки на картинку. Многие знают это как приложение Prisma. Видимо создатели тоже читают блог creativeai :)

Первая реализация появилась больше 8 месяцев назад и доступна на github jcjohnson/neural-style - она написанна на lua, всё замечательно, кроме того что работает она вечность (и жрёт почти бесконечность памяти). На Digital Ocean с 16 swap генерация картинки 450x200 заняла около 2 минут, сейчас уже не помню.

Read more

Мой сетап

Основная машина

ASUS x305 - в принципе устраивает во всем. Как всегда хотелось бы полегче

  • 12Gb, 256Gb SSD, i7
  • Британская раскладка клавиатуры, поэтому по началу было тяжело.
  • Тачпад говно, но не так плохо как в ноуте от Юлмарта. Как миниум два пальца распознаёт при скролинге по обоим направлениям
  • Батарейка нормальная - заряжается за час, хватает на 4-6 часов
  • В целом вроде не плохая машинка, выглядит довольно крепко

Read more

Типичный REST серевер на nodejs

wow-dog
Для человека уставшего от многословности, тяжеловестности и вязкости/неповоротливости существующих общепринятых платформ nodejs с coffeescript выглядит просто глотком свежего воздуха.

Динамическая типизация, милион библиотек на каждый чих, приятный python-подобный синтаксис, очень лаконичные конструкции - все это хорошо, пока проект не вырос до 10 строк кода. Дальше начинается болезненная организация кода. А для людей избалованной статической типизацией и fail-fast на определённом месте мир с розовыми пони превращается в ад, в котором если не протестировал каждую строчку - не мужик.

Read more

Руксы в Лондоне: English emotions

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

Может показаться, что английский очень сухой язык, особенно в плане эмоций. Действительно, используя только «cool», «nice», «good» далеко не уедешь.

Read more

android kotlin gradle.build

Here skeleton of gradle.build script for madness people who try to code Android apps using kotlin language.

This gradle script uses another structure of subdirectories, more simple I would say. There is no useless "deep" folders like src/main/java, src/main/assets, etc..


buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.10.770'
}
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'idea'

repositories {
mavenCentral()
}

dependencies {
compile 'org.jetbrains.kotlin:kotlin-stdlib:0.10.770'
}

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
minSdkVersion 15
targetSdkVersion 21
}

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['java', 'kotlin']
aidl.srcDirs = ['java']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}

Read more

Android: отправка письма дефолтным клиентом

gmail-app-with-predefined-text-via-mailto-intent

Задача: отрыть дефолтный email клиент у пользователя на устройстве с предустановленным заголовком письма, текстом и адресатом.

При этом не должно всплывать окно IntentChooser, предоставляющее варианты каким приложением воспользоваться для написания письма. Пользователь должен сразу увидеть его дефолтный email клиент (и это не всегда gmail). Тысячи ответов на StackOverflow показывают диалог, схожий с "share". Некоторые товарищи в лучшем случае предлагают фильтровать по ContentType и другим косвенным признакам того, что это почтовый клиент, хотя достаточно часто все равно просачиваются приложения вроде Evernote или даже пресловутый bluetooth. Иногда предлагают не переносимые решения, типа использование курсора для получения доступных email клиентов.

Read more

Google Play IAB: боль

\"billing-not-supported-on-publisher-account\"
Казалось бы, гугл стремится зарабатывать на продажах приложений и айтемов внутри них, для этого поддерживает магазин в котором распостраняются приложения. Логично предположить, что он делает все, чтоб упросить процесс приёма денег у пользователей и увеличенить конверсии (на самом деле нет, показывает опыт). Это такой понятный клон iTunes для экосистемы Android.

Но не все так просто. Давайте посмотрим мучения разработчика, которому нужно добавить покупки внутри приложений(In-App Purchase) и протестировать их. Приведу только базовый сценарий - в зависимости от приложения и амбиций может быть много разветвлений

Read more

Android: сниппет для тостов

Toast прекрасный способ оповестить пользователя о чем то, не блокируя интерфейс. У них можно завадать отзывы, показывать в разных местах и даже делать кастомные view и все это с помощью fluent interface. Уверен, что читатели если и слышали о таких расширенных возможностях, то никогда не пользовались этим. Самый стандартный юзкейс - показать текст.

По моему опыту часто нужно показать toast как результат не успешной процедуры, которая обычно выполняется в фоне в отдельном треде или воркере, т.е. не в UI. А для этого приходится писать лапшу только для того, Toast.makeText(...).show() выполнился в UI треде.

Для этого набросал сниппет, который уменьшит количество кода и ошибки, связанные с вызовом тоста из нетого потока и банальному забыванию метода show().

Было

Toast.makeText(this,
getText(R.string.messages_storage_invalid),
Toast.LENGTH_SHORT).show();

Стало

toastShort(R.string.messages_storage_invalid);

Причем метод можно вызывать из любого потока. Показыватся тост будет из UI треда через runnable

Read more