Friday, February 1, 2013

How to buy a used car in the US

You might think this has nothing to do with research, but when you come to think about it, who needs to buy a used car more than a grad student! I figured it's more efficient to write down my experience instead of answering individual requests:

  1. Determine a budget
  2. Determine a few make/model/year-range combinations
    1. the purpose of this step is to constrain your search in next steps. This is important because comparing deals in the market is much harder when you are not constrained to a few such combinations. 
    2. find out which make/model/year-range combinations satisfy the following constraints:
      1. within your budget
      2. available in the market (e.g.
      3. have good specs (e.g.
    3. generally speaking, Japanese makes have a good reputation of being reliable and cost-effective. American makes are usually cheaper but less reliable (their average expected lifetime is considerably shorter than that of Japanese cars). European makes (especially German) are also reliable but more costly to maintain.
    4. if you have child(ren), I recommend getting a van (or an SUV). Other vehicle types are usually too small for your child(ren). 
    5. given the (high) prices of gas in the US, an important detail is the average miles per gallon (MPG) for a given make/model/year.
  3. Hunt for good deal(s)
    1. best of all: try to find a trustworthy person in your local community who wants to sell his car (which has few problems).
    2. decide whether you want to buy from a dealer or an owner. Dealers have to make money, so a (normal) dealer's price will be a few hundred dollars more expensive than a (normal) owner's price. However, you will be far less concerned about frauds if you buy your car from a trustworthy dealer. Imagine how anxious you would be when you want to finalize the deal with an owner you don't know, and give him/her a few thousand dollars!
    3. is a good place to start looking. 
    4. consider trustworthy local dealers (which are hard to find).
    5. ask the seller if the car had any serious accidents or fails emission tests. 
    6. ask the seller to give you the car's VIN number.
    7. this is obvious, but it doesn't hurt to state it. Do not buy a car remotely from someone you don't know no matter how tempting the deal is. It is a fraud.
  4. Check VIN
    1. (this is a paid service. You can buy a bulk so that price per VIN lookup is cheaper). 
    2. if the carfax report shows that the car had serious damage, failed several emission tests, is stolen ...etc, go to step 3.
  5. Check at a mechanic
    1. find a reasonably priced (less than $50) mechanic
    2. ask the mechanic if the car has major mechanical or electrical problems. if yes, go to step 3.
    3. if the mechanic approves of the car, and you like it, don't waste your time and money, and buy it.
    4. in case of minor problems, ask the mechanic how much would it take to fix them, and use this information to negotiate the price with the seller.
  6. Make necessary repairs and maintenance

--update 2/2/2013: a friend asked me to add a warning that multiple names may be on the title. In that case, you have to get EACH of the owners to sign for you. Otherwise, the new title will have other names in addition to yours (legally, you won't own the car all by yourself).

Monday, January 21, 2013

The pomodoro technique

If you are the kind of person who easily gets distracted with emails, phone calls and minor tasks, you may find the Pomodoro Technique useful.

  1. get a count-down timer
  2. pick a task
  3. set the timer to 25 minutes (aka. a pomodoro)
  4. work on the task, with no interruptions until the pomodoro ends.
  5. add an(other) 'X' mark next to the task (even if it's not completed).
  6. take a short break (3-5 minutes). after four pomodoros, take a longer break.
  7. while task not complete, go to step 3.
  8. after a task is completed, count the number of X's to get a sense of the time spent on it.

  • time management should be simple
  • frequent breaks improve mental agility [ref which I don't really understand :-)]
  • increased awareness of the time spent
  • reduce the time spent on distractions

I've been following the pomodoro technique for a little over a month now, and I think it did help me spend the time more efficiently (at least when I'm serious about it). I'd like to highlight a few problems and how I attempted to fix them:

problem: just because you shouldn't be distracted in the middle of a pomodoro doesn't mean you won't. 
solution: every time I get unnecessarily distracted, I punish myself by resetting the pomodoro.

problem: the short break is too short.
solution: make it a little longer. I found 10 minutes to be a reasonable time.

problem: when tasks take too many pomodoros, I lose any sense of achievement.
solution: spend the first couple minutes of a pomodoro thinking about the focus in this pomodoros. then, spend the last couple minutes of a pomodoro documenting what you have accomplished (regardless of how little/insignificant it was).

complementary tools:
While I found this technique to be quite effective, it doesn't address all time management problems. I use rememberthemilk and github issues to track my tasks and prioritize. I keep all my time-constrained commitments on the calendar to make sure I'm not double booked. ...etc

Sunday, September 9, 2012

Choosing an advisor

Recently, I've been in touch with many students in the process of finding a PhD advisor. While it's not impossible to change advisors, it usually comes at the cost of more time spent in the PhD program. Here's a list of things you can do to improve your chances of finding a good match:

For each potential advisor X, do the following:
  1. Make sure you don't have a problem with X's research interests.
  2. Make sure you can get along with X.
  3. Talk to X's current students about X's pros and cons. Ask clever questions since many students refrain from discussing the downside of their advisors with a stranger. Don't forget to ask if X is too (dis)engaged with his students. This step also helps you find out more about your potential academic siblings.
  4. Find out what project would fund you. Is it a long-term or a short-term project. If it's a long-term project, make sure you like it.
  5. Find out if X has a tenure, in tenure track, or neither. Non-tenure (track) faculty are more inclined to leave their academic institution and find a better position somewhere else, which is -usually- a bad thing for their students. Tenure-track faculty are more inclined to work harder, and tend to be more demanding (which can be good or bad, depending on who you are). 
  6. Collect some statistics about X's research group. How many students does X advise? A very large number (e.g. fifteen) usually means X won't have time to interact with you, and a very small number (e.g. zero/one) usually means X has problem with funding (or a new hire). Find out what's the average lifetime of X's students in the PhD program; the variance is usually small. 
  7. Find out if X collaborates with other academics (inside or outside the department/school). More collaborators usually mean a well-connected advisor, which can be very useful for your marketability.
  8. Find out where does X's graduates go.
  9. Meet with X. Ask smart questions. Be ready to talk about your previous work.

If feasible, do a research project (e.g. in a lab or a regular course) with your preferred advisor before committing to be his student. You might change your opinion after working with him/her for a while.

Monday, September 26, 2011

The evolution of intellectual freedom

I thought I would joke about this before it becomes a bitter reality!

ref: PhD Comics

Wednesday, April 27, 2011

The seven secrets of highly successful PhD students

Vitae is an organisation championing the personal, professional and career development of doctoral researchers and research staff in higher education institutions and research institutes.

Their website has a number of useful resources for graduate students. One of them is a document titled "The seven secrets of highly successful PhD students". Here's my summary:

1. Keep in touch with your supervisors.
2. Write often.
3. Be realistic about your contribution and yourself (being different than your PhD).
4. Avoid distractions.
5. Treat PhD as a job.
6. Ask for help.
7. Understand it's all about persistence.

Many thanks to Dina Said who let me know about this resource.

Saturday, March 19, 2011

[metapost] Apology

I apologize for being away for a while. A number of significant events in my personal and professional life kept me busy for the past few months.

First and foremost, as of today, I'm the proud father of a sweet baby girl. She got beautiful eyes, minute fingers, loud cries, lovely smile and she has got a name: Salma. I'm planning to make friends with her, but she doesn't seem to be an easy girl. She seems to know her mother very well, though.

Another significant event that occurred to me of late is the Egyptian revolution. I didn't feel so much pride being Egyptian until that day! Although I was thousands of miles away from the Tahrir Square (center of the Egyptian revolution), I was honored to participate with my voice to form the international pressure on Mubarak's regime.

On the professional level, I have recently joined the Machine Translation team in Microsoft Research, Redmond. This team is a blend of talented researchers and engineers working together to push the boundaries in this field AND shipping that to create a competitive solution. I'm definitely proud of belonging to this team.

The last piece of news I'd like to share with you today is that I got offers from CMU, UMD, UBC and Purdue graduate schools. I'm planning to visit a couple of them before deciding where I'm gonna spend the next 5 years of my life.

I'm back!

Friday, October 15, 2010

How to be on top of your field

Most computer science fields are fast moving. There’s a lot going on all the time at universities and research labs. Hundreds of publications appear every year through the few major conferences and journals of a field, not to mention venues with lower ranking. It is particularly important to keep a close eye on the advances going on in your field because research is –usually- incremental. You start where others left off. If you don’t know the recent findings of other scientists in the field, you will have hard time figuring out what topics are important, what approaches are popular, what the state of the art solving a particular problem is, etc.

Problem is: we spend a lot of time working on a particular project, taking care of our day-to-day job responsibilities, and trying to meet deadlines. It’s not uncommon for such activities to take up all the time we have, leaving no time for expanding our knowledge learning about recent findings in the field.

One way to solve this problem is to attend related major conferences. In addition to learning about new advances presented in the conference, you will have the opportunity to mingle with other researchers working on similar/related problems which may lead to collaboration projects. Unfortunately, this is not always a viable solution. Who got the bandwidth and resources to attend all related conferences!

Another solution that’s more affordable for research groups in universities as well as research labs was described by Prof. Azer Bestavros as follows:
  • Each member in the group maintains a list of interesting papers s/he would like to read, covering last year’s proceedings of the major conferences and journals in the field.
  • Schedule a recurrent 15-minutes meeting (frequency depends on the group size) in which one of the group members gives an overview on a paper in his list.
For example, a group of size 10 may choose to hold this meeting every other day. This way, every member gives 0.5 talk per week and listens to 2.5 talks per week. Good deal, huh?