RPI Zero scan button

While I was finishing wireless scanner and printer server I realised that traditional document scanning approach is not so nice from UX point of view.

I really like the way office scanners in multi-functional devices work. Normally if you want to scan you just load stack of paper into and put your email address. Scanner does the rest and in minute you’ll get ready-to-use pdf file in your inbox.

I was thinking about having button attached to RPI Zero which initiates scanning and document upload.

Read more

ML: Predict sequence of values

Let’s say we have nice a line built up of two damped oscillators as it displayed on the picture.

What if I say it’s possible to predict 700 values of this line using just:

  • 30 data points for feeding neural network(which is just half-period)
  • using just two fully-connected layers (hence it’s not deep network)
  • having just three neurons in whole network

Read more

Amazon Alexa Skill: London Bus Stop

Do you prefer to use warm, quiet, spacious bus? Me too
Every time I’m leaving home I have to get updates about time when next busses come to my bus stop. For that reason I literally keep TFL tab open all the time in my mobile

I’ve got freelance job to write Alexa Skill so I decided to play around with pet project. It’s London Bus Stop – custom Alexa Skill which helps user to get information about busses coming to saved bus stop.

Read more

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

Игры с neural style transfer

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

Первая реализация появилась больше 8 месяцев назад и доступна на github jcjohnson/neural-style – она написанна на lua, всё замечательно, кроме того что работает она вечность (и жрёт почти бесконечность памяти). На Digital Ocean с 16 swap генерация картинки 450×200 заняла около 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