Friday, October 24, 2014

How to leave 5 star review in Google Play Store

If you would like to support my continuous development work in JStock (Trello board for JStock Android and Trello board for JStock - Free Stock Market Software), leaving 5 star review in Google Play Store is the best thing you can do.

Thank you for your support.

You may leave a nice 5 star review in Google Play Store, either through Android device, or desktop computer. The below shows how rating should be done.

To get started, please click on https://play.google.com/store/apps/details?id=org.yccheok.jstock.gui&hl=en

Android Device

Step 1




Desktop Computer

Step 1





Step 2




Thursday, August 21, 2014

Do you like new dividend page design?

Do you like our new dividend page design? If not, please let us know how we can improve it. Thank you! (Note : New design is the one with blue background header and white color text)











Saturday, June 28, 2014

Google Finance is now being supported for 6 countries

I'm extremely happy to announce that, realtime Google Finance is now being supported for countries US, UK, Singapore, Taiwan, China and India. For more information, please refer to http://www.jstock.org/help_real_time_info.html#delay

If you like our work so far, a little donation does show BIG encouragement. Thank you! http://www.jstock.org/donation.html

Very soon, we should see realtime Google Finance being supported in JStock Android as well. Porting work is still in progress.

Sunday, June 01, 2014

Upcoming development plans for June and onward

Although we have 3 releases in May, the development progress is some how sluggish. Here's what I wish to accomplish in next coming months.

Support both Yahoo! and Google Finance
Currently, only India is using Google Finance data feed. There's technical barrier which holds us to make Google Finance work for other countries.

Our core stock engine is RealTimeStockMonitor. If our watchlist contains both United States (assume Google Finance is picked for United States) and Malaysia (assume Yahoo Finance is picked for Malaysia) stocks, JStock won't work. RealTimeStockMonitor only able to support single country stock server factory, not multiple countries stock server factories.

Re-architecture the entire RealTimeStockMonitor to support multiple countries stock server factories is essential

Displays multiple countries watchlist in single page
Ability to display both United State stocks & Malaysia stocks in single page.

Split & merge stock in JStock Android

Revise UI/UX for dividend page in JStock Android

Thursday, May 29, 2014

Launch chart and news info from portfolio page directly

Previously, if we were in portfolio page, in order to launch chart and news info page, we need to switch back to watchlist page. In upcoming release, we are going to add an info button in detailed buy/sell info page. 

With such newly added button, you may launch chart and news info page, without having to leave portfolio page.


Wednesday, May 28, 2014

New notification UI for JStock Android's background alert feature

For users who have access to "background alert" feature, we had fine tuned notification UI. We had implemented multi-line notification. On the left hand side, it will be the new upcoming UI. The right hand side is current old UI.

This feature will be available in next few days. Stay tune




Wednesday, May 07, 2014

JStock is using highly secure oAuth 2.0 for Google Drive (Cloud feature) and Google Calendar (SMS alert feature)

Google is slowly depreciated non oAuth 2.0 authentication. To adapt such changes, we make JStock to use highly secure oAuth 2.0 for Google Drive (Cloud feature) and Google Calendar (SMS alert feature).

Kindly let us know, if you encounter any problem with these new features.




Sunday, April 20, 2014

Upcoming plan for JStock


  1. Migration from username/password authentication to oAuth 2.0 authentication. All cloud data shall be migrated to appdata scope. This is a very critical and urgent move, as it takes time for users to perform such migration. Note, we had to complete all migration before August 2014, when old API deprecated.
  2. Provides presentation chart, so that users can find out their investment return of multiple countries in single glance.

Wednesday, April 09, 2014

Technical sharing on recent launched home widget feature


With recent launched of JStock Android, I manage to deliver home widget feature (finally). It took much longer time than I initial estimation. 8 weeks! (I work on it part-time)

Developing home widget is harder than I thought. There're 2 reasons for that.

No direct access to UI components

Developer doesn't have direct access to UI components of home widget. All UI manipulation, like setting text, is done through service. Service is only able to help developer to "set" UI's attributes. When developer wants to "get" UI's attributes, he can't! The only way is
  • When setting an attribute of an UI, like setting text for a TextView, save the attribute value in persistence storage. For instance, SharedPreferences, SQLite, ...
  • To get an attribute of an UI, read from previous stored value in SharedPreferences, SQLite, ...

No easy way to store current state of home widget

To fetch the latest stock price, and show it in ListView, here's what my first attempt looks like :-

1st Wrong Attempt - Doesn't use user thread and store data in static variables

public class JStockAppWidgetProvider extends AppWidgetProvider {
  public static final Map<Integer, Stock> stocksMap = new java.util.concurrent.ConcurrentHashMap<Integer, Stock>();

  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    for (int appWidgetId : appWidgetIds) {
      List<Stock> stocks = getStocks(appWidgetId);      
      stocksMap.put(appWidgetId, stocks);
      appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, android.R.id.list);
    }
  }
}

// For ListView updating
public class AppWidgetRemoteViewsService extends RemoteViewsService {
  @Override
  public void onDataSetChanged() {
    this.stocks = JStockAppWidgetProvider.stocksMap.get(appWidgetId);
  }
}

There're 2 problem with such approach.
  • getStocks is a time consuming operation. It should be done in user thread.
  • Android OS might destroy AppWidgetProvider anytime. Hence, RemoteViewsService might get a null value.
2nd Attempt - Still not optimized

public class JStockAppWidgetProvider extends AppWidgetProvider {
  private static ExecutorService executor = Executors.newFixedThreadPool(1);

  @Override
  public void onUpdate(Context context, final AppWidgetManager appWidgetManager, 
    final int[] appWidgetIds) 
  {
    Runnable runnable = new Runnable() {
      @Override
      public void run() {
        for (int appWidgetId : appWidgetIds) {
          List<Stock> stocks = getStocks(appWidgetId);      
          storeStocksInSQLite(appWidgetId, stocks);
          appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, android.R.id.list);
      }
    };
    executor.execute(runnable);
  }
}

// For ListView updating
public class AppWidgetRemoteViewsService extends RemoteViewsService {
  @Override
  public void onDataSetChanged() {
    this.stocks = readStocksFromSQLite(appWidgetId);
  }
}

This solution is not optimized yet. As, having to perform DB read access for every onDataSetChanged doesn't sound good to me. (Consume more battery, slower, ...) I modify the above code slightly, to reduce number of DB read access.

3rd Attempt - Optimized solution

public class JStockAppWidgetProvider extends AppWidgetProvider {
  public static final Map<Integer, Stock> stocksMap = new java.util.concurrent.ConcurrentHashMap<Integer, Stock>();
  private static ExecutorService executor = Executors.newFixedThreadPool(1);

  @Override
  public void onUpdate(Context context, final AppWidgetManager appWidgetManager, 
    final int[] appWidgetIds) 
  {
    Runnable runnable = new Runnable() {
      @Override
      public void run() {
        for (int appWidgetId : appWidgetIds) {
          List<Stock> stocks = getStocks(appWidgetId);      
          storeStocksInSQLite(appWidgetId, stocks);
          stocksMap.put(appWidgetId, stocks);
          appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, android.R.id.list);
      }
    };
    executor.execute(runnable);
  }
}

// For ListView updating
public class AppWidgetRemoteViewsService extends RemoteViewsService {
  @Override
  public void onDataSetChanged() {
    this.stocks = JStockAppWidgetProvider.stocksMap.get(appWidgetId);
    // Is JStockAppWidgetProvider destroyed?
    if (this.stocks == null) {
      this.stocks = readStocksFromSQLite(appWidgetId);
    }
  }
}

This is what I had learnt during home widget development process. If you find out any mistake in my finding, feel free to let me know through

Thank you very much :)

Tuesday, April 08, 2014

Looking for freelance mobile app desginer

Halo all,

Currently, I'm looking for a freelance mobile app designer, to help me achieve pixel perfection on our current stock market Android app - https://play.google.com/store/apps/details?id=org.yccheok.jstock.gui

Area of improvement I'm looking for are :-


1. Page which used to view all transactions summary. http://i.imgur.com/fJMdAZ6.png

2. Page which used to view individual transactions details. http://i.imgur.com/dz8fpil.png

3. Page which used to view all dividends summary. http://i.imgur.com/Kc3ATLJ.png


5. Any design which makes the app looks prettier & elegant.

If you have any great idea on what improvement can be done, I wish to talk to you.

Feel free to drop me an email at, along with your portfolio. (Dribble, Behance, ...)

Thank you very much!

Sunday, March 16, 2014

Home widget in progress

Home widget feature is still in progress...


Thursday, March 13, 2014

User adjustable scanning speed (Revised)

We revised our scan speed UI. The adjustable range is from 1 minute to 30 minute.


Tuesday, March 11, 2014

User adjustable scanning speed

We get a lot of similar demands recently. Hence, we decide to include this new feature in next coming release.


Sunday, March 09, 2014

Widget development progress...

Here's what we had done so far for home widget feature

A configuration page, for you to decide the watclist & theme for home widget (Completed)



 Widget after adding to home screen (Incomplete yet)


Friday, February 28, 2014

Home widget development progress...

In order to ensure home widget will look elegant under various home screen wallpaper background, we decide to provide 2 types of theme - light (default) and dark.

Here's how the early works look like. We love the new dark theme look. We hope you will like it too.

Comments on the dark theme design are very much welcomed.

Dark theme



Light theme



Thursday, January 23, 2014

Progress update on JStock Widget feature

We reach a small milestone finally : Added refresh button on widget.




Tuesday, January 21, 2014

JStock Android - working toward Widget feature

We are working very hard in order to realize widget feature for JStock Android. Stay tune for more updates.



Sunday, January 12, 2014

India is now having Google Finance Real-time Data

India is now having Google Finance Real-time data. Both NSE and BOM are supported. This features is found in the following JStock

  • JStock 1.0.7i
  • JStock Android 0.9.16
We also provide a very convenient way, to update your stock database. For instance, in US stock market, stock code for HSBC Holdings plc, had changed from HBC to HSBC.

If you realize some stocks, are missing, or out-dated from database, just fork https://github.com/yccheok/jstock/tree/master/appengine/jstock-static/war/stocks_information, make necessary modification on the database, and send me a pull request. 

Once done, your JStock can obtain the latest database automatically.

We will monitor the performance of Google Finance Real-time data for a while. Once we are confident, we will migrate other stock markets to grab real-time data from Google Finance.

Wednesday, January 08, 2014

Google Finance Data Feed for India Stock Market

Just to let you know, we finally have a pretty good progress in adding Google Finance Data Feed for India Stock Market. At the end of the day, you can expect

  • Real-time data
  • Both BOM and NSE are supported
We still left last bit of code : Old data migration, to ensure you won't experience any data loss.

We are expecting this exciting new feature, will be available on next week.

If you brave enough to become early beta tester, please let us know through https://www.facebook.com/JStockFreeStockMarketSoftware








Followers

Blog Archive