Here comes August report.

Total hours spent

big picture hours spent
Image is resized. Click for full resolution.

projects hours spent
Image is resized. Click for full resolution.

Summary


This month I ceased further development of multiplayer mode of asteroids (but released its single player mode for free with no ads on Google Play, it's also open source), in order to pay full focus to WeChat's mini-program app I'm developing under code name heatap. You can see more detail for both things at its corresponding section.

When I dig the rabbit hole into mini-program development. There are more administrative tasks like applying for operating license i.e. ICP, and WeChat's micro payment. It requires on-going attention for application to be complete. I have to coordinate and tell my partner to prepare for government/auditor phone call along the step of vertification, and documents preparation and submission. It's new unwalked-before path for me thus time spent on these non-productive tasks accumulated to almost 25% for this month alone.

Look at it in a good way. I finally nailed down company's basic banking operation. For example, one of verification process as part of WeChat micro payment feature to be activated (ability to receive payment via API call, QRCode from customers, and other options that WeChat offers) requires you to do wire transfer of small random amount of money to Tencent. It seems to be simple, but there always be processes, steps, tools and procedures to get it right especially in China.

Administrative tasks occupy large chunk of time in this month, and they are not just misc stuff as I categorized it like in previous months anymore. So I take this chance to improve how I categorize type of tasks I've done, and how I track my time on Google Sheet. More detail in its corresponding section below. Administrative tasks now includes both server configuration and maintenance, and also tasks related to project in non-productive way i.e. managing product in non-coding way, legal/license, documents, etc.

In short, I also pivoted my business strategy and plan to cover lesser fields allowing me to be able to manage and retain my technical skill towards technology/programming language I use to develop them without spread too many focus on different directions. This means I will pay less attention to certain things. Read on for detail.

Adapted and Improved Hour Tracking


Now I have in total of 7 categories to categorize each individual tasks.

tracking hour category

I can expand it via dropdown list on Google Sheet.

tracking hour expanned cateogry dropdown

I do this to limit my tendency to add more category unncessary (freewill). So having a limited options to choose from, and being locked down on that is better.

Each category has its own fixed color in my Google sheet now as well too.

You can do this by right click on particular cell, then click Data validation... then enter information similar to what I have below.

setting drop-down list items

One major caveat for now is that I cannot figure a way to do this for entire column by effecting only odd row. Thus I have to copy paste the result that we did above to every other rows as well. This is reasonably ok as I do it once per month to categorize and mark each task with specific project. But in my mind, it could be better.

Also, I improved two main charts of Total hours spent at the top of this report. Changes are as follows

  • Project hours spent bar-chart is sorted in descendent order for most hours-spent project down to least one, along with hours-spent percentage for that month
  • Big picture hours spent is no more in 3D style as it might block some texts to show up on section of pie chart itself

heatap


As I decided to cease development of multiplayer mode of asteroids to pay full focus on mini-program app which is heatap, I've found interesting things and I'd like to share.

During 48 hours prototyping, I keep thinking about map and location. Having seen Hoodmaps by Pieter Levels as well, I can say it plays the huge influencial part of it. I want to make it available and operatable under WeChat's mini-program which has limited features/integration (under JSCore, cannot use window, document, etc object for example) by focusing on Chinese territory without dependent on external Western services; usually blocked by Chinese Great Firewall (GFW). The project is not done yet, and I continue to complete the existing features, also might add something else along the way. I got MVP (Minimum viable product) within 48 hours, but also continued after the 1st week til the end of the month which included 3 times of iterative of UI, implementation for both front-end and backend, refinement, bug fixes, thinking/discussing with my Chinese partner about additional features & how to monetize in the future. That covers timespan for roughly 3 weeks to get to the current point.

Concept is Paint & Pin or PP (I might use PP as the project name when launch). That said you Paint to mark certain area, and Pin to mark specific location with interesting comment.

Chinese people often call P when they refer to PhotoshopTM i.e. You P him in this photo? That's why I want to play around with this word-playing to align with the culture a bit :P

Let's see below.

heatap general interaction heatap pin mode

heatap zoom in/out heatap paint mode

From left to right, top to bottom.

  • General interaction
  • Pin mode
  • Zoom in/out + Panning
  • Paint mode

Here a clear screenshot

heatap screenshot
Image is resized. Click for full resolution.

Don't mind English UI for now as I've planned to localize it to Chinese with the help from my partner.

Tencent deviates away from native ecosystem. One good example is WeChat has to remove its tipping feature from its iOS app. Android is not affected.

Tencent tries to push web apps into its ecosystem; WeChat platform. I see this as opportunity to quickly tap into Chinese market. Its mini-program is the prime flagship at the moment. It's getting improvement, more API support, better IDE, and lucrasive of traffic as seen from growth of WeChat platform and report of 40% of traffic for Mobike coming from its mini-program alone (I got this from attending Techcrunch Shenzhen 2017).

WeChat mini-program is now 9 months old. I ever remember that I was following this platform closely. I still think that I didn't act fast enough. The platform is quite old, still with future potential. The best time to tap into platform is in the past, the second best time is now.

Not to mention that I see web technology or web development is the fatest way to actually push product onto market and get feedback to iterate. With the resource I have in my hands right now, this is more manageable direction and quicker way to pursue. More detail about pivoted strategy and plan in strategy section.

heatap-admins


Not just the development for the project itself. Administrative tasks are quite time-consuming to handle, and required on-going attention.

Administrative tasks for heatap span into both server configuration, and mainly license aquiring. Along the way of development, I know more requirement I need to overcome. If you want to receive payment from customers, you need Wechat micro payment. If your app communicates with your server, your domain name needs to get approved by Chinese government; the Provincial government branch of the Ministry of Industry and Information Technology; which means you have to get ICP license.

Getting WeChat micro payment feature enabled for your mini-program app, you need

  • ICP license (wait for no more than 20 working days)
  • Approval from audit team (firm outsourced by Tencent) with 300 RMB fee / time (fast, within 1 working day and can be in same day)

icp license example 1 icp license example 2

Every ICP-approved website need to accompany such ICP number at the bottom of the page.

After you got those twos done, then you're able to begin another process to actually apply. In short, micro payment requires ICP license number (after approval) to be filled in application form and firstly verified by audit team even before you actually apply for it.

The step to get ICP license requires effort and on-going attention. You can choose to do it manually (more time in research, and going through constant changing requirement from government, and you better need to know Chinese or get some helps), or just hop in and use QCloud (not affiliated) which is Tencent's Cloud service that provided tight integration support for your mini-program app.

I didn't go on with former option, but if you decided to go with latter option then ...
You have to do the following to acquire ICP license

  1. Fill information online and submit

    This includes normal filling online information, and also printing out legal document then stamp seal with your company stamp in number of copies to be sent to Tencent's Audit team in Beijing.

  2. Take a photo with Tencent's backdrop

    You can choose to let Tencent send you a backdrop (China only), or go to near photo-copy shop that will carry out the task and submit information for you.

  3. Tencent submit your information to Government

  4. Wait for approval (government might call you)

icp steps

4 steps in general to acquire ICP license

icp steps waiting less than 20 days

One of latter step is to wait for Chinese government to review and approve your ICP license application

When you log in into QCloud dashboard, be sure to check out beian which will take you to the beginning of application process for ICP license. You will need that link, it's not that super easy to find if you didn't know Chinese.

I'm still waiting for this, it's getting close to 20 days I have to wait. I hope things are ok.

Also we definitely need to host our server in China mainland (not even Hong Kong) to have much lower ping, and dodge the possibility of effect from GFW that might have towards server's Internet request.

server ping china mainland vs hongkong
Click on image to go to the tweet

I tested it. You have just that ~8ms ping. You will get >100ms if hosted in Hong Kong although Shenzhen is pretty much close to it. I suggest to migrate your host to be within China mainland. No matter you use domestic cloud or VPS service (in which you will need to do research and find your solution if not Aliyun or QCloud). This will shift your mindset for good to not rely on Western API services which are likely to be blocked (and not stable for DNS request) although however you can get away for Internet requests that really need to go outside mainland by using VPN (recommend Shadowsock) on your server.

Serving Chinese users. Don't expect most of them to use VPN to connect to websites especially in this case we serve users under WeChat app. Users want to access content on WeChat fast. VPN slows it down; especially photo contents.

All in all, finger crossed for my ICP license approval.

strategy


I pivoted and changed my prioritized focus after realizing that I should in the latter of the month. Maintaining knowledge of too many technology and programming languages spread myself too thin, and I really felt it affects my ability to go deep in certain area. I felt that I cannot do the task with extremely high confidence, I stuck in mid-to-not-end range in additional to going back and forth between un-focused technology to build too various diffent products (which are games, Internet service and apps) on too many platforms (in un-focused way). Too much, and I have enough.

So the following is technology and programming language I will be paying focus to and will be basing off almost entire time starting in September.

  • Web tech focusing on WeChat's mini-program

    Use Javascript, NodeJS, CSS. Cover both backend, and front-end. Not to mention tools/applications that operated or run on server side such as piwik, MySQL, redis, sqlite, and much more or any related tools to get the job done. I plan to improve my skill on front-end which is skill i'm not good at.

    Although the product built with normal web tech can be expanded to reach users on website. Just not now. Focus will be on mini-program.

  • Games on Android market

    This is all based on Kotlin + libgdx. You can check out my previous projects built with it at blockbunny, omo, asteroids, and raceplant. With combination of them, it's all possible for Desktop, iOS, and Android platform with one code-based via Kotlin. However Chinese ecosystem in smartphone market share (1, 2, 3), close-knit of Kotlin to Android platform, and my interest to also explore world of open development on Android more (apart from previous experience with iOS) thus this is the way I strongly believe is the proper move to go for long term for China market.

    What's about Apps? Apps have least priority for now. It will be for learning purpose, or experiment with the market.

Apart from that, here is my commitment to it.

android commitment

Click on image to go to the tweet

When something has more attention, something else will has less. So I pay much less attention, or not pay attention to the following

  • iOS
  • 3D type of game

    If pursue, you need to do 3D art. Doing so will spread me too thin. So I limit scope to only 2D type of game at the moment.

  • Music

    No time left to develop this skill during this long period of time as I ever reported back in June that I started to learn how to make Chiptune Music via milkytracker, and released a very short track for OMO back in July report. If I need one for my games, I will collaborate as I have someone in mind already.

So the question is how can I balance and retain the knowledge of both web tech, and Games. Read more about it at libgdx-SO section.

libgdx-SO


During these times, I really focus on developing mini-program thus heavily utilize web tech. I retain knowledge of libgdx, and kotlin via answering questions popping up on Stackoverflow. My primary goal is not to gain reputation point on that website, but just for myself. Reputation point is like an energy or satisfying moment for reward.

so reputation development so reputation current score

Clearly, my current reputation is not that high. I'm not in for reps :)

Every early morning, I go there on SO then only check libgdx tagged question. Actually, I subscribed to its newsletter to send me daily digest every day. It will send only new questions to you at around 6.00 AM (local time) via e-mail. So at least in 1-2 hours (I try to be better to answer within 1 hour) but depend on how hard of troubleshooting of that question is.

Answering someone else's question will open you to a new set of problem domain, or stuff you never want to do before. With willingness to help, you've to explore those APIs and come with solutions to solve such problem. Gradually know more about your toolchain; expand ability to solve your own problems in the future.


That's it for this month report. I hope you enjoy my sharing for everything possible things I've touched and worked on so far.

If you have a chance to check out any project above, feel free to let me know what you think. I love feedback, and discussion, hit them up via comment section down below. Or if you don't see comment section, hit me up on twitter @haxpor or email haxpor {at} gmail {dot} com

You can let me know via e-mail if you want to test heatap out before I finally launch it.

Happy coding!