Pull to refresh

AndroCAD: Rise to Power. Электронщики и Android

Reading time13 min
Views14K
Когда-то один чувак произнес: “Государство — это я. Нет меня — нет и государства”. Это было 300 лет назад. Людвиг №16, Король-Солнце. Честно, без подданных он — никто.

На Хабре часто мелькают success-story “одиночек”. Про то, как одному парню стукнула в голову идея, и он решил создать программу/сервис/сайт. Он накопил мульён/взял кредит, собрал команду/нанял компанию, поруководил полгода/год. И вот, ОН сделал проект! Ай, маладца!

Я расскажу о проекте настоящего одиночки, с нуля до… Сам не знаю. Ни суксесса, ни фейла не наблюдается. В общем, занимательное чтиво для общего развития.

image

Далее: ОЧЕНЬ МНОГО БУКВ.

“AndroCAD — это я”

Звучит скромнее, и правдиво на все 146. Я — парень “на все руки от скуки”, по-русски — фул-стэк девелопер. Электронщик (схемотехника/проги для микропроцессоров) и программист (C++/C#). Глубоких знаний нет ни в одной области, но, мои софто-хардовые проекты широко используются в узких кругах.

И захотелось мне опять чего-то странного

В прошлый раз, в 2007, я чуть не отхватил кусок рынка, создав первый мобильный оффлайн справочник Москвы. В то время, 2GIS плутал в Великом заМКАДье. Остальные (Яндекс, Mail.ru, Google и т.п.) только начали создавать справочники, и все запросы у них делались онлайн.

Напомнить заманухи тех лет? “Суперпредложение! GPRS всего за $0.49 за 1 МБ”. Поэтому, мои “Желтые страницы Москвы для Pocket PC” имели все шансы на успех.

Я распотрошил 2 телефонных справочника для ПК и сграбил 2 сайта. Сделал самодельную базу данных на 90 000 организаций (т.к. SQLite жутко тормозил). Сграбил Google, Mail.ru и сляпал растровые карты по 100 МБ, с привязкой к GPS и адресам. Предусмотрел рубричные рекламные баннеры и другие хитроshop-ости, чтобы фирмы платили за первые места. Все было шустро и шикарно, учитывая коммуникаторы 2000-х (ARM 400 МГц, 3”).

Стать миллионером помешал мне Билл Гейтс, собственной персоной. Он закрыл Windows Mobile за баги и техническую отсталость. А я пилил проект по выходным и под настроение. Это растянулось на 2 года, вместо 4х месяцев интенсива. Я банально опоздал к раздаче слонов. Выкладывать свою первую и последнюю программу для умирающей платформы я не стал.

Полагаю, это мой самый крупный фейл. Проект не дал мне никакого развития. Для такого сложного проекта не требовались ни фабрики, ни паттерны, ни прочая ересь. Только планирование, логика и основы C#.

Осень 2014

Мне захотелось чего-то похожего, чего-то монументального. Выбрана доминирующая платформа — Android, я в ней полный ноль. Но вот тематика… Рынок переполнен “фаппи-краппи-бердс”, о которых забывают через неделю. Глянул на монитор — увидел системы проектирования для электронщиков: Altium, Mentor, Cadence. Общее у них только одно — конечный результат труда. Проекты экспортируют в формат Gerber-274, полученные файлы передают на производство печатных плат и техники.

Формат Gerber-274X доминирует на мировом рынке электроники.

image

Идея нашлась. Конечно, это не свистелка-тарахтелка с миллионом установок, а нишевой продукт на 100500 человек. Но достойную строчку в резюме он обеспечит. Компания Ucamco (создавшая Gerber), выложила в сеть 150-страничную спецификацию. С английским проблем нет — пахал на буржуинов в московском R&D.

Оставалось всего лишь построить

image

Первым делом нужно было выйти на IPO и распилить бабло придумать название проекта, купить для него домен и сделать сайт. Что и как — знал только в теории.

Название проекта.

Теперь мне ясно, откуда у приличных компаний такие идиотские имена — Tumblr, Flikr. Гребанные киберсквоттеры! Домены из моего списка в 15 пунктов были заняты, не использовались и были “припаркованы”. Многие с контактным мылом и ценой. Юх им с маслом! Ни копейки вымогателям! Пусть их дети голодают! Свободным был только AndroCAD.com. Впрочем, имя отражало суть: Android+CAD, по аналогии с Automotive+CAD (AutoCAD).

Покупка домена

Читал, что домен нужно покупать подальше от странных людишек наверху. Одним не нравится Github и Wiki. Другим — #Крымнаш и “Севастопольский проспект”. Результат: косо глянешь на кого — и тю-тю, доменчик. Особенно этим славится GoDaddy. Мой регистратор (InternetBS), положил на всех роутер и держит крупный русский торрент. Была альтернатива — регистратор wikileaks.

Бесплатное размещение сайта

С этим туго, несмотря на десятки вариантов. Некоторые дают на 3 месяца. Некоторые часто недоступны. Некоторые подгружают рекламу. Одного я поймал на подгрузке чужой Google-аналитики к моим страницам. Для чего? Х.III. Мой нынешний хостер (50webs.com) стабилен, имеет бесплатный тариф на год. Много ограничений, но для простого сайта сойдет. Через год сообщили, что дают еще один бесплатный год.

Чтобы сайт появился в интернете, нужно у хостера прописать имя своего домена, а у регистратора ввести DNS хостера. Уже через час сайт доступен всему миру. Контент написал сам (надеюсь вышло не хуже, чем у министра спорта).

Среда программирования

Несколько лет назад я пытался приобщиться к Android, но не справился с квестом “Собери студию разработки с разных сайтов, без мануала от Гугл”:

  • Выбор Eclipse и Java из десяти вариантов, в названиях ни слова про Android;
  • Ручная прописка системных путей (какой сейчас год???);
  • Докачка модулей с нерабочих https (нигде ни слова, что нужно заменить на http);
  • Ошибки, сбои, итд, и т.п.

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

Из-за этой “developer-friendly” атмосферы я охладел к Android до 2014 г. К тому времени, Гугл стал выкладывать полуфабрикат “Eclipse+Android” с инструкциями. На нем я и работаю. Сейчас Гугл забросил “E+A” и продвигает “Android Studio”. Первые версии Studio не могли даже правильно установиться и не переваривали примеры для Eclipse.

Возможно, Studio пофиксили, когда кое-кто оторвался от чтения “How Google Tests Software” и перестал задавать вопросы, про число мячиков в автобусе и как выбраться из миксера.

UPD: В соседней теме про Android Studio вижу, что анонсировали новый эмулятор и изменение кода при отладке. Круто, если и впрямь работает.

Собственно разработка

Я использую сотую часть возможностей Android. Без “паттернов”, без “деревьев”, без “сортировок”. Ничего из того, чем любят валить на собеседованиях. Программа должна стабильно работать, а больше она никому ничего не должна.

Через 2 месяца я сделал Demo Version. Еще через месяц я думал, что готов продавать Pro. Но вот защита хромала. Я попробовал обфускатор ProGuard. Он заменяет имена переменных на короткие “a,b,c” и оптимизирует APK. Как нибудь загляните внутрь. APK говорит: да я защищен, но видишь класс “SecretGenerator”? Поковыряй его! И еще посмотри активность “Validate” с кнопкой “Access” и рисунком “Unlocked”.

Забавы ради, я написал “Dummy Obfuscator”

Он рандомно переименовывает классы, активности и ресурсы.

image

Dummy — примитивная программа, но затруднит работу хакеров в разы. Интересный побочный эффект — из-за смены имен, все ресурсы получают новые integer-ID и перемешиваются при сборке APK. Это как fingerprint, чтобы отследить пиратов. Может довести Dummy до ума и в продажу?

Но “Dummy” не успокоил паранойю. Гугл использует для проверки покупок механизм LVL-защиты. Существуют инструменты, которые ищут в APK сигнатуры защиты и делают их подмену. Что уж говорить о хакерах? Ежу понятно, что усложнить им работу может только проверка на своем лицензионном сервере. В этом я полный ноль, поэтому я отказался от продаж через Гугл.

Я поместил в маркете только Gerber Demo.

Кто интересовался — шел на сайт AndroCAD и видел там на продажу Gerber Pro, с привязкой к одному устройству. За месяц китайцы и американцы купили несколько лицензий. Платили через Skrill и PayPal. PayPal НЕПРИЯТНО разочаровал, когда из $100 у меня оказалось $70, а затем $50. В чем фишка? Когда началась четвертая девальвация рубля, Пайпал запретил русским иметь валютные счета. Пришедшие к вам баксы они конвертят в рубли, и каждый день пересчитывают из них ваш баксовый счет. Рубль падает на 40% — баксов у вас меньше на 40%. Ладно у меня $100, а у кого было $10000??? У Skrill этой подлянки нет, но он занимает всего 20% в продажах.

Почивая на лаврах, я прикидывал, накоплю я к лету на приличный отпуск или придется в #КрымНаш, в компанию 1 500 000 невыездных чиновников, полицейских и военных? Жуть.

We need mooore gold, СРОЧНО!

Я встроил в сайт кнопки платежных систем, но подвижек не произошло. Написал о программе на десятке забугорных форумов – нулевой рост продаж.

Локализация приложения

В статистике Гугл указано, что основные инсталлы Gerber Demo идут из США и Индии, Россия на шестом месте. Из первой пятерки, Pro покупали только американцы. Я читал, что переводы сильно увеличивают приток юзеров. Я наткнулся на заметку о коллективных бесплатных переводах crowdin.com и cucumis.org. Вроде как, народ переводит чужие тексты в обмен на перевод своих.

Я решил получить немецкий и итальянский перевод. Я качественно перевел десятки строк в играх и прогах (EN->RU). В ответ — ухо от сельдя. В это время ко мне подкатил Алконост на англицком языке, хотели контакты того, кто в AndroCAD снимает видео и делает рекламу. Но я не выдал себя, да и платить $0.10 за каждое слово — это как то непорядочно. Я же не контракт о продаже родины нефти хочу перевести!

Я поместил объяву, что за перевод подарю Gerber Pro. Откликнулись Италия, Франция, Аргентина. Когда я заливал перевод в Плэй, то заподозрил неладное и попросил скриншоты, как это выглядит у авторов. У них — латинский алфавит со щепоткой нативных символов. При переносе они искажаются или пропадают. Я изменил “язык по умолчанию” в блокноте и браузере и все совпало. Переводы не повлияли на “инсталлы”, так и осталось по 2-3% на страну. Вывод — чушь все это.

В ожидании Большого Бабла

Я потихоньку пилил Gerber Viewer и остальные просмотрщики. В мире существует 25 CAD/CAM/EDA/САПР систем и каждая экспортирует Gerber как хочет. Сейчас без ошибок отображается 80% схем из дикого интернета. Можно пофиксить еще 10% и это предел, т.к. в Android существует баг отрисовки.

Тем временем, в отделе продаж настала тишина. 10 лицензий в месяц – это не бизнес! Гугл уведомлял, что 20% юзеров смотрят видео AndroCAD на Youtube. 40% посещают мой сайт. Число установок Demo еженедельно растет на 7%. Но, где деньги, Зин? Где фидбэк?

Юзеры не хотят говорить, что их не устраивает?

Нужно осчастливить их насильно! Я внедрил в проект аналитику Flurry. Другие сервисы хотят денег уже за трекинг 1000 юзеров, Flurry бесплатен для 100 000. Есть 2 подхода: Google дает “среднее по больнице”, Flurry дает поведение каждого юзера.

Уважая платных юзеров, я встроил в Pro только антипиратские маячки. В Demo отсылается аналитика на каждый чих: какие кнопки жмутся, какие активности показываются, какие файлы открываются.

image
Big brazza is watching ya!

Оказалось, что Flurry теряет четверть юзеров и сообщений. Иногда обновление данных идет с задержкой в день. Но все-таки Flurry помог. Глядя в логи я понял, что переоценил человечество. Что может знать об английском человек с локализацией “es_MX”, “pt_BR”, “nb_NO” или “vi_VN”? Таких 70%. Как они смогут сказать мне “Hey, I wana yo Gerber Pro”? Никак!

Вторым ударом стал лог использования Gerber Demo. Лишь 20% юзеров прямо лезут в файловый диалог и работают с проектами. Чаще всего программой пытаются открыть… JPG файлы. Затем идут mp3, pdf, zip/rar с Герберами. 10% пытаются открыть схемы каких-то CAD-ов. 50% юзеров вообще бесцельно бродят по файловой системе.

image

Электронщики являются каркасом цивилизации. Но как же они глупы! Не знают, с какими файлами работают на работе? Думают, что после установки Demo совершится чудо и на планшете появятся их проекты? Чудом могут исчезать только часы с фотографий! Я понял, съемки луноходов и марсоходов делают в Голливуде моя концепция продаж PROвалилась.

Я поместил в .APK тестовые файлы Gerber, они копируются на карту памяти при первом запуске. Даже после этого, 50% юзеров не смогли открыть хотя бы тестовый файл. Некоторые упорно тыкали в %holiday%.JPG и %manual_androiddevice%.PDF. Фейспалм и занавес.
Хабралюди могут насоветовать, что нужно поставить фильтр файлов, а не обси чернить людей. Основные CAD-ы дали мне 40 расширений файлов. Читая логи со всего мира, я понял что имена слоев делаются левой ногой или по решению Съезда Партии XXVIII Cозыва. Есть даже TXT, однобуквенные и без расширений.

Сделанные на тот момент выводы

1. Gerber Viewer работает стабильно. Осталось допилить парсер.
2. Моя программа невольно стала тестом настоящего IQ.
3. Нужно продавать программу через Google Play, иначе денег мне не видать.

Пришлось спуститься с небес на землю, расчехлить клавиатуру, обрезать Gerber Pro до Gerber Light и написать лицензионный сервер

Ага. Прожект манагер, дизайнер, программер, тестер, переводчик, бухгалтер. Все в одном флаконе. Теперь к этой гоп-компании добавился бэкенд девелопер. Ну че, где наша не пропадала?

Собственный сервер с нуля – это круто. Деплой, имажес, маппинг, Линух, ВДС, ПХП и прочее. Я собрался потратить на изучение месяц, но случайно увидел, что есть простой выход.

Некоторые “облачные хранилища” могут выполнять ваши скрипты на своей стороне (модный BaaS — backend as a service). Правда, ваш код и данные будут доступны посторонним. Если там прохлопают ушами, то ваши данные сольют хацкеры. Вы также можете лопухнуться, если не продумаете “клиент-сервер” и доступ к таблицам.

Повертев бесплатные варианты, я остановился на Cloud Code от Parse.com. В Parse можно бесплатно обслуживать средний проект: 20ГБ под базы, 30 запросов/секунду.

Бэкенд писал на уродском JavaScript. Каждая переменная — “var”. Где“string”? Где “integer”? Почему для строк можно использовать одинарные и двойные кавычки???

К сожалению, облака не дают готовой среды разработки. Нужно мудрить самому. Eclipse, Webstorm, Sublime Text отказывались проверять мои потуги. Никакого “autocomplete”, только хардкор! Я писал JS-код в NotePad++. Дебаггера у Parse нет. Код отправляется в облако, на той стороне — проверка синтаксиса. Затем Android-клиент делает запросы и отлавливает ошибки от сервера.

Техподдержка Parse — никакая, мои вопросы по работе и безопасности остались без ответа. Сперва я думал, что там раздувают щеки от ЧСВ, но сейчас полагаю, что они не очень компетентны. Табличный decrement() у них не работает, а это базовая функция любой БД. Недавно их инструмент (parse.exe) перестал работать и потребовал автообновиться до самой новой версии. Новая тоже посчитала себя старой. Рабочая версия нашлась лишь в закоулках их сайта. И с этим столкнулись все, кто пишет для Cloud Code!

Чтобы чуть обломать тех, кто сунет нос в мой бэкенд, я использовал обфускатор JavaScript. На рынке их полно, но все или плохо работают или требуют денег. Есть бесплатная библиотека Yahoo.Yui.Compressor для .NET, она удаляет все комменты и переименовывает внутренности. Нужно всего 3 строки в проекте C#.

Пока я возился с Parse, у меня возникла мысль: раз 80% электронщиков не понимают, как скопировать проекты на Android, нужно сделать мостик между Windows и Android. Я сделал FastLane — примитивную программку на C#. Выбранные файлы сжимаются, шифруются на компе и копируются в облако. Cloud Code удаляет файлы, когда их забирает Андроид.

Parse отличился и здесь, они выпустили свой SDK под .NET 4.5. Хм. Представьте, что Яндекс Диск или Google Drive дают вам программу на 2 МБ и говорят: не забудьте установить .NET 4.5 на 50 МБ. На запрещенном Github я нашел код для .NET 2.0, работающий через REST-запросы, его и приспособил.

Думал, что юзеры оценят FastLane. Ага. Никто не продвинулся дальше нажатия кнопки “Check status”. Да и фиг с ним, зато теперь я гордый обладатель собственного DropBox. Вау!

Наконец, я сделал проверку лицензий в бэкенде, облачные таблицы юзеров и пиратов

Я выложил Gerber Light в продажу. “Самолет с баром, бассейном, кинотеатром, блэкджеком и стюардессами”. Да, я переборщил, но все же, как взлетит проект? Был уверен только в одном — программу будут покупать, пока существует Android.

Через два дня я заглянул на Parse и увидел регистрацию первого юзера-Light. В Google Play денежная статистика была по нулям (отстает на 1-2 дня), но в Google Merchant я увидел 2000 песо от колумбийца. Оказывается, там делают не только кокаин и кофе! Затем подтянулась Америка и Европа. Через месяц набралось полсотни юзеров, из них 40% не оплатили покупку. Я думал, что у них пустые кредитки, поэтому платеж не прошел.

Свет на ситуацию пролил японец. Он купил Light, но она крашилась, хотя Demo работала. Иероглифы не причем. Оказалось… @#$% Гугл! C Android 5.0 они сделали “deprecated” bindService, который используется в механизме покупки! Т.е. 5 лет всех все устраивало и тут на тебе. Я собирал проект с SDK и Tools годичной давности, для targetSdkVersion=«21» / Android 5.0.1 и нигде нет даже ворнинга! Кто не тестировал покупки на 5.0 — тот незаметно попал на бабки.

Еще 10% юзеров отвалилось из-за того, что они присылают “license response” с довеском. Оказалось, что Гугл формирует “ response:extras(VT, GT, GR)”, хотя по логике должно быть “response|extras(VT, GT, GR)”. Гугл не дает примеров и не пишет о двоеточии. Мой BaaS, из-за message.split(‘|’), считал юзеров пиратами. При тестах, Гугл никогда не пошлет разработчику “response:extras”. Разработчик может лишь случайно наткнуться на живого юзера с довеском (напомню, их всего 10%).

Я пофиксил и начал статистику заново. Сколько мячиков поместится в автобусе? Сколько электронщиков на планете? Скольким понадобится программа? Пока поле битвы скрыто warfog-ом.

Конкуренты

Недавно, в отзыве один американец написал, что из-за ограничений Light ему пришлось купить Pro, но все равно он ставит 5 stars, т.к. другая программа работала не корректно. Сперва я хотел ответить “Сам… такой”, но потом понял, что он имел в виду совсем другое.

В Google Play нашелся “Gerber Viewer for Android” от норвежского парня Нгу Йена. Расследование показало, что его программа была в Google Play в 2013. Затем он удалился из-за низкого рейтинга. Поэтому я и не увидел конкурента! И вот в октябре 2015 Ngu Yen вернулся. Его приложение отрисовывает 30% сэмплов, никаких изменений с 2013. В Android отсутствуют некоторые функции для десктопов, поэтому логика и математика Gerber — нетривиальные. Я уверен, что Нгуен не продвинется, а скопировать мои решения… Я предвидел это.

image

В ноябре, один нехороший человек поставил мне двойку и несправедливый отзыв. За те же самые огрехи он поставил 5 звезд Нгу Ену. Разрешите представить: Alan Royston, дружок Нгуена. Сладкая парочка окопалась в Sogeti. Зря они так…

Ну и напоследок, “поток сознания”

Начиная эпопею AndroCAD, я хотел застолбить весь мировой рынок CAD-систем для Android. Я скромный парень, мне мало не надо. Я сделал наброски к нескольким системам. Продвинулся с Altium Designer и Eagle.

Альтиумисты — сами себе злобные буратины. Файлы схем и печатных плат они хранят в пяти форматах. Я занялся простейшим — текстовым (ASCII). Выяснился подвох — компоненты в схемах представлены макросами “нарисуй мне тут коннектор”, как рисовать — не указано. Потратил уйму времени, на GP выложил черновой набросок. По инсталлам, Altium был почти равен Gerber, но по аналитике Flurry, юзеры Altium в разы глупее юзеров Gerber. На каждом углу я написал, что необходима конвертация в ASCII. Но из тех, кто скопировал Altium-файлы на Андроид, 90% пытаются открыть бинарные проекты. Если компания Altium не поможет, то лучше пристрелить проект, чтобы не мучался.

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

Другие CAD-ы имеют сложные структуры. Некоторые упаковывают проекты в разновидности zip и “файловые системы в одном файле”. Если есть желание — вперед и с песнями. Но, ИМХО, это не окупится. У крупнейших CAD-ов всего по 200000 юзеров. Только сами CAD-компании могут получить прибыль, создав проект для Android.

Немного лирики

Благодаря Хабру, я узнал о программе FbStart (Facebook Start).

image

Они дают мобильным стартапам купоны на платные услуги от спонсоров, их список постоянно растет. Если вы разрабатываете не свистелку-тарахтелку, то есть все шансы получить одобрение, т.к. это не конкурс, а поддержка интересных проектов для iOS и Android. Сомнений в победе не было, ответ я получил через неделю. В рамках Bootstrap Track дали виртуальные услуги на $20000.

Среди прочего, бесплатный денежный процессинг от Braintree и Stripe на $50 000 каждый. Stripe не работает с Россией. Braintree не работает с частниками. В общем бесполезняк, нужно как-то избавиться за символическую сумму. Самое интересное — кредит Parse.com на $5000, но его могут зажлобить. Я прошел по ссылке на получение кредита и заполнил анкету на Фейсбуке, в ответ тишина. Через неделю заполнил еще раз и на следующий день — письмо Parse, о том что деньги зачислены.

Итоги

На AndroCAD затратил 4 месяца рабочего времени, растянутые на год. Прибыль? Миллионером точно не стану, проект окупится через 2-3 года. В общем, отполирую Gerber и начну искать full-time job.

Какие выводы из моей писанины?

1. Не боги горшки обжигают, а солнце. Есть идея и хотите ее реализовать? Используйте методологию JDTFJ.
2. И один в поле воин. В переписке я использую: “We”, “Our company”, “We would like to enslave this world, but our team have only 3 developers”, “Имя нам легион, ибо мы…” Ой! Сейчас набегут люди с ПГМ. Во первых, “Мы” звучит солидней. Во вторых, у меня список задач для спецов разного профиля. Я не пройду ни одного собеседования по этим профессиям, но я сделал всю работу, не влезая в дебри. Я говорю “Мы” с полным правом. Но против одиночки играют релятивизм и пространственно-временной континуум: что трое сделают за один месяц, то один сделает за три месяца, ну и т. д.
Tags:
Hubs:
+22
Comments13

Articles