I ran into a couple hang-ups while trying to get a client-side library running on Travis-CI. Due to the nature of client-side dependency conflicts and a few quirks with bower, it ended up being a little more work than anticipated, but I managed to get it working.
The first issue I hit was with conflicting libraries. When running bower install
from the command line, it will give you a choice of which version you would like to use. To get around this, you can use bower install -f
which will force the more recent version, but if you want more control, you can also specify resolutions
in your bower.json
.
{
"dependencies": {...},
"resolutions": {
"underscore": "~1.5.2"
}
}
Then I hit this issue.
The authenticity of host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
Bower was trying to download dependencies over ssh/git and Travis does not have the Github RSA key fingerprint. NPM defaults to https so you never hit this (unless you manually specify someting like git@github.com:jashkenas/underscore.git
in your package.json
). To get around this you can turn off the check by placing StrictHostKeyChecking no
in ~/.ssh/config
. So here is my working .travis.yml
.
before_script:
- npm install -g grunt-cli
- npm install -g bower
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- bower install -f
language: node_js
node_js:
- "0.10"
I spent some time getting a single page app with push-state set up on heroku, so I figured I would share how I did it. For those unfamiliar, push state allows you to manipulate the url in the browser without refreshing the page. This is great for client-side apps which had to rely on location.hash
in the past.
This doesn’t seem like much of a server-side issue, and it isn’t until the user tries to do something like bookmark the page or send it to a friend. Obviously, the server doesn’t know by default that http://example.com/posts
is a client-side route. It will try to match the route and you will likely end up with a 404. So the key is getting any route to load your index page while still allowing static assets such as javascript, css, images, fonts, ect.. to be loaded.
To get it working I ended up using express and it was actually pretty simple. Here is my server script.
var express = require('express'),
path = require('path'),
port = process.env.PORT || 8080,
app = express();
app.configure(function() {
app.use(express.static(__dirname + '/public'));
});
app.get('*', function(request, response){
response.sendfile('./public/index.html');
});
app.listen(port);
console.log("server started on port " + port);
Also, you should be able to add routes before the app.get('*', ...
. Hope this helps someone in the future.
Just released my second Android app to the Google Play market. It’s called Gym Hero. You can get it here.
So, a little over a year and a half ago, I decided I wanted to give the stock market a try for myself. I wanted a site that had a low trading costs and a low minimum balance. Enter Zecco.com.
Zecco, which stands for “Zero Commission Cost”, is an online trading community that, like its name implies, offers commission free trades. There are, however, a few guidelines…
Update: As of March 2009, the minimum balance was raised to $25,000 to get 10 free trades a month.
Accounts that do not meet these guidelines or for every trade after your first 10 are $4.50 a trade which is still lower than most sites that I am aware of.
Other than a few minor mishaps, my experience with Zecco has been excellent. The site seems like it was built to teach and inform the beginning investor. The forum is very active and full of members willing to share their knowledge of investing and give their opinions on companies. The community side of Zecco also allows, but does not obligate, users to share their portfolios and daily trades.
I would highly recommend Zecco to anyone who wants to give the stock market a try for themselves.
Update: I now use Mint.com in place of Yodlee Moneycenter. It has come a long way since I wrote this post.
Yodlee Moneycenter it is an online application that allows you to group all of your bank, credit card, investment, loans, and even reward accounts in a single application. If you have more than a few of accounts at different institutions, this can be a huge convenience and time-saver. HSBC’s “Easy View”, Bank of America’s “My Portfolio”, and Wachovia’s “One Stop” are all themed versions of Yodlee, but anyone can use it free at http://moneycenter.yodlee.com.
Yodlee categorizes your transactions and gives you a chance to set up and manage a monthly budget for each category. You can also set up email alerts for accounts reaching a minimum balance, a CD maturing, large withdraws/deposits from/to an account, and many others. There is a net-worth tracker, which tells you the overall worth of all your assets minus any liabilities. Monthly records are kept so you can see how your wealth is changing over time.
Most people are probably a little hesitant to add all their accounts into an application like this, but let me ensure you that Yodlee has a strong focus on security. A few months back they also added multi-factor authentication.
I have been using Yodlee for about a two years now.Yodlee is free; you can register for an account here.