Monday, April 27, 2009
New updates coming soon!
I apologize for the lull recently in updates. I've been really busy with finals and just started my new job today. I promise I'll have real posts coming soon!
Thursday, April 23, 2009
Farewell, Citi
This is my farewell email I sent out to my coworkers today. I decided not to send it tomorrow since I might not get to see all the responses.
-----Original Message-----
From: Jou, Alexander [CMB-IT]
Sent: Thursday, April 23, 2009 3:01 PM
To: Jou, Alexander [CMB-IT]
Cc: 'ajou07@gmail.com'
Subject: Farewell
For those who don't know already, my final day at Citi will be tomorrow, Friday the 24th. I wanted to take this opportunity to say how much I have enjoyed my two years here and to thank all the people who made it possible.
I have had the good fortune of working with many talented and helpful individuals. They made an enormous effort to help me improve as a person and a software developer. Many of the faces I see everyday I will surely miss and be sadder for that loss. I am indebted to my current and former coworkers for making my time not only educational and productive but also fun and a pleasure to be here. I honestly believe that I was lucky to be given such a great opportunity here where I loved my job.
As for my future, I am in my final year of college and planning to work at a small software development company in Boston while I complete my degree. I hope any of you who wish to keep in touch aren't afraid to do so, and hopefully I will meet up with some of you again.
Thank you very much for being with me in the good times and offering your support in the tough times. I wish all of you the best of luck in your current and future endeavors. Thanks again!
-Alex
ajou07@gmail.com
-----Original Message-----
From: Jou, Alexander [CMB-IT]
Sent: Thursday, April 23, 2009 3:01 PM
To: Jou, Alexander [CMB-IT]
Cc: 'ajou07@gmail.com'
Subject: Farewell
For those who don't know already, my final day at Citi will be tomorrow, Friday the 24th. I wanted to take this opportunity to say how much I have enjoyed my two years here and to thank all the people who made it possible.
I have had the good fortune of working with many talented and helpful individuals. They made an enormous effort to help me improve as a person and a software developer. Many of the faces I see everyday I will surely miss and be sadder for that loss. I am indebted to my current and former coworkers for making my time not only educational and productive but also fun and a pleasure to be here. I honestly believe that I was lucky to be given such a great opportunity here where I loved my job.
As for my future, I am in my final year of college and planning to work at a small software development company in Boston while I complete my degree. I hope any of you who wish to keep in touch aren't afraid to do so, and hopefully I will meet up with some of you again.
Thank you very much for being with me in the good times and offering your support in the tough times. I wish all of you the best of luck in your current and future endeavors. Thanks again!
-Alex
ajou07@gmail.com
Saturday, April 18, 2009
Intermission #2
Moving furniture larger than the size of a lounge chair should really be done by professional movers. It is not only dangerous and inefficient but incredibly painful as well to do it with just friends.
Monday, April 13, 2009
Networking around
One of my managers at Citi was laid off recently and is now in the process of looking for work after giving... 15? years to the company. He just started his own blog about his search process and life in general which I think is pretty interesting.
For those who also want to see it (or perhaps hire somebody :) ) click here for the blog.
For those who also want to see it (or perhaps hire somebody :) ) click here for the blog.
Wednesday, April 8, 2009
A job decision made, and a future selected
I decided to choose Power Advocate over the other company. It was an extremely hard choice, and I've spent the past two days agonizing over it. I asked all my friends, my family and my co-op adviser for advice.
Ultimately, it came down to two things- one, the great location; and two, the personal interest and effort that one of their employees made to bring me on. Nonetheless, I don't think I could have made a wrong decision. I'd like to think that either job would help me grow my career and be someplace I can be happy in, and pay the bills of course. :)
Calling the VP at the other company to turn him down was FAR more nerve-wracking than the original interview, which I thought was ironic. I felt terrible turning down such a great offer.
Ultimately, it came down to two things- one, the great location; and two, the personal interest and effort that one of their employees made to bring me on. Nonetheless, I don't think I could have made a wrong decision. I'd like to think that either job would help me grow my career and be someplace I can be happy in, and pay the bills of course. :)
Calling the VP at the other company to turn him down was FAR more nerve-wracking than the original interview, which I thought was ironic. I felt terrible turning down such a great offer.
All the things that make up life
I got this from a former manager of mine, Arthur Bright. I assume he got it from somewhere else as well, but I don't know who to attribute it to. Nonetheless, it's still a touching little piece.
When things in your life seem almost too much to handle, when 24 hours in a day are not enough, remember the mayonnaise jar and the 2 Beers. A professor stood before his philosophy class and had some items in front of him. When the class began, he wordlessly picked up a very large and empty mayonnaise jar and proceeded to fill it with golf balls. He then asked the students if the jar was full. They agreed that it was.
The professor then picked up a box of pebbles and poured them into the jar. He shook the jar lightly. The pebbles rolled into the open areas between the golf balls. He then asked the students again if the jar was full. They agreed it was.
The professor next picked up a box of sand and poured it into the jar. Of course, the sand filled up everything else. He asked once more if the jar was full. The students responded with a unanimous 'yes.'
The professor then produced two Beers from under the table and poured the entire contents into the jar effectively filling the empty space between the sand. The students laughed.. Now,' said the professor as the laughter subsided, 'I want you to recognize that this jar represents your life. The golf balls are the important things---your family, your children, your health, your friends and your favorite passions---and if every- thing else was lost and only they remained, your life would still be full. The pebbles are the other things that matter like your job, your house and your car. The sand is everything else---the small stuff. 'If you put the sand into the jar first,' he continued, 'there is no room for the pebbles or the golf balls.
The same goes for life. If you spend all your time and energy on the small stuff you will never have room for the things that are important to you. Pay attention to the things that are critical to your happiness. Spend time with your children. Spend time with your Spouse. Spend time with your parents. Visit with your grandparents. Play another 18. There will always be time to clean the house and fix the disposal. Take care of the golf balls first---the things that really matter. Set your priorities. The rest is just sand.
One of the students raised her hand and inquired what the Beer represented. The professor smiled and said, 'I'm glad you asked.' The Beer just shows you that no matter how full your life may seem, there's always room for a couple of beers with a friend.

When things in your life seem almost too much to handle, when 24 hours in a day are not enough, remember the mayonnaise jar and the 2 Beers. A professor stood before his philosophy class and had some items in front of him. When the class began, he wordlessly picked up a very large and empty mayonnaise jar and proceeded to fill it with golf balls. He then asked the students if the jar was full. They agreed that it was.
The professor then picked up a box of pebbles and poured them into the jar. He shook the jar lightly. The pebbles rolled into the open areas between the golf balls. He then asked the students again if the jar was full. They agreed it was.
The professor next picked up a box of sand and poured it into the jar. Of course, the sand filled up everything else. He asked once more if the jar was full. The students responded with a unanimous 'yes.'
The professor then produced two Beers from under the table and poured the entire contents into the jar effectively filling the empty space between the sand. The students laughed.. Now,' said the professor as the laughter subsided, 'I want you to recognize that this jar represents your life. The golf balls are the important things---your family, your children, your health, your friends and your favorite passions---and if every- thing else was lost and only they remained, your life would still be full. The pebbles are the other things that matter like your job, your house and your car. The sand is everything else---the small stuff. 'If you put the sand into the jar first,' he continued, 'there is no room for the pebbles or the golf balls.
The same goes for life. If you spend all your time and energy on the small stuff you will never have room for the things that are important to you. Pay attention to the things that are critical to your happiness. Spend time with your children. Spend time with your Spouse. Spend time with your parents. Visit with your grandparents. Play another 18. There will always be time to clean the house and fix the disposal. Take care of the golf balls first---the things that really matter. Set your priorities. The rest is just sand.
One of the students raised her hand and inquired what the Beer represented. The professor smiled and said, 'I'm glad you asked.' The Beer just shows you that no matter how full your life may seem, there's always room for a couple of beers with a friend.

Tuesday, April 7, 2009
X vs. Y
If I offered you a job with a 40 minute longer commute a day, but you made an additional $18, would you take it?
I'm currently down to two competing offers involving two great companies that I'd love to work for, and it really is coming down to things like that. I really like the employees and the work at both, and it's the small details separating them now.
Another question to consider:
Would you prefer being a "big fish in a small pond", or a "small fish in a big pond"? Would you rather go someplace where you're really wanted and valued but have extremely high expectations, or someplace where you're just another face in a crowd of very talented individuals but there isn't as much pressure to succeed? Neither answer is wrong, just different.
I'll make my decision on jobs tomorrow. I feel really bad about declining an offer from the other company however, since under any other circumstance I'd take their offer in a heartbeat.
I'm currently down to two competing offers involving two great companies that I'd love to work for, and it really is coming down to things like that. I really like the employees and the work at both, and it's the small details separating them now.
Another question to consider:
Would you prefer being a "big fish in a small pond", or a "small fish in a big pond"? Would you rather go someplace where you're really wanted and valued but have extremely high expectations, or someplace where you're just another face in a crowd of very talented individuals but there isn't as much pressure to succeed? Neither answer is wrong, just different.
I'll make my decision on jobs tomorrow. I feel really bad about declining an offer from the other company however, since under any other circumstance I'd take their offer in a heartbeat.
Monday, April 6, 2009
More interview questions
Some good questions I got asked today with answers as well:
I also received a logic question at the end which I found interesting. I'll repeat it here:
There are three jars which you cannot see into. One of them contains black marbles, one contains white marbles, and one is mixed black and white (proportion unknown). There are already labels on the jars with "Black", "White" and "Mixed". However, every label is incorrect.
How many marbles do you need to draw out of which jars in order to figure out what should be the correct labeling?
Spoiler (Copy and paste):
The correct answer is 1, and it's out of the mixed jar. The key to the problem is that every jar is labeled incorrectly. If the marble that comes from the "mixed" jar is white, then that jar is actually ALL white. It can't be mixed because all the labels are definitely wrong. Via process of elimination you can figure out the other ones without drawing more ("black" must be mixed and "white" must be black).
- When is machine code generated for java classes? (google Just In Time [JIT] compiler)
- If I compile java code on one OS, can I move the class files to another machine and run them there? (yes)
- Are primitives passed by reference or value to methods? (value)
- What does Microsoft's OLE stand for? What is ActiveX? (Object Linking and Embedding, and google ActiveX)
- Is Java a managed or unmanaged language? Are memory leaks possible? If so, how would you make one? (managed, yes, and too complicated to explain briefly)
I also received a logic question at the end which I found interesting. I'll repeat it here:
There are three jars which you cannot see into. One of them contains black marbles, one contains white marbles, and one is mixed black and white (proportion unknown). There are already labels on the jars with "Black", "White" and "Mixed". However, every label is incorrect.
How many marbles do you need to draw out of which jars in order to figure out what should be the correct labeling?
Spoiler (Copy and paste):
The correct answer is 1, and it's out of the mixed jar. The key to the problem is that every jar is labeled incorrectly. If the marble that comes from the "mixed" jar is white, then that jar is actually ALL white. It can't be mixed because all the labels are definitely wrong. Via process of elimination you can figure out the other ones without drawing more ("black" must be mixed and "white" must be black).

Downsizing

After my (probably) last interview today, I realized that I'm most likely going to be working at a small software company for the first time in my life. Having spent most of my professional life working at such giants as Thomson Financial and Citi, it could be quite a shock to transition to a tiny company with less than a hundred total employees.
There are advantages to being in either situation, and I hope to write a well-informed post contrasting both when I get a chance to get some workplace experience in at my new job.
Northeastern as a rising university
Boston Globe article on how Northeastern is changing toward higher standards due to increased numbers of applicants.
Sunday, April 5, 2009
Intermission #1
Completely unrelated to programming, but one of my female friends I went out shopping with today said:
"I go out shopping to find clothes to wear when I go out shopping."
The clothing industry has won. That is all.
"I go out shopping to find clothes to wear when I go out shopping."
The clothing industry has won. That is all.
Thursday, April 2, 2009
Great (and funny) programming quotes...
... because they're so depressingly true.
Programming quotes
My favorite:
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
My second favorite:
There are only two industries that refer to their customers as "users".
Some other goodies:
Programming quotes
My favorite:
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
My second favorite:
There are only two industries that refer to their customers as "users".
Some other goodies:
- And the users exclaimed with a laugh and a taunt: "It's just what we asked for but not what we want."
- Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.
- If there's one thing worse than a program that doesn't work when it should, it's a program that does work when it shouldn't.
- If automobiles had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.
- Computer Science is no more about computers than astronomy is about telescopes.
- Any code of your own that you haven't looked at for six or more months might as well have been written by someone else.
- There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code.
- Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.
- Before software can be reusable it first has to be usable
- First, solve the problem. Then, write the code.
- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

I'm a coder, damn it.
A conversation at work today got me thinking about my dual major in computer science and information science. I originally picked IS to supplement my CS focus, not to replace it. At heart I am definitely a computer science major, and hopefully no employer will ever think less of my development skills because they see that "Information Science" tacked on to the end of my major. My IS knowledge is mostly aimed at improving and adding to my CS skills.
Or, to put it more simply- I could live with my friends and family introducing me as just a CS major, but I'd blow a gasket if they ever introduced me as an IS major.
Or, to put it more simply- I could live with my friends and family introducing me as just a CS major, but I'd blow a gasket if they ever introduced me as an IS major.

Wednesday, April 1, 2009
DoG Ultimate connections
One of the guys I interviewed with today was a member of the Death or Glory Masters Ultimate Frisbee team! Pretty awesome. He even played with a former high school frisbee coach of mine a while back.
DoG UPA championships
They had a bunch of open club championships a few years ago, and the masters team won fairly recently.
DoG UPA championships
They had a bunch of open club championships a few years ago, and the masters team won fairly recently.

Unit tests- worth it?
The last employer I interviewed with mentioned that they used an agile software development process. For the uninitiated, a good description is below:
http://en.wikipedia.org/wiki/Agile_software_development
A key part of agile is having good automated unit tests that you can run after every build to make sure your new and old code works. That brings forth the question of just how many unit tests you should have when time is a factor.
From my experience at a large financial company, business pressures usually means that your automated tests are patchwork at best. There was no real effort to make sure that all your logic was tested and confirmed. Through the course of test case walkthroughs that may have happened, but it was never explicitly checked as such.
That is unfortunate since I think it encourages developers to manually test their software for the bare minimum. Essentially, they check that their product handles all the typical cases, and then do package breaks and follow up releases when the software breaks on exception cases. The business is trading a somewhat longer initial development period in exchange for a significantly longer support period. This is also a problem when future developers get the code and have no real way to figure out whether it's working as designed.
If I do end up signing on with Power Advocate, I hope they do comprehensive testing. It's far less pressure on the developer when tests are thorough and working.
http://en.wikipedia.org/wiki/Agile_software_development
A key part of agile is having good automated unit tests that you can run after every build to make sure your new and old code works. That brings forth the question of just how many unit tests you should have when time is a factor.
From my experience at a large financial company, business pressures usually means that your automated tests are patchwork at best. There was no real effort to make sure that all your logic was tested and confirmed. Through the course of test case walkthroughs that may have happened, but it was never explicitly checked as such.
That is unfortunate since I think it encourages developers to manually test their software for the bare minimum. Essentially, they check that their product handles all the typical cases, and then do package breaks and follow up releases when the software breaks on exception cases. The business is trading a somewhat longer initial development period in exchange for a significantly longer support period. This is also a problem when future developers get the code and have no real way to figure out whether it's working as designed.
If I do end up signing on with Power Advocate, I hope they do comprehensive testing. It's far less pressure on the developer when tests are thorough and working.
Thoughts on my first job interview in two years...
Just came back from a job interview at a small (~70 employees) software company in Boston. I was ecstatic about how well I did, especially how I could remember pretty vague technical questions that I don't deal with regularly.
Some of the tougher (more obscure) ones:
I won't bore you guys with the filler ones (abstract class vs. interface, definition of encapsulation/polymorphism and why are they good, etc.).
Some good questions I got from coworkers:
Random stuff about the job itself...
Still have two phone interviews tomorrow. There are probably more coming since my resumes just got sent out very recently. We'll see how things play out.
Some of the tougher (more obscure) ones:
- Can you get the JVM to garbage collect on command? If so, how?
- What's the difference between final, finally and finalize in java (only question I "missed"- I didn't remember what finalize was until they hinted at garbage collection. Now, if they had said finalize(), that would have been much easier :D )
- When you override equals(), always override...
I won't bore you guys with the filler ones (abstract class vs. interface, definition of encapsulation/polymorphism and why are they good, etc.).
Some good questions I got from coworkers:
- What's the difference between final methods/classes and final variables? Bonus points if you know why final objects are not immutable.
- When implementing a hashtable, what do you do with collisions? Be specific.

- It's in the old Teradyne building by the Pike in Chinatown! I always wondered what would happen to that place. They tore out some of the interior and made it look nice, but the ceiling and brick walls are still exposed and look old.
- One of the employees budgeted 15 minutes to test me with technical questions, then apologized because I'd answered so fast we had 5+ minutes left.
- The company is a Java/JSP/Ajax shop. It'll be good for me to get experience with web front end software like that, since it's a noticeable hole in my resume.
- The location and the people are nice, and the work seems very interesting. My #1 problem is that I'd be making a lot less than I would at Citi in July. While their rate is competitive with other small software development companies, it's still hard to swallow a pay cut.
Still have two phone interviews tomorrow. There are probably more coming since my resumes just got sent out very recently. We'll see how things play out.
Hello World
Opening post of "My Code's Compiling". Welcome everybody!
For those who don't know me, I'll give you the brief "about me" list.
Who am I?
This blog will be devoted mostly towards my professional and academic pursuits. I know blogs can get pretty long-winded, so I'll try to keep them short and to the point. I'm not the most concise person to begin with so that's doubly bad. Let me know how it goes :)
P.S. I'll try to make updates at most two weeks apart, but I get the feeling that will be as likely as me taking a job that involves coding in C++.
P.P.S. The blog title is a reference to an XKCD comic.
For those who don't know me, I'll give you the brief "about me" list.
Who am I?
- Northeastern University Undergraduate (graduating May 2010)
- Dual major in Computer and Information Science
- Primarily a Java developer, with plenty of perl/sql/shell scripting experience to go along with it
- Hardcore vim user. VIM > Eclipse
- Born and raised in the Boston area
This blog will be devoted mostly towards my professional and academic pursuits. I know blogs can get pretty long-winded, so I'll try to keep them short and to the point. I'm not the most concise person to begin with so that's doubly bad. Let me know how it goes :)
P.S. I'll try to make updates at most two weeks apart, but I get the feeling that will be as likely as me taking a job that involves coding in C++.
P.P.S. The blog title is a reference to an XKCD comic.

Subscribe to:
Posts (Atom)