<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29282035</id><updated>2011-12-30T04:59:34.434-08:00</updated><category term='Word 2007'/><category term='Personal'/><category term='diet'/><category term='AOP'/><category term='Vista'/><category term='Parenting tips'/><category term='health'/><category term='Windows tips'/><category term='weight loss'/><category term='healthy eating'/><category term='.NET'/><category term='Money saving tips'/><title type='text'>Marc Eaddy: Confessions of an Ex-PhD Student</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29282035.post-1406236605882537961</id><published>2011-04-28T14:15:00.000-07:00</published><updated>2011-04-28T14:16:46.333-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diet'/><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><category scheme='http://www.blogger.com/atom/ns#' term='health'/><category scheme='http://www.blogger.com/atom/ns#' term='healthy eating'/><title type='text'>Sugar: The Bitter Truth</title><content type='html'>The &lt;a href="http://www.youtube.com/watch?v=dBnniua6-oM"&gt;"Sugar: The Bitter Truth" lecture&lt;/a&gt;  taught me that most of the fructose (sucrose is fructose+glucose) and  alcohol (ethanol) we consume is metabolized as fat, whereas only a  little of the glucose we consume is metabolized as fat.  The reason is  that fructose and ethanol don't trigger insulin production. Since no  insulin is produced the brain doesn't shut off the hunger feeling, so  want to eat more. This is why high-fructose corn syrup and heavy  drinking are bad for you.  As the lecturer put it, "fructose is fat,  sugar is fat."  The reason why God couples fructose and fiber (e.g.,  sugar cane) is that this naturally limits our fructose intake.   Interestingly, HFCS became popular when the FDA recommended a low-fat  diet; however, dietary fat isn't the only thing that makes us fat,  fructose does too.&lt;br /&gt;&lt;br /&gt;I learned to avoid sugared drinks.  Since The  China Study suggests milk can cause cancer, I'm sticking to water and  Vitamin Water Zero.  I'll try to eat my carbohydrates with fiber.  I'll  wait 20 mins before getting a second portion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-1406236605882537961?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/1406236605882537961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=1406236605882537961' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1406236605882537961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1406236605882537961'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2011/04/sugar-bitter-truth.html' title='Sugar: The Bitter Truth'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-4413132805586609267</id><published>2011-04-27T08:56:00.000-07:00</published><updated>2011-08-08T09:08:27.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diet'/><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><category scheme='http://www.blogger.com/atom/ns#' term='health'/><category scheme='http://www.blogger.com/atom/ns#' term='healthy eating'/><title type='text'>My weight loss journey</title><content type='html'>In 2009 I was overweight and looked it.  I hit 223 lbs, which is 24 lbs more than the ideal weight for my 6'2" height.  I decided to lose weight, eliminate my love handles, and improve my health.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phase 1: Reduce Caloric Intake, Exercise More&lt;/span&gt;&lt;br /&gt;I started a reduced calorie diet.  I ordered "reduced portion" lunches and used a small plate for dinner.  I reduced or eliminated fast food, soda, unhealthy snacks (e.g., candy, chips, ice cream), and dessert.  After reading that people who eat breakfast tend to be more slender, I started eating a 100 calorie breakfast bar for breakfast.  I started eating 2-3 pieces of fruit a day.&lt;br /&gt;&lt;br /&gt;Snacking at night is a major problem for me.  I do it for emotional reasons not hunger.  It's very relaxing to snack while reading a book.  I replaced unhealthy snacks (e.g., chips) with healthier snacks (e.g., nuts, pretzels), but I still consumed too many calories at the worse possible time--right before bed.&lt;br /&gt;&lt;br /&gt;My workout routine at the gym involved 30 mins on the treadmill and 1-1.5 hrs of weight lifting and Nautilus machines. I lost ~5 lbs but I hated it.  My company's gym is dreary and simple and usually empty. The treadmill was torture.  While I enjoyed weightlifting, my weight and strength had plateaued.&lt;br /&gt;&lt;br /&gt;One day I realized that I didn't have to torture myself.  Instead, I should just pursue a physical activity I actually enjoyed. So I began taking kung fu classes in Summer 2010.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phase 2: Kung Fu&lt;/span&gt;&lt;br /&gt;I lost 8 pounds (215), reduced my waist size from 35" to 34", reduced body fat from 22.7% to 21.3%, reduced bad cholesterol (LDL) from 172 to 116, and increased good cholesterol (HDL) from 47 to 50. I gained endurance, strength, flexibility, confidence, and fighting ability.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phase 3: Eat the Right Calories&lt;/span&gt;&lt;br /&gt;The "Ultrametabolism" book taught me that some calories--such as those from soda and processed foods--are worse than others--such as those from whole foods.  Bad calories slow metabolism and actually make you more hungry.  Refined carbohydrates (e.g., high fructose corn syrup) are metabolized into sugar quickly by the body, causing excess insulin production, which leads to insulin resistance--a precursor to Type II diabetes, and causing the body to store the unused energy as body fat.  The author advised avoiding foods that have labels (e.g., processed foods) or that our great-grandparents wouldn't recognize (e.g., twinkies).  Instead he advised eating whole foods.  I also read that sugar and fat cause reactions in our bodies akin to drug addictions.&lt;br /&gt;&lt;br /&gt;I stopped eating my 100 calorie breakfast bars for breakfast since they are processed foods.  Instead I eat fruit for breakfast.&lt;br /&gt;&lt;br /&gt;I lost an additional 10 pounds (205) and reduced my waist size from 34" to 33" by preferring good calories and continuing kung fu.  However, I  was unable to reach my ideal weight of 199.  After slacking off and gaining back 6 pounds (211), I realized more changes were necessary.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Phase 4: Forks Over Knives, Increase Daily Physical Activity, Drink Less Alcohol&lt;/span&gt;&lt;br /&gt;"The China Study" book reaffirmed that processed carbohydrates (e.g., white bread, pasta) increase body fat as opposed to complex carbohydrates found in whole foods.  Whole plant-based foods are less energy-dense than animal-based foods and contain more water and fiber, which makes your body feel fuller sooner.  With a plant-based diet, you don't have to count calories because even though you may actually eat more calories, your metabolism is higher and more calories are expended as heat.  The author even suggested we can eat as much plant-based food as we want.  However, the author advised against eating excessive nuts if your LDL is over 100 (mine is 116).&lt;br /&gt;&lt;br /&gt;The book also provides convincing evidence that plant-based diets decrease risks of cancer, heart disease, diabetes, and obesity.&lt;br /&gt;&lt;br /&gt;The "Is Sitting a Lethal Activity?" NY Times article made me realize that sitting at my desk at work for 8 hours/day, 5 days/week was bad because when sitting we expend only 1 calorie/min vs 3 calories/min when walking, our insulin effectiveness and good cholesterol is reduced, and our life expectancy is reduced a few years.  Regular exercise (e.g., kung fu) doesn't compensate for a sedentary lifestyle; just like jogging doesn't compensate for smoking.  I decided to try to walk and take the stairs more.&lt;br /&gt;&lt;br /&gt;I reduced my dinner portions even more to allow me the caloric room to eat healthy snacks at night.  However, I'm still trying to reduce snacking.&lt;br /&gt;&lt;br /&gt;Update 8/8/11: I achieved my target ideal weight of 199 pounds! So far I've lost 24 pounds and 3 pant sizes (35" -&amp;gt; 32"). My body fat percentage and body mass index are the lowest in 4 years. I celebrated by buying size 32" jeans, which I haven't been able to wear since high school.&lt;br /&gt;&lt;br /&gt;Now my goal is to eliminate the remaining belly fat by reducing my weight to 195 and exercising my abs.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-4413132805586609267?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/4413132805586609267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=4413132805586609267' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4413132805586609267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4413132805586609267'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2011/04/my-weight-loss-journey.html' title='My weight loss journey'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-2485045807898113731</id><published>2009-02-14T02:47:00.000-08:00</published><updated>2009-02-14T02:55:47.921-08:00</updated><title type='text'>On The Nature Of Happiness</title><content type='html'>&lt;a href="http://www.ted.com/index.php/talks/barry_schwartz_on_the_paradox_of_choice.html"&gt;Too much freedom and too many choices--a by-product of modern civilization--cause dissatisfaction, regret, and unhappiness.&lt;/a&gt;  &lt;a href="http://www.ted.com/index.php/talks/malcolm_gladwell_on_spaghetti_sauce.html"&gt;On the other hand, this allows us to tailor our choices to match our individual preferences.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;People incorrectly believe that they will only be happy if they get what they want.  &lt;a href="http://www.ted.com/index.php/talks/dan_gilbert_asks_why_are_we_happy.html"&gt;They overestimate how much individual decisions and outcomes affect their long-term happiness.&lt;/a&gt;  This belief is what drives people to be ambitious, productive, industrious, but can also drive people to make moral and ethical compromises.  In reality, happiness is relatively fixed regardless of situation (baring extremes like poverty, abuse, sickness).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-2485045807898113731?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/2485045807898113731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=2485045807898113731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/2485045807898113731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/2485045807898113731'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2009/02/on-nature-of-happiness.html' title='On The Nature Of Happiness'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-6629263491813878611</id><published>2008-06-24T01:40:00.000-07:00</published><updated>2008-06-24T01:50:02.067-07:00</updated><title type='text'>Sending Email Via Wireless</title><content type='html'>Normally, my Outlook is setup to send email via SMTP (port 25) using SSL encryption to send.columbia.edu.  Oftentimes when I connect via a wireless access point, for example, at a hotel or conference, I get the error "Your server does not support the connection encryption type you specified."  After &lt;a href="http://mail.google.com/support/bin/answer.py?answer=86376#"&gt;troubleshooting using telnet&lt;/a&gt;, I found that port 25 was hijacked by the ISP's email server not to send.columbia.edu.  The workaround is to use TLS and port 587, which the ISP does not hijack.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-6629263491813878611?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/6629263491813878611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=6629263491813878611' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6629263491813878611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6629263491813878611'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2008/06/sending-email-via-wireless.html' title='Sending Email Via Wireless'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-1092994049857629702</id><published>2008-04-25T14:27:00.000-07:00</published><updated>2008-05-14T13:29:59.029-07:00</updated><title type='text'>Advice for a New PhD Student</title><content type='html'>To succeed as a PhD student you must &lt;strong&gt;publish several papers&lt;/strong&gt; in the best conferences and journals and &lt;strong&gt;become a world-renowned expert in your research area&lt;/strong&gt;. For the first 2-3 years, classes and teaching will limit the amount of research you can do, so you should:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Review research literature&lt;/strong&gt; - Before you can contribute, you must be an expert on the current state of research in your and peripheral areas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Read lots of papers (IEEE, ACM, CiteSeer).&lt;br /&gt;&lt;li&gt;Take notes for each paper you read because you will forget! Write a Related Work-style paragraph. Write notes directly on the paper indicating the overall paper quality, whether it should be cited, tools mentioned that you can use, and important points.&lt;br /&gt;&lt;li&gt;Hint: References are valuable for finding relevant papers and conferences.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Start by publishing workshop papers&lt;/strong&gt; - Don't make the mistake I did and submit to a top-tier conference like PLDI from the get go. You'll just waste a lot of time and have nothing to show for it but rejection letters. Make sure you vet your ideas by communicating extensively with your research peers and by publishing workshop papers. The benefits of publishing workshop papers are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can publish &lt;strong&gt;preliminary results and unfinished ideas&lt;/strong&gt; to determine if your ideas are worth pursuing, find flaws in your logic/arguments, and learn what the main sticking points are and the common questions people ask.&lt;br /&gt;&lt;li&gt;Allows your paper/ideas to be &lt;strong&gt;peer reviewed&lt;/strong&gt; so the workshop paper is really just a rough draft for a future conference paper&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Meet people&lt;/strong&gt; in your community&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Pad your publication record&lt;/strong&gt;&lt;br /&gt;&lt;li&gt;You gain &lt;strong&gt;practice giving talks&lt;/strong&gt;. Hint: Practice your talk 2-3 times and make sure you don't exceed the alotted time.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Attend conferences and workshops&lt;/strong&gt; - In the beginning of your PhD program, you should go to conferences and workshops even if you don't have a paper there. This helps to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make your name known. Remember, by the time you finish your PhD you should be "world renowned." This requires both publications and networking.&lt;br /&gt;&lt;li&gt;Find future co-authors&lt;br /&gt;&lt;li&gt;Get on future program committees&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Learn your venues&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Find out the best conferences and journals in your field (for Software Engineering, look &lt;a href="http://people.engr.ncsu.edu/txie/"&gt;here&lt;/a&gt;). Find out where important people in your field publish papers. Subscribe to the &lt;a href="http://www.cs.colorado.edu/serl/seworld"&gt;SEWORLD&lt;/a&gt; and &lt;a href="http://www.aito.org/mailman/listinfo/ecoop-info"&gt;ECOOP Info&lt;/a&gt; lists to find out about calls for papers.&lt;br /&gt;&lt;li&gt;Create a &lt;strong&gt;publication schedule&lt;/strong&gt; that shows all the conferences and workshops in your area along with their deadlines. Eventually, your life will be structured around these deadlines. Periodically update the schedule so that you are always aware of upcoming deadlines.&lt;br /&gt;&lt;li&gt;When considering publishing at a venue, become familar with the papers published in previous years. Is it easy to obtain the papers? Do the papers show up on searches like Google, ACM, IEEE? If the answers are no, publishing at this venue may lessen your paper's impact.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Get a summer research internship&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Line up post-PhD career - Summer internships are really just a recruiting vehicle. The company uses them to determine if they should hire you; for example, to determine if you can do great research. You should knock their socks off so they'll want to hire you after you graduate. Make sure you publish a paper.&lt;br /&gt;&lt;li&gt;Fun and profit - Internships are usually great fun, you meet a ton of other interns and contacts, and you make a lot more money than if you stayed at school.&lt;br /&gt;&lt;li&gt;Publish a paper - The best indicator of success for an internship is publishing a paper, either at the end of the internship or shortly after. This also communicates to the company that you can do research.&lt;br /&gt;&lt;li&gt;Make contacts&lt;/li&gt;&lt;li&gt;Hint:Apply in January&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;The last few years of your PhD should be devoted to research. You should be cranking out high-quality papers during this period and establishing a reputation for high-quality research.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Publish, publish, publish&lt;/strong&gt; - My advisor (Al Aho) requires his PhD students to have "2 good ideas." This translates into 2 papers published in the best conferences (PLDI, POPL, ICSE, FSE, ECOOP, OOPSLA, etc.) and journals (TSE, etc.).&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Participate&lt;/strong&gt; - Try to serve on several program committees, serve on an organizing committee, and organize a workshop.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Find a job&lt;/strong&gt; - You should be looking for a job now, not after you graduate. &lt;ul&gt;&lt;li&gt;Talk to people at conferences, etc. When these people are deciding who to hire, it will help tremendously that they know you.&lt;br /&gt;&lt;li&gt;Subscribe to job postings (&lt;a href="http://www.cra.org/ads/"&gt;CRA&lt;/a&gt;, &lt;a href="http://chronicle.com/jobs/home"&gt;Chronicle&lt;/a&gt;, &lt;a href="http://www.cs.colorado.edu/serl/seworld"&gt;SEWORLD&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;Try to graduate in May since universities and research labs typically hire on a regular academic schedule. Assistant professor positions for Sept are usually posted in Oct and Sept of the previous year, application deadlines are usually in Jan and Feb, interviews are in Feb and Apr, and offers are made in Feb-May. Labs usually use the same schedule although the start date is immediate.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;More advice:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ruthlessly eliminate activities from your life that do not get you closer to finishing your PhD.&lt;/strong&gt; Throughout your PhD, and especially before embarking on time-consuming activities, ask yourself, "Will this be in my thesis?" &lt;strong&gt;If you're spending most of your time coding, there's something wrong&lt;/strong&gt;. No one cares how much code you write and the elaborate tools and systems you create. They only care about how many good papers you author. For example, I wasted several semesters creating an elaborate system for dynamic aspect-oriented programming and it never produced any publications and was not even mentioned in my thesis. Of course, all research requires some coding. However, rarely does the code see the light of day after you graduate. So keep it simple, quick, and dirty (e.g., PERL is fine). Also, use off-the-shelf software or get someone else to write it (see below).  Research papers are a great source for finding out about tools that you can use such as metrics, profilers, compilers, static analyzers, etc.&lt;br /&gt;The only exception to this is if you are building something that many people will use, thus increasing your reputation. Your dissertation defense committee will appreciate this kind of research contribution. Companies also appreciate this kind of practical work. However, you'll need to develop, support, and market the software, which can be a huge time waster, especially if you don't have any help.&lt;br /&gt;&lt;br /&gt;The same caution about coding goes for teaching, reading, reviewing, meetings, demos, administrivia, etc.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Mentoring&lt;/strong&gt; - Undergrads and master's students can help shoulder some of the coding burden. However, they can also be a huge waste of time and result in a negative net gain.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Experience&lt;/strong&gt; - I like excellent programmers with industrial experience. Industrial experience means they are more likely to produce quality code, are good at collaborating and taking direction, and are likely to be familiar with source control. The more the student needs to learn (programming language, OS, source control, etc.), the more of your time they'll require, and the longer it will take for them to be productive (if ever). For this reason, I eschew undergrads, since they usually have very little programming or industrial experience.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Time constraints&lt;/strong&gt; - I required all students to commit to at least 8 hours a week to working on my project. If the student is taking more than 2 other classes, it is likely they won't be able to meet this. This is another reason why I eschew undergrads, since they usually take a full course load and give the project low priority.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Management&lt;/strong&gt; - You want self-motivated and self-managing students, otherwise you'll spend alot of time managing them. Create a &lt;strong&gt;project roadmap&lt;/strong&gt; that provides enough detail for them to go complete the project. It should include an overview, requirements (checklist of things they need to do), use cases (concrete examples of scenarios they must support), and milestone dates. They should agree to the roadmap before signing up for the class. If you have the time, a good technique is to meet with the students in-person once a week for a combined status meeting and coding session. Create an agenda for student meetings to ensure all issues are addressed&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;strong&gt;Go deep&lt;/strong&gt; - My mentor at Microsoft Research told me to find a &lt;strong&gt;concrete problem&lt;/strong&gt; and "go deep." Don't try to solve a problem in the abstract. What do you want other people to consider you to be an expert on? Decide what that is and then know that thing better than anyone else in the world. While it may be fun to learn about tangential research areas, you want to be a world renowned expert in one thing not a jack-of-all-trades.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Focus on the hard problems&lt;/strong&gt; - What's the point of getting a PhD if your work has no impact. Your success is measured by your contribution. If you're not working on the most important and hardest problems in your field, then you're contribution is muted. My advisor liked to ask, "Is this a $1000 problem or a $1B problem?"&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-1092994049857629702?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/1092994049857629702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=1092994049857629702' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1092994049857629702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1092994049857629702'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2008/04/advice-for-new-phd-student.html' title='Advice for a New PhD Student'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-7947402665057471815</id><published>2008-02-19T12:04:00.000-08:00</published><updated>2008-12-16T14:31:26.769-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Did I mention that graphics in Word 2007 suck?</title><content type='html'>A graphic in Word 2007 can be a drawing (created using Shapes), text box, drawing canvas, picture, equation, table, chart, etc.  In addition to the layout issues I mentioned in the last post, it is very hard to transfer a graphic between Word 2007 and other programs, &lt;i&gt;including other Microsoft Office programs&lt;/i&gt;.  In one case I needed to transfer an equation to PowerPoint.  In other case I needed to save a drawing and found out that I first had to copy-and-paste the drawing into another program to save it (i.e., there is no way to directly save a graphic in Word).  Let me demonstrate how this goes horribly wrong.&lt;br /&gt;&lt;br /&gt;I created the following graphic in Word 2007 using shapes inside a drawing canvas (the image below was created using a &lt;strong&gt;screen capture&lt;/strong&gt; (ALT+Print Screen)):&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s3MR0JR0I/AAAAAAAAACs/ffP5j41vc9o/s1600-h/orig.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168785681417848642" style="" alt="" src="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s3MR0JR0I/AAAAAAAAACs/ffP5j41vc9o/s400/orig.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The font for the code is Courier New and for the rest is Palatino Linotype.  If you look closely at the screenshot you'll see that the letters are not completely black.  This is because they were rendered using the Clear Type font smoothing technology.&lt;br /&gt;&lt;br /&gt;The first problem is that there is no way to save this graphic to a file directly. I have to first paste it into another program. Okay, no problem, let's try Microsoft Paint:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s4Jx0JR2I/AAAAAAAAAC8/re8xYXk67Ck/s1600-h/paint.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168786737979803490" style="" alt="" src="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s4Jx0JR2I/AAAAAAAAAC8/re8xYXk67Ck/s400/paint.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;WYSIWYG my ass!  As you can the fonts and line spacing have changed drastically. The Java code inside the middle box and the "Program Elements" text have been cutoff. Okay, so next I try pasting into PowerPoint 2007. Here's what I got after trying all the different paste options:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;em&gt;As HTML&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s4-R0JR3I/AAAAAAAAADE/1Q3gI6ObaG8/s1600-h/html.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168787639922935666" style="" alt="" src="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s4-R0JR3I/AAAAAAAAADE/1Q3gI6ObaG8/s400/html.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Above is the closest I get to the screenshot. Notice how the font is different and much darker.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;em&gt;As PNG (same As GIF&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;and As Extended Metafile) &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://3.bp.blogspot.com/_12vr1qSyGDE/R7s5ZB0JR4I/AAAAAAAAADM/nWf7EtVMZGU/s1600-h/png_gif.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168788099484436354" style="" alt="" src="http://3.bp.blogspot.com/_12vr1qSyGDE/R7s5ZB0JR4I/AAAAAAAAADM/nWf7EtVMZGU/s400/png_gif.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;These (PNG, GIF, and Extended Metafile) all look the same as pasting into Microsoft Paint, that is, pretty bad.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;em&gt;As Microsoft Office Graphic Object&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s50x0JR6I/AAAAAAAAADc/-XVMDhi2qKQ/s1600-h/ms.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168788576225806242" style="" alt="" src="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s50x0JR6I/AAAAAAAAADc/-XVMDhi2qKQ/s400/ms.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What's the most disturbing about the above is that this is Microsoft's own graphic object format for Microsoft Office, designed for compatibility with other Microsoft Office programs. As you can see, it looks horrible. The Windows Metafile format below, another one of Microsoft's compatability formats, also looks really bad:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;em&gt;As Windows Metafile&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s6oR0JR8I/AAAAAAAAADs/jhK0TuVBWKs/s1600-h/wmf.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168789460989069250" style="" alt="" src="http://4.bp.blogspot.com/_12vr1qSyGDE/R7s6oR0JR8I/AAAAAAAAADs/jhK0TuVBWKs/s400/wmf.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;However, nothing prepared me for what came next:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;As JPEG&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s6Fx0JR7I/AAAAAAAAADk/ohiatkioglM/s1600-h/jpeg.bmp"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s6Fx0JR7I/AAAAAAAAADk/ohiatkioglM/s1600-h/jpeg.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168788868283582386" style="" alt="" src="http://2.bp.blogspot.com/_12vr1qSyGDE/R7s6Fx0JR7I/AAAAAAAAADk/ohiatkioglM/s400/jpeg.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I guess black is the new white.&lt;br /&gt;&lt;br /&gt;It is sad that the best reproduction of a Word 2007 graphic is via ALT+Print Screen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-7947402665057471815?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/7947402665057471815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=7947402665057471815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/7947402665057471815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/7947402665057471815'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2008/02/did-i-mention-that-graphics-in-word.html' title='Did I mention that graphics in Word 2007 suck?'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_12vr1qSyGDE/R7s3MR0JR0I/AAAAAAAAACs/ffP5j41vc9o/s72-c/orig.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-1979796353774423538</id><published>2008-02-14T13:25:00.001-08:00</published><updated>2008-02-14T13:48:37.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Layout in Word 2007 sucks!</title><content type='html'>Layout of pictures, tables, drawing canvases, text boxes, spreadsheets, and equations is seriously broken in Word 2007. First, there's no universal way to layout non-text. For example, Drawing Canvases were a nice addition to Word 2007 but they are not very useful since you can't embed tables, spreadsheet, or equations. For tables, you can work around this by embedding the table in a text box, and then embedding the text box in the drawing canvas. However, for spreadsheets and equations, you're out of luck. Perhaps this is a problem when trying to embed any OLE document, although I would assume Microsoft could get this to work properly for their own office suite.&lt;br /&gt;&lt;br /&gt;Far more annoying is the schizophrenic layout algorithm in Word 2007. I assume that behind the scenes it's trying to balance keeping paragraphs whole, avoiding orphaned section titles, anchoring, etc., but the outcome is often surprising and wrong. For example, I'll insert a graphic into a page and it will cause the previous page to now have a blank spot that takes up 90% of the page. Most surpising: the graphic could easily fit inside that blank spot!&lt;br /&gt;&lt;br /&gt;Most of the time I want a block graph at the top or bottom of the page but Word seems to have a prediliction for inserting graphics inline (e.g., newspaper style) and moving the graphics with the text. To accomplish this Word appears to "anchor" images at the point of insertion. I wish there was a way to completely turn off the anchors (no, Lock Anchor and Top and Bottom Text Wrapping doesn't do this) and for Word to just flow text around the blocks.&lt;br /&gt;&lt;br /&gt;I've been struggling with this issues for years. I wish I had learned LaTex!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-1979796353774423538?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/1979796353774423538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=1979796353774423538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1979796353774423538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/1979796353774423538'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2008/02/layout-in-word-2007-sucks.html' title='Layout in Word 2007 sucks!'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-5550912743977829044</id><published>2008-02-10T18:28:00.000-08:00</published><updated>2008-04-19T09:19:11.243-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>Table of Contents in Word 2007 sucks!</title><content type='html'>The Table of Contents feature in Word 2007 is seriously broken. Sometimes the entries for figures have different fonts, which makes the toc look like a ransom letter. I had to go to a correct figure caption and then copy-and-paste it into the incorrect captions to make all the entries consistent. What's most annoying is that the incorrect entries effectively ignore the style setting specified in "Insert Table of Contents..." -&gt; Formats="From Template" -&gt; "Modify..."&lt;br /&gt;&lt;br /&gt;Worse, I'll save my document and then reopen it, and a bunch of seemingly random lines from the cover page, other parts of the document, etc. suddenly appear in the Document Map and TOC. For some unknown reason, the Outline Level for these lines is set to "Level 1." After I change the Outline Level for all the lines to "Body Text," everything looks fine. However, if I change the Outline Level for the "Table of Contents" line to "Body Text," and save and then reopen, all the lines are set back to Level 1 and show up in the TOC again!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Workaround&lt;/strong&gt;&lt;br /&gt;The field code for my TOC is&lt;br /&gt;&lt;br /&gt;{TOC \o "1-3" \h \z}&lt;br /&gt;&lt;br /&gt;This pulls in all headers at outline level 1-3 and all other text with Outline Level 1-3.  To pull in things like "List of Figures" and "Bibliography" I create a new style and set the Outline Level to 1.  Make sure the text "Table of Contents" that immediately preceeds the actual TOC is not a heading style.&lt;br /&gt;&lt;br /&gt;I hope this helps! If anyone has a better solution, please leave a comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-5550912743977829044?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/5550912743977829044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=5550912743977829044' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/5550912743977829044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/5550912743977829044'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2008/02/table-of-contents-in-word-2007-sucks.html' title='Table of Contents in Word 2007 sucks!'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-9037829586431378220</id><published>2007-07-04T08:11:00.001-07:00</published><updated>2007-07-20T10:11:35.284-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parenting tips'/><title type='text'>Newborn Tips</title><content type='html'>&lt;p&gt;Disclaimer: These things worked for us. Your mileage may vary.&lt;/p&gt;&lt;p&gt;Here's some tips for parents of newborns:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Try to sleep when the baby sleeps.&lt;/strong&gt; Swaddling helped us tremendously to get our babies to sleep. Velcro swaddlers are super easy.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;If the baby is crying, check if she's hungry, lonely, sleepy, wet, hot/cold, etc.&lt;/strong&gt; Sometimes she cries for no apparent reason (she could be gassy (most common), over-tired, over-stimulated, cranky, or just blowing off steam after a long day). If you keep trying different things to appease her, either you'll fix the problem, or eventually enough time will pass, and she'll stop crying.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Practice Dr. Karp's five S's&lt;/strong&gt;: swaddle, side/stomach position (we didn't use this one), shushing, swinging, and sucking. They work miracles! &lt;a href="http://www.babyslumber.com/happiestbaby.html"&gt;http://www.babyslumber.com/happiestbaby.html&lt;/a&gt;. I recommend getting his book and DVD. A pacifier is also very helpful.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get a Boppy.&lt;/strong&gt; Makes it easier to breast- or bottle-feed, and keeps her at an angle after feeding to reduce likelihood of spit-up. The boppy helped both our babies fall asleep.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get a Baby Papasan, rocker, or (big) swing.&lt;/strong&gt; This will keep some babies occupied for a 1/2 hour or so.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get a Baby Bjorne.&lt;/strong&gt; Easier than a stroller for short jaunts. Babies often fall right asleep in this.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Take a break!&lt;/strong&gt; Friends/family will offer to babysit. Take them up on it! You both need a break from the baby and each other to stay sane.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get a baby book like "How To Understand Your Baby's Symptoms."&lt;/strong&gt; Babies do all sorts of alarming things like spit up, throw up, wheeze, gag, cry, etc. The more knowledge of what is normal vs abnormal will help alleviate anxiety.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Moms should join a "new moms" group (or several).&lt;/strong&gt; You'll make a ton of new friends who will have a lot in common (to replace the many non-parent friends you'll lose). It's extremely helpful to know that other moms are dealing with the same issues as you, and what worked or didn't. Don't just listen to your parents' advice! :) This new network is also great for organizing babysitting exchanges, organizing play dates, obtaining babysitter/nanny/pediatrician/school/etc. references, barrowing baby gear, tips/advice, etc. etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here's a bunch of stuff that's really handy to have for newborns: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pacifier&lt;/strong&gt; - Sooths the baby and helps them fall asleep.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Baby Papasan, rocker, or (big) swing&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Boppy&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microwave sterilizer&lt;/strong&gt; - If you feel you need to sterilize bottles, nipples, etc.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Velcro swaddlers&lt;/strong&gt; - Helps baby fall asleep during the first 3 months.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Bjorn baby carrier&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Graco MetroLite LE stroller&lt;/strong&gt; - We've had one for over 2 yrs. Extremely sturdy and has a great storage basket.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.babyslumber.com/happiestbaby.html"&gt;&lt;strong&gt;"Happiest Baby on the Block" book&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;"Healthy Sleep, Happy Child" book&lt;/strong&gt; - Both our babies were sleeping through the night at 2 months thanks in part to this book.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;"How To Understand Your Baby's Symptoms" book&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;And for toddlers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bumkin bib&lt;/li&gt;&lt;li&gt;FisherPrice booster seat&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-9037829586431378220?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/9037829586431378220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=9037829586431378220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/9037829586431378220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/9037829586431378220'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2007/07/newborn-tips.html' title='Newborn Tips'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-2371777968797188345</id><published>2007-05-18T00:52:00.000-07:00</published><updated>2007-05-18T00:53:32.212-07:00</updated><title type='text'>Extremely entertaining and thought provoking chat between two robots</title><content type='html'>A chat between the ALICE and Jaberwocky chatbots is very interesting!&lt;br /&gt;&lt;a href="http://discovermagazine.com/2007/brain/i-chat-therefore-i-am/article_print"&gt;http://discovermagazine.com/2007/brain/i-chat-therefore-i-am/article_print&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-2371777968797188345?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/2371777968797188345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=2371777968797188345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/2371777968797188345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/2371777968797188345'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2007/05/extremely-entertaining-and-thought.html' title='Extremely entertaining and thought provoking chat between two robots'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-4038450123226517740</id><published>2007-02-04T13:33:00.000-08:00</published><updated>2007-02-04T13:35:36.477-08:00</updated><title type='text'>Begin With the End in Mind</title><content type='html'>Imagine your funeral and listen to what you would like the eulogist to say about you.  This should reveal exactly what matters most to you in your life.&lt;br /&gt;&lt;br /&gt;(From Randy Paush's Time Mangement &lt;a href="http://www.cs.virginia.edu/~robins/TimeManagementTalk.ppt"&gt;talk&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-4038450123226517740?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/4038450123226517740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=4038450123226517740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4038450123226517740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4038450123226517740'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2007/02/begin-with-end-in-mind.html' title='Begin With the End in Mind'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-3608327656768641634</id><published>2007-01-18T11:22:00.000-08:00</published><updated>2008-12-11T20:18:39.312-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>My consumer self, summed up in one image</title><content type='html'>I got this off of my &lt;a href="http://www.amazon.com"&gt;My Amazon&lt;/a&gt; page.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_12vr1qSyGDE/Ra_Jjg2xFoI/AAAAAAAAACc/vV45A_AfKz8/s1600-h/Me.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021453721493640834" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_12vr1qSyGDE/Ra_Jjg2xFoI/AAAAAAAAACc/vV45A_AfKz8/s200/Me.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pretty accurate (except for "Romance", "Chevy Chase", and "Erotic" (WTF?)).   Perhaps when we meet someone new, we should compare word maps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-3608327656768641634?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/3608327656768641634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=3608327656768641634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/3608327656768641634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/3608327656768641634'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2007/01/my-consumer-self-summed-up-in-one-image.html' title='My consumer self, summed up in one image'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_12vr1qSyGDE/Ra_Jjg2xFoI/AAAAAAAAACc/vV45A_AfKz8/s72-c/Me.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-4646792895453091643</id><published>2006-12-28T19:52:00.000-08:00</published><updated>2008-12-11T20:18:40.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Stuff They Did Right in Vista</title><content type='html'>&lt;div&gt;To be fair, I do have to mention a few things I LIKE about Vista:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Task Manager&lt;/em&gt;&lt;/strong&gt; &lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/RZSWXwP89nI/AAAAAAAAAAo/PFSu8O4CwaE/s1600-h/Task+Manager+-+Command+Line.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013797620003174002" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_12vr1qSyGDE/RZSWXwP89nI/AAAAAAAAAAo/PFSu8O4CwaE/s200/Task+Manager+-+Command+Line.bmp" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/RZSUSwP89mI/AAAAAAAAAAg/WReTJpNHscE/s1600-h/Task+Manager+-+Command+Line.bmp"&gt;&lt;/a&gt;&lt;br /&gt;The Processes tab now shows the &lt;strong&gt;command-line&lt;/strong&gt; and a &lt;strong&gt;description&lt;/strong&gt; for each process. You can also right-click on a process and view its &lt;strong&gt;properties&lt;/strong&gt; or &lt;strong&gt;open the executable's folder&lt;/strong&gt;. These improvements make it real easy to figure out what each process is for (especially for identifying services associated with svchost.exe processes), and for rooting out spyware and gratuitous resource hogs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSTzgP89lI/AAAAAAAAAAY/koX-TivR3GA/s1600-h/Task+Manager+-+Services.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013794798209660498" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSTzgP89lI/AAAAAAAAAAY/koX-TivR3GA/s200/Task+Manager+-+Services.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The new Services tab is much more convenient than the Services applet. You can navigate directly to the process associated with a service by right-clicking on the service and selecting "Go to process".&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Resource Monitor&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;You can see which processes are consuming the most CPU, memory, network bandwidth, and disk access. This takes the guesswork out of figuring out who is hogging up the network bandwidth.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSghgP89qI/AAAAAAAAABA/XucG047WZyg/s1600-h/Resource+Monitor+-+CPU.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013808782623176354" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSghgP89qI/AAAAAAAAABA/XucG047WZyg/s200/Resource+Monitor+-+CPU.bmp" border="0" /&gt;&lt;/a&gt; &lt;a href="http://2.bp.blogspot.com/_12vr1qSyGDE/RZSghwP89rI/AAAAAAAAABI/GlVIGm6-CZY/s1600-h/Resource+Monitor+-+Disk.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013808786918143666" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_12vr1qSyGDE/RZSghwP89rI/AAAAAAAAABI/GlVIGm6-CZY/s200/Resource+Monitor+-+Disk.bmp" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_12vr1qSyGDE/RZSgiQP89sI/AAAAAAAAABQ/Ng35BX60d_k/s1600-h/Resource+Monitor+-+Network.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013808795508078274" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_12vr1qSyGDE/RZSgiQP89sI/AAAAAAAAABQ/Ng35BX60d_k/s200/Resource+Monitor+-+Network.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Ubiquitous and fast search&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;There's a search box in the Start Menu, Open File dialogs, IE 7, and Windows Explorer. Definitely speeds things up.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Oooohhh, pretty!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;The Windows Aero glass interface looks very nice. My nontechie wife was won over by the new photo screensaver.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Automatic offline file synchronization&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Haven't tried this yet.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Windows Explorer&lt;a href="http://3.bp.blogspot.com/_12vr1qSyGDE/RZSapAP89oI/AAAAAAAAAAw/yAZlt-hDDXI/s1600-h/Explorer+-+Task+Toolbar.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013802314402428546" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_12vr1qSyGDE/RZSapAP89oI/AAAAAAAAAAw/yAZlt-hDDXI/s200/Explorer+-+Task+Toolbar.jpg" border="0" /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Tasks are now placed in a dedicated toolbar instead of the XP way where a task panel fought with the folders panel for screen real estate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSc6gP89pI/AAAAAAAAAA4/LtEG93nEdtc/s1600-h/Explorer+-+Drop+Down+Nav.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013804814073394834" style="FLOAT: left; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSc6gP89pI/AAAAAAAAAA4/LtEG93nEdtc/s200/Explorer+-+Drop+Down+Nav.bmp" border="0" /&gt;&lt;/a&gt;The new drop down arrows in the address bar make it very easy to navigate your directory hierarchy, especially when you need to backtrack to a neighboring subdirectory (I find that I do this a lot).&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSobgP89wI/AAAAAAAAACQ/Q6C8uJ1Q7j0/s1600-h/Explorer+-+Shift+Right+Click.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5013817475636983554" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_12vr1qSyGDE/RZSobgP89wI/AAAAAAAAACQ/Q6C8uJ1Q7j0/s200/Explorer+-+Shift+Right+Click.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Other new features are the &lt;strong&gt;Open Command Prompt Here&lt;/strong&gt; and &lt;strong&gt;Restore Previous Version&lt;/strong&gt; right mouse menu items. Vista automatically stores previous versions of files and folders. It must be doing something fancy under the covers to not store the entire contents of the file/folder (perhaps it's using the differencing algorithms used by offline file synchronization).&lt;br /&gt;&lt;br /&gt;I like the level of detail control for listing files (CTRL+mouse wheel).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The only thing I don't like is that the default folder that you start in is your profile folder which is totally useless. Just getting to the C:\ drive takes several clicks and scrolling. Much more painful than with XP.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-4646792895453091643?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/4646792895453091643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=4646792895453091643' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4646792895453091643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/4646792895453091643'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/12/stuff-they-did-right-in-vista.html' title='Stuff They Did Right in Vista'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_12vr1qSyGDE/RZSWXwP89nI/AAAAAAAAAAo/PFSu8O4CwaE/s72-c/Task+Manager+-+Command+Line.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-6150985064738946941</id><published>2006-12-16T08:49:00.000-08:00</published><updated>2006-12-28T19:52:20.029-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Stay away from Vista RTM!</title><content type='html'>My computer is now completely screwed because of Vista RTM. After I upgraded from XP to Vista RTM, I encountered numerous problems:&lt;br /&gt;&lt;br /&gt;(Note: Most of these problems were for my desktop. Strangely, my laptop has had no problems with Vista RTM.)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;RTM not ready for primetime.&lt;/strong&gt; Many devices (printers, pocket pc, etc.) don't work. For example, Canon and HP aren't planning on providing Vista drivers until 2007. Dell won't support Vista until March 2007. If you have problems with your Dell system after installing Vista RTM, you're out of luck! Even several Microsoft products (SQL Server, VS 2005) don't support Vista yet.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Diagnostics suck.&lt;/strong&gt; Event Viewer is useless. Clicking on the "Get Help Online" link for an event shows a web page that says "yada yada, OS (Vista) not supported, yada yada". No Error Reporting or Dr. Watson. Programs die silently like they used to for Win 95.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Outlook 2007 crashes.&lt;/strong&gt; (This happens on my desktop not my laptop.) I eventually had to uninstall Office 2007, install Office XP, and upgrade to Office 2007.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SLOW!&lt;/strong&gt; My overall impression of Vista is that everything related to the shell is slower than with XP. Startup is very very slow (~10 mins). Event Viewer reports errors confirming the slowness. (This is only a problem for my desktop computer, my laptop has no problems.)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Registry Editor no longer highlights the open key.&lt;/strong&gt; So when you do a search, you have to track down the right key manually.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security is totally annoying!&lt;/strong&gt; I seriously have to click on 5 different versions of "Allow" in order to install a piece of software. I have to click a nag box even for simple things. I'm close to turning off User Account Control and other security features just because it is so annoying.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Overall flakiness.&lt;/strong&gt; I suspect this is because of the new User Account Control feature. For example, clicking on "Update my score" in Performance Information and Tools eventually causes a message about a problem with WinSTA. Many installation programs (including Microsoft's) assume you are running as Administrator and will fail in mysterious ways. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Hard to customize the Start Menu.&lt;/strong&gt; It used to be as simple as dropping program icons into a new folder. For some reason (probably User Account Control) I'm not able to do this.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;UPDATE: I finally gave up on Vista RTM after realizing that my printer, Pocket PC, Outlook, VPN connection to my office, and audio DO NOT WORK and most other things are SLOW or FLAKY. I decided to rollback to Windows XP. Curse you Vista RTM! You cost me 4 days! KAAAAAAAAAAAHNN!&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-6150985064738946941?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/6150985064738946941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=6150985064738946941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6150985064738946941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6150985064738946941'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/12/stay-away-from-vista-rtm.html' title='Stay away from Vista RTM!'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-5232499679049216407</id><published>2006-12-04T18:50:00.000-08:00</published><updated>2006-12-08T16:26:30.469-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows tips'/><title type='text'>Creating Desktop Shortcuts for Outlook 2007 notes</title><content type='html'>I like to have a desktop shortcut for my TODO note in Outlook. The way this is done changed in Outlook 2007:&lt;br /&gt;&lt;br /&gt;1. Right-click on your desktop and select New -&gt; Shortcut&lt;br /&gt;2. You'll be prompted for a target program. Locate outlook.exe.&lt;br /&gt;3. Right-click on the new shortcut and select Properties&lt;br /&gt;4. Add the /select switch to the command-line. Here's an example:&lt;br /&gt;&lt;br /&gt;"C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE" /select outlook:Notes/~TODO&lt;br /&gt;&lt;br /&gt;The name after the tilde (~) is the name of note you want to open.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-5232499679049216407?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/5232499679049216407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=5232499679049216407' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/5232499679049216407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/5232499679049216407'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/12/creating-desktop-shortcuts-for-outlook.html' title='Creating Desktop Shortcuts for Outlook 2007 notes'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-6291998021940908366</id><published>2006-11-21T01:04:00.000-08:00</published><updated>2006-12-06T20:13:25.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Greatest Quote in the World</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/User:Can%27t_sleep%2C_clown_will_eat_me"&gt;"Can't sleep, clown will eat me"&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-6291998021940908366?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/6291998021940908366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=6291998021940908366' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6291998021940908366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/6291998021940908366'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/11/greatest-quote-in-world.html' title='Greatest Quote in the World'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-7979052236131509993</id><published>2006-11-14T22:44:00.000-08:00</published><updated>2008-12-16T14:36:07.362-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Money saving tips'/><title type='text'>Tips to Save Money, or "Cheap Seats for My Cheap Ass"</title><content type='html'>As a PhD student I've had to cut back quite a bit on expenses. I've managed to cut back my yearly budget by $10k. Here are some of my tips:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Get rid of your landline.&lt;/strong&gt; You can use your cell phone or Skype (calls in the US are now free) for all your calls. I was paying $46 for &lt;strong&gt;basic&lt;/strong&gt; local service (no long distance!) from AT&amp;amp;T! I also consolidated my cell phone plans under a family plan and now pay $10 less. Check if your company or school offers a cell phone discount. Reducing these unnecessary monthly costs results in tremendous savings over the year.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Temporarily suspend cable and phone when away.&lt;/strong&gt; Have phone and cable company temporarily suspend service if you're going away for more than a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Save on electricity.&lt;/strong&gt; Use a fan or open windows instead of AC. Turn off lights. Try not to leave the frig open. Turn off computer when you aren't using it. Turn off and unplug all appliances when you go on vacation. Unplugging them is necessary because many appliances still consume energy &lt;a href="http://www.spannertech.com/spanner/energy/"&gt;when turned off&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Don't pay retail for clothes.&lt;/strong&gt; I buy almost all my clothes from TJ MAX, Marshall's, Filene's Basement, outlet stores, or when a retail store is having a mad sale. And I always get complements on my clothes! Don't buy too many clothes or they will end up getting lost in the clutter that is your closet. We were able to cut our budget down by 30% by simply reducing clothes shopping.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Did you seriously pay retail for a DVD or CD?&lt;/strong&gt; Buy them used! They still sound and look the same. Do your really need to own the movie? Come'on, how many times do you really think you'll watch it. Rent it from NetFlix or use PayPerView. Exchange your used CDs using &lt;a href="http://lala.com/"&gt;LaLa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Books want to be cheap or free.&lt;/strong&gt; &lt;a href="http://half.com/"&gt;Half.com &lt;/a&gt;consistently has the lowest prices. However, checkout &lt;a href="http://www.addall.com/"&gt;AddAll&lt;/a&gt;, the best used &amp;amp; new book price comparison shopping engine around. The library has a ton of books and videos which you can checkout for free. Why buy a travel book you are only going to use for a few days? Get it from the library!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Comparison shop online.&lt;/strong&gt; I get significant savings by comparing the prices of different car rental companies (I never rent without using a coupon), airlines, hotels, photo gift companies, electronics companies, book stores, etc., and using any coupons I can find. Beware though, while the savings are substantial, doing a thorough comparison including mining coupons can take hours.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. Online coupons rawk!&lt;/strong&gt; Right before I purchase something I google for a coupon ("snapfish coupons"). Surprisingly, this works most of the time. Although I haven't gone to this extreme, for high priced items it may be worth it to buy a coupon on eBay. BTW, mail-in rebates suck! People often don't mail in the rebate and companies make it as hard as possible to get the rebate. Not worth the trouble!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. BUY electronics and games as LATE as possible.&lt;/strong&gt; I get very frustrated by the breakneck pace that new versions of electronics are put out and prices drop. I bought a 1 GB flash card for $200 a few years ago and now its $15. Postpone buying electronics as long as possible and you'll either be rewarded with lower prices or a better version at the same price.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10. SELL electronics, games, and textbooks ASAFP.&lt;/strong&gt; Electronics and textbooks depreciate like crazy. If you are no longer using it, sell it as soon as possible. This reduces the chance that a newer version will come out that people will want instead. No one will buy your v1 textbook when professors are assigning v2. This is even more true for electronics and games. Used games start to saturate the resell market soon after the game is released. Selling your used game as soon as your done with it will get you the best price.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;11. Eat for less.&lt;/strong&gt; Buy things in bulk. Cook what's on sale that week. Use coupons. If you are really brave hearted, buy restaurant coupons from restaurant.com (tips: verify with restaurant before buying a coupon or eating there, and don't stockpile coupons when they go on sale). I try not to go out to eat completely famished or else I end up getting appetizers and filling up on bread. When the waitress takes your order, tell her discretely you want a separate check. That way, you don't get stuck paying for someone else's extravagances. Making your own breakfast, lunch, and dinner will save you a ton. Try making the food in bulk to save time and even more money.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12. Brew your own coffee.&lt;/strong&gt; Those $3 lattes from Starbucks add up. I make my own coffee at about $.50 a cup and it invariably tastes better than from a coffee shop. I use a thermos so I can drink coffee throughout the day.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;13. Reuse is the best recycle.&lt;/strong&gt; I try to reuse stuff (aluminum foil, freezer bags, plastic takeout containers, scrap paper, plastic grocery bags, etc.) as much as possible instead of discarding or recycling it. Okay, so this doesn't save you much money, but your left with a warm feeling inside.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;14. The baby doesn't know it's a Bugaboo.&lt;/strong&gt; Don't buy brand-new designer baby gear or clothes for your kid. The baby a) will outgrow it faster than you can say WTF, b) will destroy it at a rate that's proportional to its worth, c) will not appreciate the extra expense, and d) will slowly be spoiled rotten. The best baby stuff (gear, toys, clothes) is second hand and eventually passed on to the next child.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;15. Don't overpay for plane tickets.&lt;/strong&gt; If you travel the same route each year, you should know what the fare range is. Use &lt;a href="http://farecast.com/"&gt;Farecast&lt;/a&gt; to find out what other people have paid for the tickets and forecast fare fluctuations.  Then buy when the price is right. Several airline sites have a service (e.g., &lt;a href="http://www.orbitz.com/"&gt;Orbitz&lt;/a&gt; DealDetector) that will notify you when the price goes below your threshold. Also, the standard tips apply: Buy in advance. Sat night stay. Travel on weekdays. Use the "flexible dates" option if possible. Ticket prices fluctuate like an Irishman's cadence so check back often. Finally, check for "last minute fares". Airplane seats are perishable goods and airlines prefer to sell them at a steep discount a few days before the flight rather then leave them empty.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;16. Buy from a reseller or get it free.&lt;/strong&gt; garage sales, craigslist.com, ebay.com, freecycle.org&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;17. It's all about the reward points.&lt;/strong&gt; I pay almost all of my expenses using my credit card (phone, cell, cable, internet, groceries, medical, restaurants, shopping, etc.). I often buy $1 items using my CC. The best is when I can charge an item to my CC which my insurance or company will reimburse -- free points! When I eat out with friends, after everyone puts down their cash, I'll proclaim "Points!", grab the cash, and pay the whole bill with my CC. The only ones who mind also want points so we usually trade off. I rack up tens of thousands of points each year which translates into hundreds of dollars in gift cards (Macys, BR, Starbucks, etc.). Don't ever buy merchandise using points, stick to gift cards which have a better point-to-dollar ratio. Lamely, I only get about a 1% return, although several CCs have 1, 3, or 5% returns, and some even give you cash or credit instead of points. I've got so many vendors tied into my current CC that its too painful to switch! A great side benefit is that I get a year-end statement that shows all my expenses, which is invaluable when I do my yearly budget and tax deductions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;18. Use loyalty cards.&lt;/strong&gt; Keep using the loyalty cards for your favorite grocery store, coffee shop, deli, etc., and you'll eventually get something for free. For example, after spending $100 at Duane Reade you get a $5 off coupon. If you have a 529 plan for your child, you can register your loyalty cards, bank cards, and credit cards at &lt;a href="http://upromise.com"&gt;upromise.com&lt;/a&gt;, and when you buy UPromise items you'll get a few cents deposited in your account.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;19. Earn money by getting emails.&lt;/strong&gt; Signup at &lt;a href="http://mypoints.com/"&gt;MyPoints&lt;/a&gt; (tell 'em meaddy sent you if you want to be nice) and you'll get points for clicking on email ads. After a few hundred emails you get a $10 gift card.&lt;br /&gt;&lt;br /&gt;Other tips:&lt;br /&gt;&lt;a href="http://www.creditcardlowdown.com/2006/11/101_ways_to_cut.html"&gt;http://www.creditcardlowdown.com/2006/11/101_ways_to_cut.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thriftymommy.com/top-25-ways-i-save-money/"&gt;http://www.thriftymommy.com/top-25-ways-i-save-money/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thriftymommy.com/25-more-ways-to-save-money/"&gt;http://www.thriftymommy.com/25-more-ways-to-save-money/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-7979052236131509993?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/7979052236131509993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=7979052236131509993' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/7979052236131509993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/7979052236131509993'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/11/tips-to-save-money-or-cheap-seats-for.html' title='Tips to Save Money, or &quot;Cheap Seats for My Cheap Ass&quot;'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-116241782225591708</id><published>2006-11-01T13:50:00.000-08:00</published><updated>2006-12-06T20:09:33.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>My Tron Costume, Halloween 2006</title><content type='html'>&lt;a title="Photo Sharing" href="http://www.flickr.com/photos/marceaddy/sets/72157594354065061/"&gt;&lt;img alt="tron&amp;amp;rosie" src="http://static.flickr.com/116/286026854_e310cbeb75_o.jpg" width="50%" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/marceaddy/sets/72157594354065061/"&gt;http://www.flickr.com/photos/marceaddy/sets/72157594354065061/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-116241782225591708?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/116241782225591708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=116241782225591708' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/116241782225591708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/116241782225591708'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/11/my-tron-costume-halloween-2006.html' title='My Tron Costume, Halloween 2006'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-116015901819480563</id><published>2006-10-06T11:17:00.000-07:00</published><updated>2006-12-06T20:12:57.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows tips'/><title type='text'>Viewing another user's Desktop Folder on XP</title><content type='html'>I have two computers on my network and I like to move files back and forth. Normally, the user's account folder (C:\Documents and Settings\&lt;user&gt;) is not accessible. However, if you know the login for that user, you can access it. Go to Control Panel, User Accounts, select the account you are currently logged in as, then Manage my network passwords, then click Add. Type the server and login for the user's account you want access to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-116015901819480563?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/116015901819480563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=116015901819480563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/116015901819480563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/116015901819480563'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/10/viewing-another-users-desktop-folder.html' title='Viewing another user&apos;s Desktop Folder on XP'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-114949482782737233</id><published>2006-06-05T01:02:00.000-07:00</published><updated>2006-12-06T20:09:45.681-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AOP'/><title type='text'>Wicca v2 website is up!</title><content type='html'>The &lt;a href="http://www.columbia.edu/~eaddy/wicca"&gt;Wicca v2 project website&lt;/a&gt; is now online. Wicca supports static and dynamic aspect-oriented programming (AOP) using byte code, source code, and breakpoint weaving.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-114949482782737233?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/114949482782737233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=114949482782737233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949482782737233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949482782737233'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/06/wicca-v2-website-is-up.html' title='Wicca v2 website is up!'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-114949227227673971</id><published>2006-05-29T00:20:00.000-07:00</published><updated>2006-12-06T20:10:18.883-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Accessing mdbg COM wrappers from native C++</title><content type='html'>I needed a way to pass the Debugger COM object wrappers from mdbg to a COM library I wrote in native C++. Suppose you want to pass ICorDebugModule from mdbg (or, more likely, an mdbg plugin) to a C++ COM object:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;In your COM object's IDL file, add a method that will be called from mdbg:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;interface IHelper : IDispatch {&lt;br /&gt;    ...&lt;br /&gt;    HRESULT HelperMethod([in] LONGLONG piunkCorDebugModule);&lt;br /&gt;    ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Add the method implementation:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;STDMETHODIMP IHelper::HelperMethod(/*[in]*/ LONGLONG piunkCorDebugModule)&lt;br /&gt;{&lt;br /&gt;    CComPtr&lt;icordebugmodule&gt; spiCorDebugModule;&lt;br /&gt;    hr = ((IUnknown*) piunkCorModule)-&gt;QueryInterface(__uuidof(spiCorDebugModule.p),&lt;br /&gt;            (void**) &amp;spiCorDebugModule.p);&lt;br /&gt;    ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Create a COM Interop assembly for your COM object so you can call it from managed code. Right click on mdbg (or your mdbg plugin) and select Add Reference. Click on the COM tab and select your COM object.&lt;br /&gt;&lt;li&gt;Call the COM method from mdbg/plugin:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;&lt;br /&gt;IntPtr ptrUnkCorDebugModule = Marshal.GetIUnknownForObject(&lt;br /&gt;    module.CorModule.CorModuleInterface);&lt;br /&gt;&lt;br /&gt;HelperLib.IHelper = new HelperLib.IHelper();&lt;br /&gt;helper.HelperMethod(ptrUnkCorDebugModule);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-114949227227673971?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/114949227227673971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=114949227227673971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949227227673971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949227227673971'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/05/accessing-mdbg-com-wrappers-from.html' title='Accessing mdbg COM wrappers from native C++'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-114949418413751415</id><published>2006-04-20T00:53:00.000-07:00</published><updated>2006-12-06T20:10:29.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AOP'/><title type='text'>Dynamic binary weaving using mdbg works!</title><content type='html'>I took one of the C# samples (see attached typefinder.cs) from the Microsoft SSCLI 2.0 package and built it using the regular C# compiler. I then launched it using Wicca and wove a Logging aspect at runtime:&lt;br /&gt;&lt;pre&gt;mdbg.exe -verbosity 0 -nologo !load wicca.dll !wtype binary !wrun typefinder.exe html !weave LogAspect.dll !wgo !quit&lt;/pre&gt;&lt;br /&gt;Here's an explanation of the command-line:&lt;pre&gt;&lt;br /&gt;        mdbg.exe                The Microsoft Managed Debugger.&lt;br /&gt;&lt;br /&gt;        -verbosity 0            Keep debugger messages to a minimum.&lt;br /&gt;&lt;br /&gt;        -nologo                 Don't display the Managed Debugger logo.&lt;br /&gt;&lt;br /&gt;        !load wicca.dll         Load our plugin.&lt;br /&gt;&lt;br /&gt;        !wtype binary           Use binary weaving. We also support breakpoint&lt;br /&gt;                                weaving using the Debugger's Breakpoint API.&lt;br /&gt;&lt;br /&gt;        !wrun typefinder.exe html       Launch the typefinder.exe&lt;br /&gt;                                client program in suspended mode.  Typefinder&lt;br /&gt;                                is a sample program that searches for classes&lt;br /&gt;                                and interfaces that include the string specified&lt;br /&gt;                                on the command-line (we just specify "html").&lt;br /&gt;&lt;br /&gt;        !weave LogAspect.dll    Weave in the Logging aspect (see attached&lt;br /&gt;                                LogAspect.cs).  The aspect causes all Reflection&lt;br /&gt;                                calls made by typefinder.exe to be logged.  We&lt;br /&gt;                                use Phx.Morph to weave in the aspect.  Our&lt;br /&gt;                                AssemblyDiff component diffs the original and&lt;br /&gt;                                woven executables and creates the delta files&lt;br /&gt;                                (.dil and .dmeta).  Wicca then calls the&lt;br /&gt;                                Debugger's Edit-and-Continue API to patch the&lt;br /&gt;                                running program using the delta files.&lt;br /&gt;&lt;br /&gt;        !wgo                    Resume execution of the newly woven Typefinder.&lt;br /&gt;                                The output is attached (dotest.txt).&lt;br /&gt;&lt;br /&gt;        !quit                   Exit the Managed Debugger when Typefinder exits.&lt;/pre&gt;&lt;br /&gt;This is our first successful nontrivial test, but there are still numerous issues to work out. The goal is for dynamic (binary and breakpoint) weaving to be at parity with static weaving (using Phx.Morph). The only difference is that dynamic weaving is currently much slower.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-114949418413751415?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/114949418413751415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=114949418413751415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949418413751415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114949418413751415'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/04/dynamic-binary-weaving-using-mdbg.html' title='Dynamic binary weaving using mdbg works!'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29282035.post-114948958596197875</id><published>2006-04-12T23:37:00.000-07:00</published><updated>2006-12-06T20:10:48.815-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AOP'/><title type='text'>Tricking ildasm Into Dumping a Metadata Delta File</title><content type='html'>I found a way to trick ildasm into dumping the metadata delta file. Just add .obj to the filename and constrain the output:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; ildasm HelloWorld.exe.1.dmeta.obj /text /metadata=raw /metadata=heaps&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29282035-114948958596197875?l=marceaddy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marceaddy.blogspot.com/feeds/114948958596197875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29282035&amp;postID=114948958596197875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114948958596197875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29282035/posts/default/114948958596197875'/><link rel='alternate' type='text/html' href='http://marceaddy.blogspot.com/2006/04/tricking-ildasm-into-dumping-metadata.html' title='Tricking ildasm Into Dumping a Metadata Delta File'/><author><name>Marc Eaddy</name><uri>http://www.blogger.com/profile/18114520173716726150</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
