Sunday, February 12, 2012

Interviews at Microsoft

This is how my Microsoft paid room looked like at the 5 star Westin
Just this past week I got offered the chance to interview at Microsoft HQ in Seattle, Washington for a summer internship. I got admit, I was a tad bit nervous. I had never flown out to Seattle before, or was familiar with the area. I had never, either, been to this long of an interview process before. Most of my interviews consisted of simple phone interviews followed by either technical in person interviews or over the phone ones. I usually feel like I have much more game in my interviews when they are in person. I hate talking over the phone as for some reason, it taxes my mind more and causes me to relapse in my thinking when I'm talking to people. Truthfully, I didn't feel too scared about Microsoft just because it was going to be in person. The only thing that threw me off was that they were going to be three interview sessions, all of them back to back.
I've gotten a lot of questions about the interview with Microsoft and how I did. I'll answer what I legally can.

What did they ask?
Sadly, I can not answer this question. What I can say is that some questions were technical, others were not. When going into interviews like this, I would recommend just to brush up on what you already know and have done and make sure you can code in one language strongly (know all the library functions and so on). This will greatly help you in your interview process. 

How professional was it?
It was a professional interview. These were professional questions being asked by some of the top minds in Microsoft. They did not want to hear about one's private and social life. That is why I kept on topic with what was being addressed. The only thing I brought in was the different types of community service I do to give back to the community. I also bought up my love for being outside, the outdoors, and how I was interested in the Seattle area because they had a lot beautiful places to hike.

What did you wear?
They said to dress comfortably. By golly, I dressed comfartably. I wore some nice dark blue jeans and a striped blue v-neck shirt. I topped this with a red American Apparel sweater with a fashionable brown scarf. I also had my nice red converse. I looked underdressed compared to everybody else, but I also gave off an air of confidence and audacity just coming in like that. I looked like a CS major who was interested in some cool work at Microsoft and seeing what they had to offer.

How did you do?
I really don't know. If I do get an offer letter, I'll be getting it within the next few weeks. I am interviewing with other places right now, so there will be a little bit of a rush if letters come and go at different times. I already have turned down an early offer with GE Healthcare because I didn't find it to link my exact interests at the moment and because it was so early. I had asked to extend it, before I knew what my chances were this summer, but this was not able to be done.

Any tips on interviews in nature?
A good thing to remember is just to be yourself. Be comfortable, talk and be friendly. Be confident, and not afraid, you got this already! You are a beautiful person. If you weren't, why wouldn't you have been asked to interview. They're interested. They just want to see how you perform, and how well you perform. If you are having a technical interview, you should just talk through every problem that you're doing and make sure to ask them a lot of questions and clarifications. This shows that you want to understand the whole problem before you even attempt a solution. You don't want to make a half-baked solution!

I did all of these things while at Microsoft and I did feel like they really showed Microsoft what kind of a person I am and how I program. That's what really mattered in those whole interview.

-Tron

Friday, February 3, 2012

First startup, Ruby on Rails

I got emailed at the end of last quarter (in December) about the chance to join a very early startup. The deal was that I was going to do all the programming, while the person who is hiring me out to help and join is going to provide me with everything I will need to produce this site.

When I originally signed the contract to finish this site, I was thinking of programming it in pure HTML, PHP, Javascript and AJAX. I've done it before, but for smaller projects then this. Then it hit me to try and learn something new, try something new: Ruby on Rails.

Many startups in Silicon Valley use this language to get their site off the ground and produce a really quick site. The language, seemingly at the moment, provides ways to make things easier by working off the MVC model. The model is very simple. Simply a program interacts with my "view" (the html window), and my code to handle input and output from the sight to my database.

I've never worked with Ruby before, but things are going well now. I'll release what I'm writing later when the code actually does something. What I will not release will be the main algorithms behind the scenes running what the startup is about. 

Thursday, February 2, 2012

A little of my research

So being a poor college student at Stanford, I was given federal work study funds; I just needed to find a job to work for them. I looked at the cdc website and found a job with the Walbot Research Lab. They do work with the genetics of dahlia flowers and zea mays (maize). Some of their research has revolutionized corn production and ways to make the perfect corn.

For them, I do lot website work and DNA blasting. The website work is pretty straightforward. I made this little app on their website to organize all their flowers in a sortable table that depends on a text file stored from the server. This is operable on all current day browsers.

The code was pretty straightforward. I read in all of the flowers using some AJAX and then from there, displaying them with "sort" buttons on top. Anybody can use this code, as long as they mention me in the comments above.

this is how I run the blast
I also do DNA blasting as a bioinformatics research assistant. This involves using a program from NCBI (National Center for Biotechnology Information). It's pretty cool work. I get in their DNA probes that they've gotten from analyzing zea mays and I run the probes against datasets from the NCBI website. This is all done on my personal Macbook pro.

I don't know biology, or don't really understand the fullness of the work I'm doing, but I know I'm helping out this lab. I'm happy that I get to work with them on these exciting projects :)

Wednesday, February 1, 2012

CS 107 Rage

So here I am programming for my class in 107. I'm pretty behind on the assignment due to a long weekend helping out with the job fair and doing my duties to it. The job fair approximately took about 20 working hours out of my weekend, setting me way too far behind. I'm coming up to the deadline, and I need to finish my assignment.

This whole assignment deals with find misspellings in text files and finding the most likely correction.  The main algorithm of this program deals with finding the levenshtein distance between two words. This is basically the number of edits it takes to get from one word to the other. My edit_distance function at the moment was running perfectly, except for the huge amount of recursive calls it was using.
This works on levenshtein distance

I've fixed several errors that were pretty small and simple. A bad find_min function and a missing ++i and it seems to be all working pretty well. What is not working well is my recursive find_edit_distance function. I can't get the recursive statement to quit early. Without going into too much detail on this assignment here, due to Stanford legality.

I knew that I needed a function that could quit out early because I was only looking for the top five misspellings. There was no need to keep recursing if the number of edits was more then the "weakest" function in the top five misspellings. I decided to pass in a max, to try and help with this.

I couldn't figure out how to quit early, though. I should've trusted my instinct and passed in a fourth variable. The thing that bothered me was that this ruined the magic of recursion. There was no need to return a distance then. It was unneeded. Midnight was rolling around, but I still held my head high that there must be some way to cancel out early.

Sadly, midnight passed and I realized that I did need a fourth variable. I turned in the assignment an aggravating 8 mins late, but it was working perfectly and it was as fast as the solution. I felt good, accomplished, but pretty peeved because I had something that I was using this fourth variable. I felt dumb.

This could've been solved by using dynamic programming with a matrix that would allow for me to quit early when I was already computing edit distances that were too big. Sadly, though, I had to butcher recursion. I committed a most high foul crime in Computer Science that I'm not sure I will ever forgive myself about.


Monday, January 30, 2012

The benefits of late night coding

I don't care what people tell me, sleep is always important. It refreshes my mind, allows me to think more clearly about the project at hand, and really create strong code. Sometimes, we all run into deadlines. We run into times that we need to finish code now, we need to have our part of the project done by tomorrow. It is during these times code can become messy and filled with errors. 

It's bad, it's something that shouldn't be done, but it happens. During this time, I have realized something. My mind flows. It's feels like liquid helium. My thoughts are loose and ill fitting, but end up coming together on parts of the code. It is here that I become extremely creative. My mind loses the constraints of the sobriety of sleep. I begin to enter in, to say the least, the Twilight Zone. I lose meaning with time, with my feelings, with what I hear in the physical world, and the metaphysical. I become, essentially, one with the mind of my code. 

These manifestations are probably bad, yes. It is the sign of a mind deprived of sleep to a critical point. Here, though, I see my code truly. I see all the memory that code controls, I see it's interactions on a personal level. I see what's wrong, and things that can be improved. I see what looks beautiful, and what doesn't. I rewrite like a mad-man, lost in the fathoms of my mind, drawn from the physical world. I wake up though, feeling tired, my code finished, clean, beautiful. I then usually proceed to pass out at 4:00, my computer left to recharge under the silhouette of the moon. 

I have realized, yes, this type of coding is beneficial. You think of new ways to optimize your code that you hadn't thought of before. You see the intricacies of the connections of your algorithms and data structures and really get to create something beautiful. It is dangerous for the body to keep doing this. This technique is powerful when these coding sessions are sparse throughout your projects. People who say that computer scientists are crazy for coding like this don't understand the metaphysical properties of code, of your legacy, your pride, written into a machine. They don't understand how it is to be so close to it, and to truly understand it. 

This is why I am coding, now as we speak, till four in the morning. My heart is wary, my hands are tired, but I am starting to really understand my code. Tomorrow, I will raise know head high knowing I did well. I am a proud coder :)

Sunday, January 29, 2012

Opportunity Job Fair

I made this! :D
So I'm one of the Marketing Chairs for OJF. I helped with spreading the good word of OJF and getting people to come. It was an amazing fun chair to hold as I got to create flyers, keep the Facebook updated, and excite people about the largest job fair at Stanford. It was hard work, but I think worth it as I got to network with many company reps before the fair even started.

There are little things I do before I go to the fair as well though. I found these little hints to be helpful for people looking for a job or internship.






Make a list of the companies you want to talk to before.
This little hint made sure I wasn't confused when I arrived at OJF. I knew who I was going to talk to, what the company did, and little facts about them I thought I would need to know. I didn't wander around confused. I didn't act dazed when I arrived at company's booths. I knew what I wanted.

Apply online a week before the fair to any you can
Many companies I wanted to apply to had applications online. Filling this out gave me a opportunity in obtaining an interview while they were here at fair. This also impressed and threw off recruiters when they told me to apply online and I already had. They would talk to me longer then and really get to know me. 

Print a specific resume per company
doesn't that look so nice for them :)
This impressed companies beyond anything. Handing in a normal resume looks cool, but handing in one with the company name in the objective line looks amazing. Many recruiters circled that I had done that and would open to me even more.

Know who you are
I knew who I was and what I was strong in before I talked to companies. I would talk to them about who I was, what I liked to do and what I was looking for in the summer. I made sure to highlight my team skills and how important it was for me to collaborate. 


The last thing to remember is to remain spunky and talkative. You own this, you got this, you're an awesome person.

These little things will garner you an awesome upper hand for any job fair.

Life at Cisco

I know I blogged a little about what I did last summer, but I didn't elaborate. I was a Cisco Choice Intern working at Cisco HQ in San Jose. I worked in the STBU or Secure Technology Business Unit group underneath my awesome and very helpful boss Ajay Garg. My mentor who helped me a lot and was a great awesome person was Kanika Thapar. My team was very helpful during my time at Cisco.

It worked a little like this
During the internship, I worked on Cisco ASA, a enterprise firewall system fixing the infamous time_t bug. It was an intense, quick paced project as I had to crawl through a million lines of code and fix erros, plus add new functions to be able to handle this now larger data type. During one part of the internship, I had to teach myself atomic operations and threads. I added new functionality to atomic compare and exchange a 128 bit piece of data. I did this in a matter of 3 days. When I work on something, I give it 110%.