InvestingNote Founder

I am happy to see that I am featured in Singapore’s largest newspaper Straits Times. I have shared with my investment journey over there. It is my first time being interviewed by journalist. It is pretty exciting. You might want to ask how do I get featured in Straits Times and how is the process looks like? Especially for those who are doing your own start-up. Getting featured in newspaper is best way to get more people to know more about your start-up.

 

First, the best is you know some journalist and you can contact them directly. Under each articles in Straits Times there is the journalist name and email address. The best way is to find a relevant article on similar topic so you know that this journalist  may be interested in what you do or who you are.

 

The second step is email them. Draft something that is compelling, short and sweet. They get a lot of emails everyday and are probably overwhelmed. The subject for the email is extremely important. You want to have their love at first sight. After sending the email, wait patiently.

 

If you are lucky (yes, luck is important), you will get contacted by the journalist. Usually they will call you to know a bit more or directly email you a few questions for you to answer. If you have that, you are almost certain to be covered by the journalist. Congratulations.

 

Then the last step is to have a face to face interview with the journalist. They are not simply going to repeat the questions that they sent you previously in the email. They will chat with you like a friend but of course they ask, and you answer. Be prepared with the interview. You want the journalist to write the best part about your story. Surely, you have a lot of stories about your start-up, but you don’t want to tell everything to the journalist you met. You don’t want to confuse them and make the journalist tired. Select one of the best part of your journey and keep emphasis it. No matter what they ask, try to relate back to the message that you want to talk to the readers. Most of the time, you won’t know what the journalist is going to write so be careful with what you said and not to back-fire.

 

Good luck!

You can read my article at

http://www.straitstimes.com/business/invest/fintech-entrepreneur-goes-for-dividend-stocks

Hi

It has been a long long time since I wrote my previous post. I have to apologise for this. For the past two and half years I have been busy with my own Fin-tech start-up company InvestingNote.

 

I used to work in a fin-tech company for 4 years creating the interactive financial portals and iphone mobile application. I have also been trading/investing in the stock market for more than 7 years. Investing can be a very lonely journey sometimes, especially for new investors. I went to a lot of stock discussions forums just to get to make some virtual friends and to get stock market informations. Th experience is bad. I want to find a stock guru inside the forum so I went to check each of their profile to read their past posts. However, i am still not able to tell how good he is with two reasons. He said stock A would went up on 2015 Aug for instance, but i have no easy way to check if the stock really went up after his statement. On the other hand, how can i make sure that he never edited or delete any information that is not good for his profile?

 

With this, InvestingNote was born. It is a dedicated social network platform for stock investing and to make money in stock market by leveraging the crowd wisdom. Finding a guru is no longer a problem, every member is able to share his own market estimate by forecasting the target price and time frame to hit the target price for each stock. The system will automatically measure the accuracy. No deletion of information after 30 minutes!

 

Sounds cool right? But I have spent a long time doing this. Start-up is not a spring but a marathon. If you are thinking of doing start up, I promise you that doing start-up is no less exciting in trading in stock markets. Yet both are fruitful if you have a strong heart and strong will!

If you have set up NFS server, whenever you add a new NFS client to connect to the server, you need to add permission on the NFS server to allow the new client to connect. And this is what /etc/exports settings are for. It is the access control list for filesystems which may be exported to NFS clients

A typical /etc/exports will look like this

/var/nfs     10.180.28.180(rw,sync,no_subtree_check)

Downgrade to Smaller Droplet in DigitalOcean?

I bought a few DigitalOcean server due to poor estimations of traffic. Then I want to downgrade one of the under utilized server with lower memory and less disk. So i created an image of existing server, and trying to create a new droplet with the image, then it throws error that DigitalOcean don’t allow creating a smaller droplet from a large droplet image… I only get to know this after i totally destroyed my existing server. This is really annoying. I tried googling, there is a lot of users complaining on this. So do I.. And the only solution is to create a blank new droplet and you got to set up everything again from beginning. This really takes a lot of effort. So a suggestion to droplet users Keep an image of smaller droplet with everything set up instead of keep an image of large droplet.

Nevertheless, below are a few steps necessary for setting up Ruby on Rails with Passenger on Ubuntu for your reference.

Install Apache2 with Apache Portable Runtime Utility(APR)

Apart from apache2, you also need to install some necessary apache developer headers in order to install Phusion Passenger.
1. Install Apache 2:

apt-get install apache2-mpm-worker

2. Install Apache 2 development headers:

apt-get install apache2-threaded-dev

3. Install Apache Portable Runtime (APR) development headers:

apt-get install libapr1-dev

4. Install Apache Portable Runtime Utility (APU) development headers:

apt-get install libaprutil1-dev

Install Passenger

gem install passenger
passenger-install-apache2-module

If you encounter the error “Some required software is not installed.” with the following details, then it means that your Apache may not be installed properly or your apache installation path is not the standard location that passenger is unable to locate it.

* Checking for Apache Portable Runtime (APR) development headers…
Found: no
* Checking for Apache Portable Runtime Utility (APU) development headers…
Found: no
Installation instructions for required software

* To install Apache 2:
Please install it with apt-get install apache2-mpm-worker

* To install Apache 2 development headers:
Please install it with apt-get install apache2-threaded-dev

* To install Apache Portable Runtime (APR) development headers:
Please install it with apt-get install libapr1-dev

* To install Apache Portable Runtime Utility (APU) development headers:
Please install it with apt-get install libaprutil1-dev


In this case, you need to manually set the apache path.

passenger-install-apache2-module --auto --apxs2-path=/usr/local/apache2/bin/apxs --apr-config-path=/usr/local/apache2/bin/apr-1-config

Configure Passenger

After installing Passenger, you will need to configure your passenger.

Check if the directory /etc/apache2/mods-available/ contains passenger.conf and passenger.load. If not, create the files with the appropriate content.

passenger.load

LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so

passenger.conf
Note that the exact location of the passenger module and ruby is different based on which version of rvm and ruby you are installing. You should get this information after you have successfully installed passenger on the above step. Below is just a sample config.

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p481/gems/passenger-4.0.50/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p481/gems/passenger-4.0.50
     PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.0.0-p481/wrappers/ruby
   </IfModule>

Enable Passenger Module

Enable the module with symlink.

ln -s /etc/apache2/mods-available/passenger.load /etc/apache2/mods-enabled/passenger.load
ln -s /etc/apache2/mods-available/passenger.conf /etc/apache2/mods-enabled/passenger.conf

service apache2 reload

After upgrading my system, i met a problem running my rails project. It rails in installing therubyracer and v8 on my OS X EI Capitan. There are a lot of discussions on the github. e.g. https://github.com/cowboyd/therubyracer/issues/359. The error log i saw is :

Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
	ERROR: Failed to build gem native extension.

    /Users/shanison/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.10
Using compiler: /usr/bin/c++ (clang version 6.1.0)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o has no symbols
In file included from ../src/accessors.cc:28:
In file included from ../src/v8.h:60:
In file included from ../src/objects-inl.h:38:
In file included from ../src/elements.h:33:
In file included from ../src/heap.h:35:
In file included from ../src/incremental-marking.h:33:
In file included from ../src/mark-compact.h:32:
../src/spaces.h:896:26: error: 'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to true [-Werror,-Wtautological-undefined-compare]
  bool exists() { return this != NULL && code_range_ != NULL; }
                         ^~~~    ~~~~
../src/spaces.h:898:9: error: 'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Werror,-Wtautological-undefined-compare]
    if (this == NULL || code_range_ == NULL) return false;
        ^~~~    ~~~~
2 errors generated.
make[1]: *** [/Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/v8_base/src/accessors.o] Error 1
make: *** [x64.release] Error 2
/Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
	from /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:35:in `each'
	from /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:35:in `verify_installation!'
	from /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/ext/libv8/location.rb:26:in `install!'
	from extconf.rb:7:in `<main>'
GYP_GENERATORS=make \
	build/gyp/gyp --generator-output="out" build/all.gyp \
	              -Ibuild/standalone.gypi --depth=. \
	              -Dv8_target_arch=x64 \
	              -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3 -Dwerror=''
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
  LIBTOOL-STATIC /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/libpreparser_lib.a
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/preparser/preparser/preparser-process.o
  LINK(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/preparser
  CXX(target) /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13/vendor/v8/out/x64.release/obj.target/v8_base/src/accessors.o

extconf failed, exit code 1

Gem files will remain installed in /Users/shanison/.rvm/gems/ruby-2.1.0/gems/libv8-3.16.14.13 for inspection.
Results logged to /Users/shanison/.rvm/gems/ruby-2.1.0/extensions/x86_64-darwin-12/2.1.0-static/libv8-3.16.14.13/gem_make.out

I try to uninstall therubyracer, v8 and libv8 library and restart the whole process but none of the ways works. In the end i decided to upgrade my ruby to v 2.2.2. And finally everything works. I still don’t know what’s going on but yet this is one thing you can try when you have the problem.

rvm install 2.2.2