Opening an Account at Citibank is so slow and dumb.

Two weeks ago from today November 15, I opened an Access account at Citibank through their online application. I’ve never seen a bank account that is online-only, so it is fitting that I sign up online to get it.

Sure, the approval process was quick, but 1. why did I receive an email saying that I needed to place an initial deposit (AS IF IT WERE BLOCKING THE APPROVAL) and 2. where the hell is the account? Furthermore, why the hell am I getting emails to place an initial deposit after I authorized it during the application process? Are the people there just not aware that I already did? It is not associated with my account yet and at the time of approval I did not get an account number. They say I can GO TO A CITIBANK to freakin’ deposit into it… so much for the do your banking online-only crap.

Just got the account number through the mail last week, but no routing number. Don’t fret, routing numbers are public and easy to look up. I decided since I got mail and email for placing an initial deposit that I would just push one manually, which turned out to be successful. Nov. 14 comes along and I look at my previous bank and see the initial deposit that I authorized going through, so now I have TWO “initial” deposits… wtf.

All throughout this process, I have live chatted and called, none of them said anything about the process specifically. Citibank has failed to communicate their entire process and their (new account) customer service needs to get better at asking the right questions such as whether I opened it online and if I authorized an initial deposit and that it would be done automatically.

This is my feedback Citibank. Fix your shit, stop confusing me and AUTO-ASSOCIATE MY BANK ACCOUNT WITH THE GODDAMNED ONLINE ACCOUNT. Why in the world do I have to wait for my debit card in order to link my account.

What the hell is this, 2005? Archaic, af.

Interesting Things in Software (9/10/2016)

Decided to start off an “Interesting things in Software” post to start logging things that I found interesting to read about.

Sonification of Algorithms

It is all about assigning a sound effect (essentially) to your algorithms. For a sorting algorithm, you could assign a sound effect when it makes a data access or write. The sound effect’s tone/pitch can be modified depending on data values (see youtube link below).

This is an interesting topic and idea because it is something that is weird to think about. First question is what the heck is this and why would I want to do it. Patterns is why. Every algorithm has a sound signature. Read the Sonification of Monitoring below about the idea. My take away from the post is that you can figure out what the system is doing by the signature and if the system makes other sounds that what is expected then there may be a problem. Applying this idea at scale (w.r.t. complexity and size) makes more sense than trying to apply it to smaller algorithms.

Look at Example S18.3: Sonnet in Sonification of Data link below. Off by one error detection by sound.

Imagine being able to detect a bug in your algorithm because the sounds it was making was not harmonized. Very odd way to think about finding issues in my opinion.


Sorting Sounds:

Sonification of Monitoring:

Sonification of Data:

The Sound of Voldemort:

(Extra) Sorting Algorithm Sounds Playlist:

Dynamic Time Warping (DTW)

I’ve been reading about the idea of figuring out how to assign a similarity score between two time series that is transformation invariant and it has led me to DTW as well as other challengers to DTW. The idea of DTW is to compare every point in a time series (TS1) against a reference time series (TS2) with a distance function (Euclidean Distance is one) and then find the path that optimizes a cost function (minimum distance/maximum similarity).

I like this idea but I think you can see the inherent inefficiency… do we really have to compare every value in TS1 to TS2? Couldn’t we select a window of values to compare instead? Sure this has been explored and that is the whole idea of Subsequence DTW. Other researchers took it farther and decided to explore and implement the idea of multilevel (resolution based) DTW to take the run time down to linear time. They’ve even implemented it for all to reproduce the results.




Dabbling in C++, Template Metaprogramming Overview

When I used to hangout in IRC gamedev channels, template metaprogramming was that arcane and cryptic thing to me… It still is. Why would anyone use it anyway? How does it make life easier for me? The truth appears to be don’t use it unless you have a really good reason, but that should not stop anyone from learning about it in case it is encountered while reading other code.

So why use it? If you’ve used Java, then you know ArrayList<Integer> is a dynamic collection of Integer objects. The equivalent in C++ is std::vector<int>. In both languages, you can now add and remove integers from a list. Useful and makes my life easier. Simple use case for generics/templating.

C++ templates also support the idea of dynamically generating templates at compile time and that’s where the scariness, power and underuse of metaprogramming lies. Some say it is a functional language inside of C++. I think tutorials set the reader’s mindset of where template metaprogramming is used.

Lots of tutorials show these impractical ways of dynamic generation of templates such as calculating a factorial… >_> Seriously, way to set the example… How about generating templates for a two, three or ten tuple? or templates that doe type checking of unchecked types? Can  we build expression or parser tokens? Those are more useful examples than the crappy factorial which gives me zero idea on why metaprogramming may be useful in my everyday or scientific code. I implore you as a reader to comment of other blog posts where crappy examples are being used.

As for tutorials, I think the first link is an example of crappy tutorial. The second link below may be more helpful to get introduced to metaprogramming. The third one is more involved with the number of tutorials and the fact that it assumes you already know about metaprogramming and want to use it in a way that is practical.



Leaking Emails is a good thing

Prime example of today where a “leader” resigns directly to the evidence of not being capable of demands of the job.

Thanks Russia and hackers.

You just read Leaking Emails is a good thing. Please share if you've liked it.
You may find related posts by clicking on the tags and/or categories above.

It’s December

Last time I posted was in March? Man, I need to post a little more often…

My curiosity is still insatiable as well as my need to think about things. I feel torn apart at times when I want to learn this and that, but also want to DO this and that. Ask me today what I would like to do and they are things that I’ve always had in mind, but don’t bother to allocate the time to it.

Let’s take, one of my defunct projects, Celice and say there was a need for it in my mind since the javascript game engine space was niche (and still is). I should have allocated time to it since I was intensely focused on wanting to build a map with simple (not really) collision detection and eventually add more things to it. There is a new game engine in town and I really feel that it is what Celice could have been, which is why I defunct’ed it.

I have a comment system I want to build, but haven’t allocated the time to it. 🙁 I will in 2016 definitely though I hope it does not conflict with my responsibilities/contract at work.

Dark Gale really pushed my HTML/Javascript/CSS skills over the edge. Imagine being able to go from blank page to javascript filled madness and you know it is crazy. For HTML templates, I like loading them via ajax and storing the string. Reusing html elements is important since creating is expensive, so I like to think in terms of pools of elements instead. When it comes to updating that element or elements, I use classes all the time, so I can style the elements and update the data. There were different places where the character attributes could be displayed and updating all of them was required. I didn’t want to use a framework such as Angular, or some other expensive library. I wanted an easy way to change things when the model was updated. Today we have React by Facebook that follows what I had accomplished. I haven’t used React, but the concepts are the important thing. There are many things that I learned from Dark Gale that stay with me today, so even though it is defunct today it was a great project. It is the kind of experience that you would never get on the job.

Back on topic, well this year I found a new job and live in SF Bay Area, which is a place I never thought I would live in. I am in tech, but honestly just doesn’t seem to be my kind of place. Everything is expensive though utilities.. not so much. I think the cost of everything is tied down to the cost of rent. Rent is more than bloated… demand outstrips supply? It is ridiculous. These prices have to fall at some point because everyone is going to be homeless if the rate of appreciation rises. I don’t know why people want to live here because I don’t. As soon as I find a way to work remote, I will definitely take it and live somewhere cheaper.

2015 has been the year of work, but on the flip side I got my driver’s license and a new car. I drove my car from LA to SF about a month after I took and passed the test. Yeah, people say this and that… blah blah blah I take advantage of my time and opportunity. I had the time to drive around and get more confidence in my skills after the test and quitting my job soon afterward, so I took that opportunity from time to time to do so therefore had the confidence to drive 300 miles north. Parking on street in LA is a *****, which is why I didn’t practice as much as I would have wanted. Think about it this way, just getting into my car and someone is already waiting to take the space. California has some issues to work out I think, which is why I would say avoid living in the city.

So what’s next? Obviously work my a** off to get promoted. It’s about time I got one because my skills far surpass a Software Engineer I at this point. I guess switching jobs twice within 2 years span is pretty detrimental to that, but circumstances circumstances pushed me to that. I haven’t been to interested in doing anything else as a result.. That’s why I have a list of interests, so I can remind myself what I want to do. The one thing I’d like to do most is get a Private Pilot’s license and so I want to attempt to pursue it within the next 5 years. It costs quite a bit to get it and with my paycheck coming in bi-monthly and rent and loans pretty much eating it up, it isn’t easy for me to obtain. Maybe there will be a breakthrough of some sort where I can just learn to fly. Maybe learn to drive a boat and swim while I’m at it.

When it comes to social life? Do I desire to stare at people all day and talk about stuff? I tire of it quickly (My eyes get tired of shifting that I start staring at things uncontrollably). Sure, once in a while it is nice, but continuously just bores me as I can’t/don’t want to waste my energy on regurgitating my day or expressing myself. More times than not, I just want to do things and say nothing. Expressing myself about the thing I’m doing is always nice of course. I like to stay detached from people and people will just have to accept that fact. If you are hurt? *shrug* Look for someone else who fulfills that part of you.

Anywho, it’s time to create an ssh key (why haven’t I done this yet) instead of using a password for my servers now and also set one up to receive my email since MS and Google don’t offer free mail for new domains anymore. Why rely on a third party anyway? Maybe time to start creating scripts to auto add an IP to my user but first I’ll look into MySQL SSH tunnel.

You just read It’s December. Please share if you've liked it.
You may find related posts by clicking on the tags and/or categories above.

It’s a New Year (2015)

Alrighty, a new year and a fresh outlook for the year. It seems that I try to attempt starting up new things at the start of every year as well as stop doing other things.

I decided to deprecate and/or defunct many of my person projects primarily because I used to think a lot about what I’d like to do for the future and some projects just dragged on and/or lost interest. I’ll give examples: Celice was supposed to be a lightweight modular JS game engine, but I found a far better engine, so there is no point in continuing. I lost interest in Dark Gale because there is not much interest in games like it anymore, so no point in adding new content. Excerion System is a library of stuff I collected during my development days of Dark Gale and whatever else, but there seems to be a resurgence in libraries for PHP, JS and Java, so again there is no point of maintaining my own. There are other projects I just lost interest in or will hold on for later as an idea.

What I’d like to see this year is a new personal website layout as well as tech/help-focused content, my personal projects: Project Flare and Excerion Central being worked on and finally an updated sense of self :D.

Project Flare is a comments system that pushes the community to moderate itself based on Karma (which is mutable/changing). There’s also a social aspect to it as well, but you don’t explicitly choose your friends/followers. There are interesting ways to approach this comments system, but I will continue to develop the idea then build a prototype then get some test runs at small places on the net who are interested.

Good 2015 to all!

You just read It’s a New Year (2015). Please share if you've liked it.
You may find related posts by clicking on the tags and/or categories above.

Deleted Database Server

I stupidly deleted my database server, so all my blog posts from now to Spetember 2013 are gone. 😐 I think it may be possible to recover some blog posts from Google or the Internet Archive, but I wouldn’t count on it.

Anyway, I think it gives me a reason to start pruning posts towards what my ideal for this site is.

You just read Deleted Database Server. Please share if you've liked it.
You may find related posts by clicking on the tags and/or categories above.

Facebook Production Engineer Interview

I was asked to send my resume in March/April-ish? Fast forward to the recruiter interview in April.

She asked me standard questions related to experience and interests. I stated I was more interested in statistics programming based positions and so she wanted to cut off here and refer me to the team of data analysts, but I said no I’m interested in this position. Let’s just say I suck at selling my interest when she asked me to ‘convince her of my interest,’ but she gave me the benefit of a doubt, I assume, and continued to ask me several systems administrator questions. Apparently, being a new grad I knew more than the average new grad, so I was asked to provide time slots. After a period of no response, I figured the team wasn’t interested anymore. Anyway, she eventually came back with a contact to provide details to for scheduling, so it was scheduled eventually.

The first phone interview was cleaarrrly with a dedicated systems administrator as he seemed new or nervous to interviewing. He asked me to code a  function to read from a file and do a data transformation (add new column and sort) and spit out the biggest row based on the new column I think. I asked a few questions after it and he seemed pretty happy. After the phone interview, I was told I had passed it with flying colors or something like that heh.

The second phone interview was a systems interview mostly focused on memory as it seemed to me, but eventually asked about threading, locks (mutexes and semaphores) and etc. It’s a systems interview, what’d you expect? I passed it, but not with flying colors lol. Memory is a difficult topic for me as discussion is always limited in academia.

Anyway, I scored an on-site interview and flew out to SF Bay area. More specifically, Palo Alto at a fancy hotel. Too fancy and expensive, in my opinion. Dinner was like $35 – 50 a day, but I’m glad it was reimbursable  or else I would have not bothered. Fast forward…

The first interview was  little short as the interviewer didn’t know what building I was in. Heh, I wasn’t told what building number to go to, so the taxi driver, who was a cool guy from Ethiopia with a family here, took me to the building he usually takes candidates. Anyway, the first interview was a code an edit distance function where we only want to know if the edit distance is one. I’ve heard about edit distance before, but coding it? I had no idea how to, so I was stumped for a bit and randomly reasoning out things (should I do this in an iterative manner? yeah why not. Revelation moments later, okay lets do this recursively) until something suitable came out. Something did come out at the end, but it wasn’t satisfactory to the interviewer. I mean hey, I’ve never taken an algorithms class and I was pretty close to the solution (two areas in the code where I screwed myself). I’m sure if I tested more than one case I would have been fine, but w/e. On a computer, I would have tested it rigorously, but apparently I’m expected to be that computer for this interview :|. I produced more of an answer for this question than anyone else would have outside of CS right out of school, so I’m sure that wasn’t a factor for this interview.

The second interview was with the manager, which was pretty motivational. Basically said that the interviews for this role emphasizes coding and systems knowledge. Here I’m thinking to myself, yeah I have both those and more to offer. I liked this part as it took my mind off the first interview.

The third interview was a coding interview, which reeked of what I did in the first phone interview with a twist. Read from file, count words, sort, then spit out top 10 most frequent words. It took awhile for me to get past the sorting part because I wanted to innovate and create a bucket of 10 words where I would push in words that were either contained in between the current maximum and minimum or greater than maximum and pop out the minimum and adjust. I figured I couldn’t code it in time and erased it then used usort to simplify this as much as I hated the idea. We then discussed potential systems related problems with the question and how we could theoretically improve it. After the general interview I realized, I screwed up and used usort instead of uasort, which keeps the associative keys while sorting.

The fourth interview finally was a systems interview, where I believe I was the best (systems programming was an enjoyable class). He discussed a few systems related things such as processes/threading (differences between processes and threads) and asked me to write down somewhat detailed steps of what happens when the user presses enter when submitting an url to the point the browser gets the data, which pretty much tests a vast majority of general knowledge of networking (dns), processes, kernel, etc. This is the sort of thing that I try to understand, so expressing that was definitely enjoyable. Anyways, we discussed that to the end of the interview and I say it was a good question to end with. He was curious to whatever else I might have known and suggested resources to fill knowledge gaps.

Afterwards was lunch with the fourth interviewer and we discussed more about tech and some other interests. I can’t talk sports unfortunately. I’d rather play than talk about the pros. 😀

After all of that, I was still rejected. 😐 It seemed that the first interview (edit distance) was so negative that even the fourth interview couldn’t counteract that. My third interview wasn’t bad, it wasn’t mind-blowing, but there is no way it could have been negative. I have no idea how one interview destroyed my chances of working at Facebook, but okay I’m not going to fight the decision. The decision was made after some deliberation (more than a week of meetings I guess), so I’m sure there was some nit picking (noticed things I didn’t) involved in the interviews. I thought I fit the position, as it sounded more interesting after the second interview. Apparently, experience, fitness and interest doesn’t matter as long as one interview somehow shows you suck even if not true in the general case.

I do thank the fourth interviewer for believing in me enough to take a chance and attempt to fight the decision, but you can’t win every battle, which is a bad way of looking at it in retrospect.

Arenanet Data Analyst Interview

Being a statistics major, it’s natural to desire a data analyst position. I was emailed about a recruiter interview and was asked to give time slots. I did, but the recruiting lady did not respond. I emailed the recruiting lead then was told by the recruiter that she “missed” my email and scheduled after a week. It appeared no one knew the interview process for this position as I would be told the next step, but then have it switched because it was not the next step.

First there was a recruiter lead interview, which was very short because he was outside after a meeting, supposedly anyway. Took about 10 days after that to get an interview scheduled with the lead. Very slowwww response times at this point…, sure she was apologetic, but there’s only so much days of non-response you can take before you think they are flaking out.

After that was a test, which is when response times got faster. The test contained 5 questions, 3 SQL questions and 3 math questions.

I don’t remember all the 5 questions, but I’ll try to summarize them:

Given a beauty product that claims it reduces heart disease and it is retracted 6 months later, what is the most likely reason?

Given that you are in the future with all information on people in 2012, how can you estimate human value?

Given that players are more likely to spend money while being in a guild and we upgrade the guild experience, what are the reasons for this?

What 5 statistics about Guild Wars 2 do you want to know?

I don’t recall the last one.

Honestly, I have no idea what these questions were testing. The “in the future” one is very much superfluous. Wtf is human value? I wanted to can this test after answering those five questions as anyone could answer them with LOGIC.

The SQL questions were just that, SQL queries and one optimization query (extra credit) referring to the use of temp tables, distinct and count. I don’t know why the heck anyone would use a temporary table instead of a subquery, which automatically does that. Anyways, I figured it would be better to count first then filter instead of creating  a temp table, which is the filter, then use that filter as we are counting. The table large and given the fact that the prediction algos in the cpu would fail given the filters I would assume count 1-5 million row with a filter would be slower than just counting without a filter, but what do I know? I should have stated that exact assumption I guess.

The cpu prediction algos tell  the cpu which branch to take given an if statement, so I would think counting in a big table without a filter would be quicker than with. I assume there’s not as much CPU stall during the count without filter  hence why it would make a difference. Wtf do statisticians know about Computer Architecture anyway.

There were 3 math questions: 1 systems of linear equations, derivative and integral. I couldn’t tell what the question with the systems of l.e. was asking at the time as poorly worded as it was. Simply could have said these next two equations are part of a system of linear equations please find x and y or even find the intersection of these two lines described by the two equations instead of posting two numbered equations with ” find x, y”, which I misinterpreted understandably as find an x, y in these two lines. the only challenging question was the optimization query because it was on paper rather than having a cpu to test it. Poorly worded and poor test for finding suitable candidates.

I was rejected based on ‘mastery’ (w/e that means) after the test, which is BS in my opinion, considering how fit the position and company’s position is to my background, but what can you do when these people know nothing about you or your dedication. Less risk in hiring people that you know I suppose… I was hoping to talk statistics (being a data analyst and all) in an actual face to face interview to show I know what I’m talking about and therefore lower the risk. I think they made a significant prediction error in their decision, which is fine for me because I don’t believe I will be applying again (a big f-u). Reject me once and you’ve lost my overall interest and excitement and believe me the prospect of working for a games company is exciting for me as long as I’m not programming (it’s very specialized). ;]

There is no monetary damage from posting trivial questions online therefore I will not be removing them regardless of your NDA.

You just read Arenanet Data Analyst Interview. Please share if you've liked it.
You may find related posts by clicking on the tags and/or categories above.