My Robinhood experience so far…

I currently trade using ScottTrade and I have been pretty happy with it. They have terrific customer support, but they are about to be acquired by TDAmeritrade. So, before just letting my account rollover, I went to Fat Wallet to research other options. I learned that my experience will remain almost the same. However, I also learned something interesting. There is this new free stock trading site called Robinhood.

Robinhood caught my attention at first because their marketing said: “Stop paying up to $10 for every trade”. I kept reading and realized that they manage this by skipping any research tools and they are only available on Android and iOS. I figured this works for me. Free definitely beats $6.95 per trade. So, I went ahead and started the application to open an account.

They sent me a verification email and then I waited for them to approve my application. A week went by and I did not hear anything back, so I wrote them an email. Apparently, they put my application on hold and didn’t bother to let me know. Then, they asked for a Permanent Resident Card to verify my U.S. residency, so I emailed them a copy of my U.S. passport. A couple of days went by and apparently, that was not enough. They then asked me for a Bank Statement which I promptly emailed back to them. Three whole weeks have gone by and my application has not been approved, yet. The only thing all this emailing back and forth has achieved is a series of customer satisfaction surveys asking for feedback. Well, here it is.

Robinhood’s customer service is nothing compared to what I have right now with ScottTrade. They have proved useless in helping me open an account. I do not remember my experience opening an account with ScottTrade, probably because it was so fast. Also, when I email ScottTrade with questions, they answer in a jiffy. Robinhood, on the other hand, has a lot to learn. I guess you get what you pay for.

ServiceNow script to calculate days until AD account expires

I am just starting to learn how to develop applications and write scripts for ServiceNow. I’m adapting to going from using some of the best tools used for dotNET development to the few options ServiceNow provides (an in-browser IDE with a hit and miss debugger). My employer is not a development house so I get by with Visual Studio Code and some other open source tools.

One of my first tasks was to send an email notification each time an Active Directory account was 10, 7, and 3 days from expiring. But, we quickly discovered LDAP stores this value as a number of 100-nanosecond intervals since January 1, 1601 (UTC). JavaScript does something similar, but it uses milliseconds since January 1, 1970. So, I have to put both in the same unit to be able to subtract one interval from the other.

I added a script in a Field Map inside a Table Transform Map that runs daily to import data from LDAP/AD. This script transforms the value to be imported in the number of days until expiration.

answer = (function transformEntry(source) {

var daysToExpiration = 0;
// Account-Expires attribute comes as source.u_accountexpires from LDAP.
// This value represents the number of 100-nanosecond intervals since January 1, 1601 (UTC).

// If variable is coming null return 0 days
if (source.u_accountexpires == '' || 
    source.u_accountexpires == null || 
    source.u_accountexpires == undefined) {
daysToExpiration = 0

}

A value of 0 or 0x7FFFFFFFFFFFFFFF (9223372036854775807) indicates that the account never expires. Therefore, we assign a big number for the days. This way the user never gets an email.

else {
if (source.u_accountexpires == 0 || 
    source.u_accountexpires == 9223372036854775807) { 
daysToExpiration = 50000;
}
else {

I tried to get the JavaScript Date object to work but it did not so I used GlideDateTime from the ServiceNow API for server scripts to do the calculations.
11644473600000 is the 100ns from Jan 1, 1601, to Jan 1, 1970. Added to match LDAP to Javascript.
now.getNumericValue() return the milliseconds from Jan 1, 1970.
Multiply by 10000 to convert from milliseconds(js) to 100 of a nanosecond (LDAP).

var now = new GlideDateTime();

var today = 116444736000000000 + ( now.getNumericValue() * 10000 )

Subtract today in LDAP format and divide by the number of 100 of nanoseconds in a day.


daysToExpiration = ( source.u_accountexpires - today ) / 864000000000;

If the account has already expired, we assign it a 0

if (daysToExpiration < 0) {
    daysToExpiration = 0;
}

Next is the code that determines if the notification is sent or not, and returns the days to expiration.

daysToExpiration = parseInt(daysToExpiration, 10)

switch (daysToExpiration) {
    case 3:
    case 7:
    case 10:
     //LDAP-disabled users are not sent an email during transform based on 'userAccountControl' attribute
         switch (parseInt(source.u_useraccountcontrol,10)) {
              case 514:
              case 546:
              break;
              default:
              gs.eventQueue('userid.expired', target, parseInt( daysToExpiration, 10 ), target.email);
          }//inner switch
     } // end switch outer
}

return daysToExpiration;
}
})

(source);

Download Script from GitHub

Word of Advice: Stay away from TradeKing

Dear Internet,notradeking

I recently had the displeasure of dealing with TradeKing’s customer support, and decided I no longer want to do business with a company with their policies. Sadly, I had to learn the hard way and I am hoping I can save a reader or two from this ordeal.

At the end of last month, I deposited some money to buy some stocks. Since it is an ACH transaction, it takes a couples of days. So, I forgot and didn’t log back in until this month. To my surprise, there is an outrageous $50 charge in my account for an “inactivity fee”. This is a fee they added late last year and they claim they emailed me about it during that time. I can not find an email to this effect and even then, why not notify me before charging me this time around? Would it hurt them to drop a line with all the technology available nowadays? A text, IM, tweet, or something like hey we are about to charge you this fee if you do not make a transaction soon. Instead, the first month there is enough money in the account for them to charge me a fee, they just charge away.

In the following chat, I tried to talk them out of charging me this fee but they will mostly just argue the validity of their fee that is hidden in a 100 question long FAQ that I only found after googling for it. I honestly recognize it was my mistake not to research the company further. But, since I though I was somehow grandfathered in from Zecco, Inc. which they merged with, I did not do my due diligence. I admit I snoozed. However, I don’t want to and advise you not to do business with a company where if you snooze, you lose.

 

Welcome to TradeKing’s Live Help service. Your chat is currently being routed to one of our representatives, you will be connected shortly.
Thank you for contacting us, I am ‘Donnie’ how may I assist you today?
Donnie: Good afternoon. Thank you for contacting TradeKing.
Christian Rios: Hi Donnie, I was about to place a trade and I realized my account have a $50 charge!
Christian Rios: After reasearching it, I am very upset. I did not have to worry about this with Zecco
Donnie: Let me check your account
Donnie: Please provide your full name and the last 4 digits of your SS number for account verification.
Christian Rios: Christian Rios, 1337
Donnie: Yes I do see your account was charged with an inactivity fee, and we apologize if this caught you off guard.
Donnie: All Zecco clients were notified via email regarding the introduction of the Inactivity Charge to their accounts, so they could take the course of action they felt best fit their needs to avoid the charge. Unfortunately it does cost TradeKing to maintain dormant and inactive accounts. In efforts to continue to offer our deeply discounted commission structure to all our clients, and to avoid having to change our commission structure to offset the increasing maintenance costs associated with these inactive accounts, the Inactivity Charge was introduced.
Christian Rios: I would appreciate it if you guys remove that charge.
Donnie: Unfortunately, this charge is a valid part of our fee structure. However, if you would like I can extend an offer to have this charge reimbursed if you can make a deposit to raise your account balance to the minimum of $2500 in order to avoid this fee.
Donnie: I see your account value is roughly $800 short of the minimum balance required in order to be exempt from the fee.
Christian Rios: I thought all you needed to do was to make a trade once a year?
Donnie: That is correct as well.
Donnie: You will have until August of 2014 to place one trade in order to be exempt from the fee for next year
Christian Rios: Well, can you remove it and I can place a trade before the end of the month?
Donnie: Unfortunately not, this fee was validly charged to the account.
Christian Rios: Look, I am trying to be reasonable here. But, if you are not going to play ball, I promise you, I will take my business elsewhere.
Donnie: We do regret to hear that, and we would not want to lose your business. However, this charge is a part of our structure here at TradeKing, and we do apologize if this is not in line with your intended trading volume in the account.
Christian Rios: Yet, you agreed to remove the fee if I deposit 800 dollars to comply, but not if I place a trade. Fine, I am done doing business with you. Btw, I have a blog and would to share how you treat your customers.
Donnie: We do apologize for your lack of satisfaction here, but if placing one trade per year is not something that can easily be met then it may be best to find a broker that does not have minimum trading requirements.
Christian Rios: Yes, one without ridiculous and outrageous fees and one willing to work things out with their customers.
Donnie: If you should decide to leave then we do wish you the best of luck with future investments.
Christian Rios: well, I already decided to leave, can we get started with that process?
Donnie: Sure, if you intend to transfer your account to another broker then this process will be initiated on the receiving brokers end, as they will have special transfer instructions for you.
Donnie: Once this process is initiated on their end, no further action will be needed from you on our end here.
Donnie: Do you have any other questions that I can assist with at this time?
Christian Rios: No, I am just amazed a what a terrible company you are
Donnie: We do regret to hear you feel that way, and if there are no further questions then I wish that you have a great rest of your day.
Donnie: I am happy to be of service, have a great day.
Thank you for contacting TradeKing today. I hope I was able to answer your questions or address your concerns. If you believe that this issue is still unresolved or you have additional feedback, please email a copy of this conversation to service@tradeking.com.

Only FEDEX can destroy a TV this good!

With my dad recently passing, I finally decided to leave the country for greener pastures down south and to take care of family. So, my wife and I started selling all our belongings, furniture, electronics, and most stuff that won’t fit in 32″ duffel bags. More than 10 years living in America, you can rack up a lot of stuff. This included a Sony BRAVIA XBR Series KDL-46XBR9 46-Inch 1080p 240Hz LCD HDTV.

Right now, there is one same model TV on Amazon selling for $900 used. I had it listed on Amazon for less than that. I ended up just selling it to a childhood buddy of mine but before I could remove it from Amazon someone else purchased it through the Amazon website. I had to cancel that Amazon order and ended up selling it to my friend for $660. I figured it would cost me around 100 bucks to ship it to my friend, so I could get around $560 for the TV then. I started looking for quotes, and found out that USPS will not even ship it because it was so big. UPS would charge me $130 and FEDEX quoted me at $105. So, I opened up an account with FEDEX, gave them my credit card, printed a label, taped it to the side of box, and scheduled a pick up. However, when I entered all the shipping information, I left the declared value empty. I thought they didn’t need to know that. But, apparently they need to know that so that they know how much to take CARE of it.

I had kept up all the original TV packaging and boxes as I was planning on selling it in the future. So, it was as well packed as SONY would pack it. However, when the box got to my friend, it looked like FEDEX tried to destroy the TV as much as possible. Then things started to get weird, instead of FEDEX charging me the $105 they had quoted me, they charged me $50.17. Their customer support was just horrible, Continue reading “Only FEDEX can destroy a TV this good!”

They’ve made it too hard to watch stuff

Viacom and DirectTV are currently fighting over money while DirectTV customers are left without a bunch of channels. Today, on Hulu while watching Jon Stewart, a commercial came out asking folks to drop DirectTV. They even have a website now. In my opinion, this is rather childish at best. What is even more puzzling is that these companies don’t realize they are shooting themselves in the foot. Television viewers are already migrating from overpriced cable channel bundles to popular online options like Hulu and NetFlix and even piracy. Cable companies are very comfortable charging up the wazoo for a hundred channels where there might only be a few that you enjoy. They have failed to provide a la carte options for people to save money and give customers more power as to what they like to watch. On-Demand attempts have left much to be desired and it is not a solution. If I want to watch HBO, I should not have to get 80 other channels I will watch once a year.

However, the solution to piracy and the fleeing customer base to online only is quite simple. Convenience! They simply made it too hard to watch stuff. Contrary to popular belief, piracy is more of a service issue than a price issue. Take a look at Steam, the online game store, for example. It provides everything a customer can hope for. It is open 24×7, great prices, fast downloads, automatic game patches, cloud saves, huge selection of games, and a community. All a user has to do is to login with his or her Steam Account on any PC or MAC and with a couple of click is able to buy, download, and play games. Simple and Convenient.

In the other hand, Continue reading “They’ve made it too hard to watch stuff”

Mass Effect 3 Chat Review


Christian Rios 11:09 am
anybody tried out mass effect 3 yet?

Taylor Wicksell 11:09 am
SUUUUUUUUCKS!

Christian Rios 11:09 am
since it is not on Steam I had forgotten it existed

Taylor Wicksell 11:09 am
did you play the first two?

Christian Rios 11:09 am
yeah

Taylor Wicksell 11:10 am
you know how the first one was like a decent RPG, lots of stuff to do, side quests, etc.

Christian Rios 11:10 am
I usually wait till it is 9.99 to buy them though

Taylor Wicksell 11:10 am
and then the second one got really REALLY dumbed down for consoles and the like

Christian Rios 11:10 am
right… mini games in the second one were lame

Taylor Wicksell 11:10 am
fewer quests, less content, missions were little linear things that take about 5 minutes and have a “You Win” screen at the end with your rating and all

Taylor Wicksell 11:11 am
take the difference between mass effect 1 and 2, and then triple it, and that gets you mass effect 3
there are like 15 systems now, you don’t even land on the planets you just scan them but now enemy ships come and chase you around if you scan too long

Christian Rios 11:12 am
LOL
there are space fights?

Taylor Wicksell 11:12 am
no
if they touch you, you die
that’s all

Christian Rios 11:12 am
wait what?
Continue reading “Mass Effect 3 Chat Review”

jQuery Star Rating Plugin Web Method Call with ASP.Net

I started playing with the jQuery Star Rating Plugin v3.14. But, I could not really find a good way to make web method calls or a decent write up of how to use it with ASP.Net.

So, I added auto-submit-star to the markup for it to make the callback, added runat=”server”, and a hidden field with the record id.

<input name="star1" type="radio" class="auto-submit-star" runat="server">
<input name="star1" type="radio" class="auto-submit-star" runat="server">
<input name="star1" type="radio" class="auto-submit-star" runat="server">
<input name="star1" type="radio" class="auto-submit-star" runat="server">
<input name="star1" type="radio" class="auto-submit-star" runat="server">
<asp:HiddenValue id="hfRatingID" runat="server"/> 

After that, added the following script that performs the jQuery Web Method call

$(".auto-submit-star").rating({ callback: function (a, b) { 
PageMethods.RateIt( $(this).siblings('input[id*="hfRatingID"]').val(), a) 
}})

Then makes web method call to a static class in code behind

[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static void RateIt(int id, string value) // Method have to be static { 
// Make call to update DB rating value 
}

Now you should be able to make an asynchronous call for users to rate an item. Hope this helps.