shahine.com/omar/

homepage | Send mail to the author(s) contact

yet another Microsoft blogger

 Saturday, January 29, 2005

Windows Indexing Service + ASP.NET = CannotDebug

Agrhhhhh! This is why I hate computers sometimes. Based on this post that I saw a few days ago I enabled the Indexing Service on Windows XP. Well all of a sudden I started getting:

Parser Error Message: Access is denied: [name of .dll here]

When debugging dasBlog. For 2 freaking hours I tried to figure out what was wrong, and then thanks to google found this.

"If you use Index Server, you can exclude the Temporary ASP.NET Files directory from the folders that the Index Server scans. To do so, follow these steps."

Lets see, the Indexing service is disabled by default. I enabled it so that I can use it. Why else would I do this? And why can't aspnet_regiis exclude this directory from the Indexing Service? I hate computers sometimes.

Posted Saturday, January 29, 2005    Permalink    Comments [2]  View blog reactions

 

 Friday, January 28, 2005

How the Moleskine Rocked My World

It's so weird how a small black book and a nice pen can change things. Since graduating from college I have increasingly gone "all digital". No more paper, vacuum tubes, tapes etc etc. However, in this process I have tried to cram the needs of my life into a set of rather restrictive tools, at least when compared to paper. While Getting Things Done has really helped me to manage my life using digital tools, I feel that I've arbitrarily limited my own success because I never even allowed myself to consider paper as a tool for helping me. Kind of short sighted looking back.

The PDA

When I first red Steve's post about the 21st century PDA it really made me think. In school I used to take lots of notes, I mean lots. That is how I learned. Since then I use the computer for everything. I have owned a few PDAs over the years, and looking back on my experiences I can't say that any single one has really done a better job than paper can do for some core things. I think the PDA was initially attractive to me because I could have my contacts and calendar everywhere I go. However, now my phone provides that functionality, as well as e-mail and wireless synchronization to our corporate exchange servers. Whether it's Smartphone or Pocket PC Phone Edition, they both do this well. However, the Smartphone is to much of a read only device, and the Pocket PC is to clunky for taking notes. To this day, I have yet to find a better note taking experience then paper. The Apple Newton came dammed close, and since then no one has bothered. My Tablet PC and OneNote has an amazing writing experience but my laptop is to big, heavy, and runs on batteries making it non ideal for note taking. Until there is a small slate like device that can capture ink like the Tablet PC, I will probably never feel that it's suitable for the kinds of things my Mokeskines are.

So, what does a guy who has a SmartPhone, Tablet PC, OneNote, and 3 computers need a Moleskine for? A lot of things, and I'll explain them based on the notebooks I purchased.

Moleskine Large Ruled Notebook

I use this notebook exclusively at home for taking notes when I read computer books, photography books etc. Basically anything where I am learning something that I want to commit to memory, as well as have available for reference later. This was basically how I worked in school, so why not in life? I also check a lot of books out of our library at work, and once I return them I pretty much lose whatever I didn't commit to my brain. Cuddling up with a book and my 5 pound tablet with 3 hours of battery life ain't going to suffice in these cases.

Moleskine Pocket Ruled Notebook

This notebook goes everywhere with me. I've obviously read all the Hacks out there, and have taken some and applied them to my notebook. This notebook is primarily for my "Life" since I use my PC so heavily at Work, and use the Outlook Task list for my Actions. I've organized the notebook into 4 sections. I divide the book in half and I place the first  Avery Write-On Tabs there. The first section of the notebook is for Next Actions. In the Next Actions section I label pages with Contexts like @Calls, @Home etc. From the middle and for the next 10 pages I have Projects, then Someday List, then Reference. In the Someday section I have a page for my Wish List and then my Blog Post list. In the Reference section I place any reference info like the Caltrain schedule, our Microsoft shuttle schedule, a map of the Redmond Campus, Flight info etc.

Then I turn the notebook horizontally and vertically and that is where I write my generic Notes or where I dump stuff. Things I would normally write on a post it and then lose track of later. So think of it like this:

  1. (1 - 96) : Next Actions
    1. A page each for @Calls, @Errands, @Home etc. I use one page per context, and then I move to the next free page when it's filled.
  2. (97 - 107) : Projects
    1. For a list of all my active projects.
  3. (107 - 117) : Someday
    1. A page for my Wish List
    2. A page for my Blog Posts list
  4. (192 - 127) : Notes/Dump
    1. this section starts from the back of the notebook and works it's way in.

I can't tell you how amazing it is to just have this thing around to immediately write things down. It gives me a lot of control in my life and makes it quite fun. I use a Fisher Space Pen Bullet in Matte with a Clip.

fisher_space.jpg

I keep the pen strapped to the top of my notebook. I also keep a Bart card, a New York metro card, some stamps and a $20 bill in my secret hidden Moleskine pocket.

Moleskine Large Squared Notebook

I keep this at work and use it for meetings where I don't want my laptop, for my weekly One on One's with my direct reports, and for an ideas that I have. It's divided into 3 sections:

  1. (1 - 120) : General Notes, Meeting Notes etc
  2. (120 - 130) : Projects
  3. (130 - 240) : People
    1. This is for any One on Ones, Interviews or an discussions I have with people.

Technology

At first I was worried that I would have a hard time integrating analog and digital. However, what I have found (like Brian Johnson) was that I became a better OneNote user. I love OneNote, but because it was so easy to create sections, pages and the like my Notebook had this crazy complicated taxonomy that I could never figure out myself.

When you start using paper again, you are limited by some fairly basic things. One you write you can't erase, when a page is full it can't be moved, and you can't search your notes with a computer. However, this isn't so bad, as this is how I did things for most of my life and it tended to work fine. Digital has introduced so many options that I never knew how to use them. Some of the things I have noticed doing the past few days are:

  • I like taking notes in my Moleskine at work. I am not distracted by Outlook, and I can focus on the meeting rather than bury my head in my laptop.
  • I transfer important work items like next actions to Outlook at some point, and then cross them off.
  • When I am using OneNote to take notes, I mark Next Actions using the Todo flag, and when the meeting is done, or I am finished taking notes, I send these tasks to Outlook from OneNote. 
  • I take all notes from my One on Ones in my Large Moleskine.
  • I keep the number of sections and folders in OneNote to a minimum.
  • I separate a Work and Personal section in OneNote.
  • My personal stuff is mostly in my Pocket Moleskine since that's what I have the easiest access to at home, on the weekends etc. It doesn't run out of batteries and doesn't require that I boot it up.

So the bottom line is that I use a mix of my Large Moleskine and OneNote at work. I like to think on paper, and take notes in some meetings (the ones where I am learning new stuff), and use it for ideas. Stuff that is actionable I move to Outlook later. I use OneNote for all my other Meeting Notes, as well as putting small snippets of reference data and such.

Here is what my OneNote looks like:

  • Side Notes - screen clippings, etc
  • Inbox - dumping ground for all unprocessed stuff
  • Personal
    • House - House related notes
    • Journal - Journal for when I travel
    • Notes - General notes, dump, ideas
    • Programming - Stuff I learn about programming
    • Reference - General reference info
    • Restricted - Password protected for personal notes
  • Work
    • Lists - my GTD lists that I manually transfer to Outlook later
      • Next Actions - things I can think of before I move them to Outlook via OneNote.
      • Projects - A list of all my active work projects
    • Meetings - a place for all my meeting notes that I don't use the Moleskine for
    • Notes - General notes, dump, ideas etc
    • Classes - for classes I take at work

As you can see my work Section has Lists for my GTD stuff, but all my personal Lists are in my Moleskine Pocket notebook. I've found that this is just the right balance of digital and analog to make me more productive. My work notebook is more temporal/transitive in nature, where my pocket notebook is not as in many cases it's the primary life task list.

I'm still tweaking the system, but so far I like it.

If you are interested in any relevant links that I find as I learn more you can read or subscribe to my del.icio.us link blog.

Posted Saturday, January 29, 2005    Permalink    Comments [3]  View blog reactions

 

 Thursday, January 27, 2005

Staying on the Getting Things Done Wagon

Scoble just mentioned that he'd fallen off the Getting Things Done wagon. This is dangerous. Since I started last march I have never fallen off the wagon. I have been bad about my weekly review of the task list, and I generally add more tasks to my task list then I complete, but I have stuck to it because I know that my life before it was a stressful mess and I want no part of that. I religiously file things at home, use my Brother label maker to label my manila folders, and keep all unprocessed things in my real "inbox" to be dealt with when I have time.

An inbox full of stuff directly correlates to stress. Stress gets in the way of work, AND life. I don't want to be stressed, so I am religious about making sure that my Inbox is fully triaged by the end of every workday. My inbox is by no means ever empty, cause that's IMPOSSIBLE. My inbox always has less then one screen full of emails in Outlook (translation, under 20 messages). Usually I have 5-10. These are just things that are in the queue. They get dealt with and I don't ever stress about them. Because of ClearContext I know that anything important is red, and catches my eye so I know in what order to deal with things.

I have added one valuable tool to my Getting Things Done system, and that's my 21st Century PDA. I love this thing, and I can't begin to explain how it filled a big void in my life. The Moleskine is like the Brother label maker + Manila Files. Because of its simplicity and ease of use, it's a motivation to write things down. Stuff that I used to store on my scratch disk (the brain) and stuff that I always forgot because I wasn't in front of a computer with OneNote or Outlook. It's made me so happy. I feel even more in control of the things I need to do, and I really enjoy knowing that they are all in one little black book.

Posted Friday, January 28, 2005    Permalink    Comments [1]  View blog reactions

 

My New Etymotic Headphones

I have owned the Bose Noise QuietComfort I and II for a while now. A few weeks ago (at Macworld) I purchased the Etymotic ER 6 isolator earphones for $99. I seriously love these headphones. I did not get the white ones (ER 6i) because they were designed to compensate for deficiencies in the iPod (from what I understand). These are also deficiencies common in other MP3 players although I don't know which ones.

"6i isolator earphones are designed specifically for use with the Apple iPod and other small portable players, offering 8 dB higher overall sensitivity and slightly more bass than the ER-6 isolator earphones." [link]

I was lucky enough that I could try both the black 6 and the white 6i. The both fit in your ear a bit differently, and I happened to like the black ones better because they use the 2 flange eartip rather than the white 3 flange eartip. Plus they were cheaper. I also tried out the Shure E3c, but liked the ER 6 much better. I also happen to have a great interaction with the people in the Etymotic booth at Macrworld... much better than my experience in the Shure booth. To top things off, the Etymotic people were selling their product in the booth for a nice big discount and they gave me a free Sumajin, which is a genius invention and a must have for all portable music player owners. I like companies that sell their stuff at Macworld... instant gratification + big discount is king

I have yet to get on a plane since purchasing them, but when I do I'll let you know how they fare against the Bose. Scoble says he is going to buy the white ones, but if he doesn't have an iPod I'm not sure why he would. Buzz first pointed to these a few months ago, and of course planted the seed in my head that I must buy them to replace my white Sony Earbud headphones.

Posted Thursday, January 27, 2005    Permalink    Comments [1]  View blog reactions

 

 Wednesday, January 26, 2005

Favorite FireFox feature

This has to be my favorite feature (I don't really use FireFox, but just started to play around with it). I am always looking for specific text in a web page, and I hate doing the Control-F, rinse, repeat mechanism to find something. FireFox has this nice feature where you can just start typing the text and it will automatically find it in the page.

I do this A LOT when clicking on results from a search query, and looking for the string I searched for in the page. Love it.

firefox_find.png

FireFox is pretty slick. It has lots of nice small usability and productivity enhancements.

Posted Wednesday, January 26, 2005    Permalink    Comments [1]  View blog reactions

 

 Monday, January 24, 2005

Office 2003 Primary Interop Assemblies Article

Everything you wanted to know about the Office 2003 Primary Interop Assemblies (ignore if you aren't writing a managed code for Office).

"Learn how to get and install the Office 2003 primary interop assemblies (PIAs), and how to reference and troubleshoot them."

Of course it won't address the issues Josh raised.

Posted Tuesday, January 25, 2005    Permalink    Comments [0]  View blog reactions

 

 Saturday, January 22, 2005

Unlimited Photo Backup/Gallery (SmugMug)

I can't believe I just found out about this! SmugMug is an online photo site like Shutterfly or Ofoto with some BIG differences. For $29.95 a year you can store unlimited photos! That's right, simply start your uploads, and they will store full resolution versions of your pics as long as they are around. For the standard account I believe they limit you two uploading 2 GB of data a month. Still that rocks.

I was just lamenting at work about how I'm pretty bad about archiving my pictures offsite (I do back them up to DVD and place them in a FireSafe). This totally solves the backup/sharing problem all in one place.

To top it all off, they have an XML-RPC based API for manipulating your stuff, creating albums, and uploading. Badass!

If you signup and feel like it use my email address, omar at shahine.com (replace at with @), or this coupon code (hDBXAc8lccGdQ) to get $5 off (I will get a $10 credit). Or click here to signup.

Here are the features you get:

  • Shoot a million photos — it's unlimited!
  • Upload 100s of photos with a click
  • Organize at light speed
  • Liberate yourself from spam and ads
  • Make it easy on your friends with 1-click sharing
  • View more pics with less clicks
  • Buy top-quality prints and gifts
  • Sleep well with backup CDs & DVDs
  • Retrieve your original, high-res photos
  • Post photos in blogs & forums
  • Upload from camera phones
  • Create your own vanity URL
  • Track visits and watch your popularity grow
  • Be notified of comments
  • Crop the bad parts
  • Enhance the good parts
  • Password-protect the embarrassing
  • Create private ShareGroups
  • Create a bio
  • Flaunt your friends and family
  • Program it!
  • Just $29.95/year

Posted Saturday, January 22, 2005    Permalink    Comments [2]  View blog reactions

 

Dear Linksys

Scott recently posted about his new WRT54G, and at the bottom of his post he stated:

  • Flakey: This is a flakey router. I have to reboot it once or twice a month. Also, when I flashed it this evening with the new Alchemy build (I was upgrading from Satori) I had to hold the reset button for like two minutes. Also, the power light wouldn't stop flashing (a bad thing) until I disconnected and reconnected the Internet cable (a weird thing) then everything started working again (a good thing.)
  • I was a very first customer of yours, and purchased your first router at Fry's. I loved this router. It was stable, never required reboots, and generally worked. Since then your products have gone down hill. For one thing, you never know what you are purchasing. You have devised a tricky scheme whereby you version your hardware, and your firmware. On your web site it never states what is what. When purchasing at Fry's it's a challenge to find a single box that was not returned, and different boxes state different version numbers such as v 1.1, v 2.1, v 3.2 for the same product line. To make matters worse, the firmware downloads on your web site never state which goes where. Finally, your firmware has a tendency to destabilize the product requiring numerous reboots.

    The last time I bought something from you was last year. It was a Wireless Access Point, and it required reboots every 2 days. Every firmware version released made matters worse, and finally you gave up releasing firmware so you could release new versions of the hardware (see above).

    To make matters worse, companies are charging $20 a year to send you firmware to replace your crap firmware. Can you believe this? That's right, people are making money on your deficiencies, and they are happy about it! I guess that is why you give away your source. You should consider getting them to do all your firmware development.

    I hoped that when Cisco purchased you their first priority would be to clean up this mess. Seems it will take longer than hoped since your brand new flagship 802.11g router causes Scott Hanselman grief. And if it causes him grief do you think I'm going to place such a product in my home, or my family's home? No thanks. Instead I use the Microsoft Broadband routers which were discontinued. I know people that still scour the Internet for this product because it's the only thing that doesn't require a reboot every few days.

    And finally, to illustrate my point. The only routers you should ever purchase are the ones on this page. This ensures that the router meets some decent level of quality. The Linksys WRT55AG that Scott has is listed there, but like this:

    Linksys WRT55AG Dual-Band Wireless A+G Broadband Router Ver. 2

    That's right, Ver. 2. How do you know if you are buying Ver. 2 when purchasing online? Beats the heck out of me. If you were at Fry's it's the one w/o any Return Stickers, and if you look closely, it will probably say on the side of the box.

    What do I do about all this? I have a stockpile of Microsoft routers (2 MN-700s, 1 MN-100), my parents and sister each have MN-500s as well as Apple AirportExtreme for wireless bridging.

    Posted Saturday, January 22, 2005    Permalink    Comments [3]  View blog reactions

     

     Friday, January 21, 2005

    MovableType Blacklist for .NET

    As I promised, here is the code for the MovableType Blacklist that I wrote for dasBlog.

    There are three pieces to it:

    1. the IBlackList interface
    2. The MovableTypeBlacklist class
    3. The Factory Class that holds an instance of the MovableTypeBlacklist and the ReferralUrlBlacklist

    Feel free to use in your ASP.NET application.

    Posted Saturday, January 22, 2005    Permalink    Comments [0]  View blog reactions

     

    dasBlog 1.7 questions and answers

    First of all, the community reaction to dasBlog Community Edition 1.7 has been great! I’m delighted that people have been able to move with little trouble. However, a number of folks have asked some questions and I’d like to answer some of those.

    Question: What happened to the Attachment feature, and what is this new Enclosure feature?

    Answer: in previous versions of dasBlog there was a way to Attach files etc to a post. However, all this did was move the file from your desktop to your /binary folder and adds a link to the content of an entry. I never thought this was very useful. Furthermore, dasBlog never utilised the enclosure feature of RSS. I decided it was high time we actually make this feature useful, and support RSS enclosure. However, RSS enclosure only allows for a single enclosure per RSS item. My goal was to also allow the old functionality, and support a true n number of attachments but only expose a single one as the RSS enclosure, but I never finished this work. Expect it in the next version.

    Question: What happened to the image upload feature?

    Answer: Since FreeTextBox has a nice image upload feature via the Gallery I assumed this was good enough for folks and I removed the duplicate functionality in upload image. Well, a number of folks have expressed that they miss the old feature. Expect this to come back in the .2 version of 1.7, and in 1.8 expect a better image upload feature that allows you to store all the images/attachments per Entry in a guid based folder in the /binary folder. I’ve wanted this for a while as I have tons of stuff in my /binary folder that’s orphaned.

    Question: The directions for uploading are a bit confusing, can you clear this up?

    Answer: I reworked them a bit as I got plenty of feedback that it was confusing. I’ve placed them in the Release Notes.

    Question: How do these new anti-spam feature work, and how do I turn them on?

    Answer: dasBlog 1.7 has 4 major anti-spam features. They are all disabled by default, and you need to enable them in your Configuration. When enabled there is an additional option to send an HTTP 404 Status Code to blocked referrers, dropping the connection and not wasting any server resources on the referral.

    1. CAPTCHA for Comments

    This feature will force users to prove that they are human via a proof. The proof is that you mist enter a 6 character series of digits and numbers in the CommentView page before the Comment will be accepted. The aim of this is to prevent automation of comment entry.

    2. MovableType Blacklist Support

    dasBlog includes support for the MovableType Blacklist by Jay Allen. This will prevent referrals and comments from any domain that is listed in the blacklist.txt file. When enabled, dasBlog will attempt to download this file in the Application Start method, or when enabled from the Configuration page. At most the file is downloaded once per day, and will also be downloaded whenever your ISP sets your ASP.NET worker process to recycle.

    3. Content based Blacklist

    dasBlog will also filter out any domain from referrals or comments based on keywords that you can enter in the Configuration Page. You should place the entire domain, or any subset of that domain separated by a semi-colon. For example, “foo;bar;foo.com;bar.com”.

    4. IP Blacklist

    The IP Blacklist must be enabled from the Web.config section (httpModules) since it operates as an HttpModule. The list of the IP addresses to block is located in the blockedips.config file in your SiteConfig folder.

    Question: Will you add support for rel=nofollow?

    Answer: Yes, this is checked in and will be in .2. It will only be used for Referrals, not for Trackbacks or Pingbacks. If it becomes a problem for Trackbacks and Pingbacks I will add support for this as well. dasBlog does not render html tags from comments so there is nothing to do there.

    Question: I’ve found a bug or have a feature request, where do I send them?

    Answer: Please enter them into SourceForge

    Question: When will bug x be fixed?

    Answer: In about a month we will fix the highest priority bugs in a Service Release. This will be the .2 version of 1.7.

    Question: I have some code I would like to contribute, but I don’t want or know how to join the project.

    Answer: Just zip the code and send it to me. You can get the code from CVS Anonymously.

    Posted Saturday, January 22, 2005    Permalink    Comments [5]  View blog reactions

     

     Thursday, January 20, 2005

    ClearContext to deal with E-mail

    I've been meaning to write this for a while, and reading John's post on Microsoft's Email Culture finally motivated me to do so. I'm particularly interested in talking about how I deal with "Ignore Incoming Email" since that can be a major distraction.

    It's been almost a year since I started using Getting Things Done. Overall I would say it's been a resounding success. I feel in control of my life, my work, my email, and my endless list of things that I want to do. However, I have had a few glitches along the way. Fundamentally, the "system" does not scale to the mail volume I receive. If I spent a minute per mail per day I would do nothing but email. Furthermore, for a few months I was spending 10 - 4 in meetings. That meant that my only time to take care of e-mail was from 8 - 10, or during meetings (which is useless), or at night. It wasn't a happy thing.

    Now, some of this was a bit ridiculous. You can't be in meetings all day and expect to do any work. And if you are burying your head in your laptop during the meeting, there is no point in being there. But, beyond that, GTD does not teach you how to deal with 200-400 pieces of mail a day. I believe that the system is really suited for some one who gets a low to modest amount of mail, which does not really exist at Microsoft.

    For a few months I used a system whereby Outlook would color messages where I was the only recipient in blue, if I was in the TO line in green, and if I was in the CC line in Brown. Based on color I could sort of figure out what to read first and what to leave for later. However, this was flawed for a few reasons. Out of the box, the two views that Outlook gives you that are most useful are:

    • Group by Conversation
    • Group by Date

    However, both of these "sort" orders do not give you the most important information at the top of the inbox. Group by Date assumes that the newest messages are those you should read. Group by Conversation assumes that the conversation with the most recent reply is on top. These messages "above the fold" basically have no intrinsic importance associated with them.

    The Inbox is really something I use for "triaging" messages. For any given messages I do the following:

    1. See if I can determine from the subject or From if I should read it immediately
    2. See if I can act on it in < 2 min and delete it
    3. See if I need to turn this into a Task ala GTD.

    Now for an example. Say I get an email sent to my entire division at Microsoft, or I unnecessarily get added to a thread that I really don't need to be on just because I'm a member of some team distribution list. Well no matter how much I delete, any one who replies gets that thread bubbled above the fold. Clearly this doesn't work. I could go on with numerous examples, but at the end of the day the problem still stands. Outlook has no way of organizing the inbox in such a manner that the important stuff is above the fold. Or does it?

    Over the holidays I got an email from Deva Hazarika, the CEO of ClearContext (blog), asking if I would check out his software. I was traveling at the time, but when I returned I decided to give it a go. I was very intrigued and found out that Deva actually lives around the corner from me, so we met for lunch and had a great 2 hour talk about his company, the software, and my problems with email! Since then I've been using ClearContext to see if it would work for me. As of now (1 month with the software) I cannot live without it.

    First and foremost, ClearContext is a well written Outlook Add-in. I have spent my fair share writing Add-ins for Outlook, and I can smell a rotten Add-in a mile away. ClearContext has a great installer, seamless integration, and worked without any hitches. One installed ClearContext will re-arrange your inbox so that the important items are at the top. I will explain a bit how this works, but the bottom line is that it has saved me countless hours in the past month and integrated wonderfully with my existing Getting Things Done system.

    ClearContext works by evaluating a number of aspects of an email to determine it's priority:

    • Who the message is from (you can rate specific contacts importance to you)
    • Which domain the message is from (for example, @microsoft.com can be higher than others)
    • Importance of the determined priority of the message
    • If you are a participant in a thread
    • The "directness" of the message

    Based on these factors it will assign a "score" to a message, and a thread. Based on these scores it will sort your messages. Additionally messages are colored with Red being most important, then Blue, Green, Black and Grey (in order of priority). You can also tweak the importance of the weight of these items. For example, I made Thread Participation most important since I usually want to keep on top of thread that I have replied to.

    ClearContext also has a notion of a "Topic". You can assign a Topic to a message, and then you can use a button to File that message automatically to a folder. Since I already had a folder hierarchy of Projects from GTD, I was able to point ClearContext at this folder hierarchy and it created all the Topics for me. Filing messages is a breeze now. Topic = Project in GTD.

    To illustrate how this can be useful, I'll use two examples.

    1) General News type message

    Every day I get a few emails about "Top News Stories". I don't need to read these when I get them and if I don't get them it's no big deal. I told ClearContext that these messages are the lowest priority. As such the messages never appear at the top of my inbox, but the very bottom. I can get to them when I have time, and if I don't I just bulk delete them.

    2) Threads I don't need or want

    Say I get a thread that I don't need to keep on top of. Well i just set the priority to Very Low. As new items come in, they automatically go to the bottom of the inbox, and I can quickly review or delete them and they never distract me.

    The basic value proposition that ClearContext offers me, also mentioned in John's post, is that as new messages enter my inbox, I do not see them at the top. If the message is not at the top, it's not important. At first I was nervous about this, but after a month I fully trust the system to do the right thing for me. It's incredibly valuable to keep my distractions to a minimum during the day, and ClearContext allows me to do that. I only focus on messages at the top of my inbox, and I never move down till I deal with those. It's instilled the rigour I need to follow the GTD Triage process.

    Now, I have a few small problems with ClearContext, and I've sent them the feedback.

    1. ClearContext doesn't work to well if you have two versions of Outlook 2003 Running simultaneously in cached mode. For most Microsoft employees this can be a problem. The solution though is to run ClearContext on one machine. You still get the views on the other machine, so you don't lose the benefit
    2. You can't view messages in the Group By view. That is, messages are sorted in a flat list like Outlook XP. This is because of how ClearContext sorts items. This isn't a huge loss, but I would like to be able to also Group By Date and Conversation after applying the ClearContext sort order.

    A final note. Software like this really shows the power of the Extensibility model in Outlook. I am amazed by how rich some of the add-ins for Outlook are, like Tablet Enhancements for Outlook, ClearContext, and Plaxo. Outlook truly is a platform, and one receiving a lot of attention from some really innovative developers.

    Posted Friday, January 21, 2005    Permalink    Comments [1]  View blog reactions

     

    Outlook Live

    What happens when you take the most utilized business communication tool and team it up with Hotmail as the mail backend and sell that as a subscription? Outlook Live.

    This is a pretty cool service! You can use Outlook and have all your mail, contacts, tasks, notes stored on Hotmail. Your data roams and you can access it anywhere. I've been using this for the past few months and love it. It makes Hotmail as my primary non work account really slick. Furtheremore, if you don't own a copy of Outlook 2003, it comes with the subscription.

    Posted Thursday, January 20, 2005    Permalink    Comments [4]  View blog reactions

     

     Tuesday, January 18, 2005

    dasBlog 1.7 released

    Well, I'm a bit late to the party... but as Scott announced, dasBlog 1.7 is finished. There are numerous and substantial improvements in this version. Some of them were done months ago, and the most substantial came in the last 2 months as Scott and I feverishly whipped dasBlog into a fast asp.net app. We hope we've also given folks the tools to help combat referral and comment spam.

    Anyhoo, here is the 411:

    • dasBlog is no longer hosted on GotDotNet, and has new home at SourceForge.net. Using CVS as source control actually makes it a joy to check in code to dasBlog.
    • New Features
    • Release Notes
    • YOU MUST UPGRADE your content folder. This is *not* and XCOPY deployment. There were two major bugs fixed in the dasBlog runtime that require that the dasBlog files be rebuilt. Unfortunately there was no avoiding this. Read the instructions in the DasBlogUpgrader download. update: the instructions in the download aren't as clear as those I recently updated in the Release Notes
    • For most other details see the wiki

    Anyway, I learned a lot about asp.net, programming and dasBlog working on this release. It was really fun and I look forward to working on 1.8 :-).

    Some of my favorite 1.7 features

    • All the search bot referrals to your site are "pretty printed" in your logs
    • CAPTCHA for entering comments
    • MovableType Blacklist and Content based Blacklist for visitors to the site
    • <%ReferralListFiltered()%>Macro that will shrink the number of referrals displayed in the Permalink and expose the rest using javascript and css.
    • Performance
    • Lots of smart Caching
    • Trackbacks/Pingbacks work reliably.

    update: if you happen to use dasBlog to do any CrossPosting (post to another blog from dasBlog) DO NOT CrossPost in 1.7. I just found a bug that causes dupes. If you want a fix and can't wait for .2 (which will of course fix these types of things) leave a comment and I will send you an updated patch (one dll).

    Posted Wednesday, January 19, 2005    Permalink    Comments [10]  View blog reactions

     

    Picasa 2 supports RAW

    Finally, a *free* photo album tool that supports RAW images like those from my Nikon D70!

    http://www.picasa.com/

    update: it appears Picasa does not support auto rotation of images. That sort of bums me out. The data is there, not sure why they would not take advantage of it.

    Posted Tuesday, January 18, 2005    Permalink    Comments [2]  View blog reactions

     

     Thursday, January 13, 2005

    Programming Teaches

    Sometimes I wonder if I was supposed to be a programmer. My job at Microsoft does not require that I write any code... that's not what Program Managers do. Instead I do all sorts of other stuff, but I enjoy it a great deal. However, sometimes all the context switching from multi tasking KILLS me. I mean if I am juggling 2-3 super high priority items at once I get really burned out.

    That is why I really enjoy programming so much in my spare time. I don't have to multi-task and I can focus on one problem at a time. I find that to be incredibly rewarding. The ability to create something from nothing, to take an idea and make it work all by myself. I sort of get to do that at Microsoft but the process is lengthy, I don't actually build the thing, and you often don't get that satisfaction till you "ship". Depending on where you work, that could be every 2 months to every 2-3 years, sometimes longer.

    The funny thing is, when I came to Microsoft I didn't really ever write code. I took two 4 months classes in college (C++ and Java). I hated C++ cause after 4 months all I could do was write a console app. Java was neat in that I could draw stuff, make games, silly and cool little apps in days. After that I pretty much never tried again. In May of 2003 I was frustrated at how difficult it was to add words to the Tablet PC Dictionary (which was supposed to improve recognition). I was on a mailing list where some one forwarded a word doc that described how to add words to the dictionary in VB.NET. I installed Visual Studio that day, and started to work on the application. I marveled at how cool the .NET Framework was. I read a few dozen books, not understanding most of the stuff, but learning little by little. I sent the application around to the Tablet Discussion List we have at Microsoft and a few days later I got an email from some folks on the tablet team asking me if I wanted to publish the application as a PowerToy.

    That was really thrilling for me. It demonstrated that I had the creative power to take my own idea and make something that people could download and use. Looking back at this application and the code, I can't help but laugh. I later rewrote the thing from scratch cause none of it made sense to me, and I had long since switched to using C#, so VB looked funny and confusing. Soon after that I discovered BlogX and started playing around with that. I was mostly interested in the Windows application for posting to BlogX but soon after I started to dive into ASP.NET which was a rather difficult thing to get my head wrapped around. My hunger for learning more, and doing more really accelerated. I wrote a bunch of little applications, utilities etc and finally got most of it out of my system ;-). But the ability to do things like extending Media Center, Outlook and add value where I wanted was like an addictive drug. I was empowered to make things the way I want. Such things were:

    • Making the Vacuum Fluorescent Display on my Media Center do something useful
    • plugin for Outlook that could create OneNote notes from Emails and other items
    • NewsGator plugin to post to dasBlog
    • An application to edit the DateTime of photos as well as automatically rotate pictures
    • A small program to zip and unzip files quickly
    • An application to clean all the cruft from a VS.NET project (bin, obj)
    • An application to download RSS and send that to OneNote
    • An Outlook toolbar to replace the GettingThingsDone toolbar out there (that I dislike)
    • A Pocket PC Phone Edition app to switch the device to Vibrate during meetings
    • A Smartphone app for calculating tips
    • An ASP.NET Mobile Forms app for Wine that I have tried.

    Some of these things I've shipped, and others I haven't cause I don't have the time to finish the last 10% to make them shareable. Finally, the product that I currently am having the most fun working on, dasBlog, is also one that I have learned the greatest from. Both Clemens and Scott Hanselman have taught me an immense amount about programming through their code, or through interactions with them. Scott actually spent a bunch of time the past few weeks chatting over IM, Skype and Phone explaining things to me, and is a really great teacher. Clemens wrote so much code in dasBlog that there are still parts of it that are teaching me new things, and some I don't quite fully understand. But each time I decide to tackle some area of the code base that I'm unfamiliar with, I learn a bunch load more. Fixing bugs forces you to understand and learn how things work, which is a great way to learn new stuff.

    The amazing thing about .NET is you can really take your skills and apply them to the Internet, Win32 apps, Mobile apps, Media Center plugins, Tablet PC, Office, COM, etc. Knowing the language is an incredibly powerful tool and can be used consistently across a large spectrum of devices and products. I'm not sure you can do that with anything else. Since I am such a gear head, and out of the box never satisfies me, I have currently touched almost every product we sell that can be extended using .NET for about 12 months of investment of time on my part. That's a pretty decent value proposition for the framework. From my Smartphone to my Media Center, and everything in between, I can change things, make things, and custom tailor software to my liking.

    What's my point? Well I'm getting to that. In the last 18 months I have learned a crap load about programming and .NET. When I was in the MacBU this had zero relevance to my job. However, now in Hotmail it has a lot of relevance, especially since my team is responsible for the Front Door Architecture and Infrastructure. This means that I often spend an enormous amount of time with our developers thinking about .NET, designing for scale, solving problems when things break etc. The interesting thing is that every time I learn something new about programming or ASP.NET it comes up a few days later at work. This past month it's happened at least twice. This means that I can actually play a part in the design or the solution for a problem, and help to actually influence direction and add value where I can. In many ways I feel like my job is a lot like being a student. I learn every day that I am here, in almost every meeting I am in, and from most of the people I interact with. I really find it rewarding to also learn from looking at other people's code and trying to influence my ideas into something that ships. That's really what makes working her addictive for me, and would really make it hard for me to do anything else at this point in my life.

    A lot of the time my wife looks at me staring at my computer screen and has no freaking idea what could be so interesting that I would glue myself to the same chair for hours typing away. Sometime I wonder myself, but often I hardly even notice. I've tried to explain it to her, but just like I can't understand what it's like to save some one's life, deliver their child, or help them create a baby when they cannot otherwise do so (things she does), it's hard for her to understand how this drives me. I consider myself pretty dammed lucky that my ability to do my job benefits from this kind of learning, and that as I learn more, I can contribute more. It's sort of win-win I guess.

    Posted Friday, January 14, 2005    Permalink    Comments [0]  View blog reactions

     

     Monday, January 10, 2005

    Referral Spam and Movable Type Blacklist

    Well, just in time for a wave of referral spam that is hitting my blog (mostly from http://www.ownsthis.com) I spent part of today writing a class that can consume the Movable Type Blacklist. The class will allow you to download this file from the server periodically (no more than once a day). I have written it such that anyone can integrate this into their .Net blogging package, or any other .Net program. I just checked this into the dasBlog 1.7 tree. The nice thing about this is that the Blacklist is maintained in real time, and you won't have to rely just on content filtering (the stuff that Scott did) but you'll get a pretty long and decent blacklist of bad sites. So far, in the past few hours I've gotten 100% of the referral spam and no false positives...

    We are a few days away from releasing the final version of dasBlog 1.7. A very small number of folks have been running the bits over the weekend and as a result we've fixed a few bugs. A couple more days and we'll post the bits to SourceForge.

    When that happens I'll post the MovableTypeBlacklist class. I've also considered writing an HttpModule to send these guys 404s, but didn't really think that was appropriate. The list is basically loaded into a long string, delimited by "|" and passed into a Regex to match a url. Interestingly enough, when I tried to Compile the Regex, my little console app balooned to 150 MB and it never quite finished running. Using a static Regex with the long static string I was able to execute matches in 0 - 10 milliseconds.

    Here is a dump of the class:

    6p.org.uk : True
    Executed in : 20 milliseconds

    microsoft.com : False
    Executed in : 0 milliseconds

    shahine.com : False
    Executed in : 0 milliseconds

    flatbedshipping.com : True
    Executed in : 0 milliseconds

    apply-to-green-card.org : True
    Executed in : 0 milliseconds

    ownsthis.com : True
    Executed in : 10 milliseconds

    Posted Monday, January 10, 2005    Permalink    Comments [2]  View blog reactions

     

     Sunday, January 09, 2005

    Adobe Premiere Elements 1.0

    A few days ago I was in CompUSA doing the usual... walking aisle by aisle as my wife did some shopping in Union Square, and was surprised to find that Adobe had created an "Elements" version of Premiere. Finally, a DVD creating, Video Editing, Movie Making piece of software that does not suck. One of the biggest things missing on my PC is a quality all in one Movie Editing and DVD creation package. Sure, Windows Movie Maker 2 is nice, but it can't burn to DVD. Photo Story 3 is a sweet application for creating movies of your pictures (with unparalleled Ken Burns affect and photo re-sampling as well as music creation) but also lacks the ability to take those .wmv files and then add things like DVD Chapters, DVD templates, and the most crucial step, burning to DVD.

    Well for you Mac folks, you have a sweet package with iMovie and iDVD. iMovie is no good for it's Ken Burns affect, and neither package will generate music for you like Photo Story 3 does (you can select a classical composer, like Mozart and the tempo/mood for your Photo Story and it will generate audio for you). However, iMovie and iDVD excel at Capture of DV video, Authoring of a DVD and have wonderful integration.

    I have tried Sonic, Roxio and Nero products for doing the above and all have fallen short of my expectations... heck I used a Mac for this stuff so I know where the bar is! But I have to say, THANK YOU ADOBE for giving us an affordable, quality, software package that finally puts Windows on par with the Mac for creating DVD's and Editing Videos. And of course, you can just drag and drop your Photo Story 3 movies directly into Premiere Elements making for a pretty seamless experience.

    I'm really diggin the Elements suite of products. I own Photoshop CS, but if I didn't I would buy Photoshop Elements 3 now this supports the Adobe RAW Plugin. Now if Adobe would just update Album to support RAW photos from my Nikon D70 I'd be psyched. You can purchase Photoshop Elements 3 and Premier 1 for $139 and save a bundle.

    Posted Sunday, January 09, 2005    Permalink    Comments [6]  View blog reactions

     

    Skype 1.1 Install Problems

    Jeff is having problems installing Skype 1.1. I am having the same problems. This is the first time I've ever used Skype, so this is not leaving a good impression.

    Anyway, booting into Safe Mode allowed me to install it. Not sure why.

    Posted Sunday, January 09, 2005    Permalink    Comments [1]  View blog reactions

     

     Saturday, January 08, 2005

    Microsoft AntiSpyware

    Not very often does a piece of software come along that blows me out of the water. A few months ago I got a very real experience dealing with spyware. Even after coaching my sister through fixing her computer, on my visit home over thanksgiving I found that all the spyware she had was still installed. When I looked in Add/Remove I was horrified at the number of strange entries in there. My attepmpts to remove them were difficult as well as the uninstallers for these products did such things as:

    "Are you sure you don't want to not uninstall this program as it does x y or z for you"? [Yes] [No]

    Basically they tricked you into not uninstalling the software by confusing the heck out of you with double and tripple negatives and the like. Eventually I got rid of all of it, and my sister now runs AdAware every few days, but it appears that she still has SpyWare issues every so often.

    With my parents it was a lot easier. They had a 3 year old Compaq PC that was falling apart, and so we got them a new Dell that is super sweet. On this machine I made everyone a Limited User, except for my father's account since I've found that some programs just don't install correctly when you try (even though I try and authenticate during the install by running them with admin permissions). Anyway, on their machine, spyware will find a harder time making it's way there since my Mom can't be tricked into downloading something that is not good for her.

    But I was still left uneasy knowing this could happen again. Well a few weeks ago I started beta testing the GIANT AntiSpyware software. I admit, my expectations were low having used some of the other stuff our there. However, I was BLOWN away by how nice a piece of software this is. Not only does it protect you from AntiSypware but it tells me what the heck is going on with my computer. I love knowing when applications are adding themselves to the Startup process, adding Contextual menus, modifying x, y or z. It just leaves me feeling like I'm in control of my PC when installing programs.

    It doesn't stop there. My Dad installed the software and called me up telling me how much he loved it! I really hope this gives assurance to all those people out there that have been burned by SpyWare to not be affraid of their computers any more (or screwing them up). I'm really proud and happy that Microsoft is providing good tools to protect our users.

    Download it now.

    Posted Saturday, January 08, 2005    Permalink    Comments [0]  View blog reactions

     

    RSS xhtml:body

    A while ago there was some hubub about support for xhtml:body in the RSS item tag. Since all RSS aggregators must support the description tag, which contains all the escaped html content of the post, having another tag in the RSS feed that duplicates all this content into a tag that only some RSS readers understand seems silly. My RSS feed is 162k today, and if I stop including the body tag it goes down to 82k. Given that I'm doing about 400 MB in bandwidth transfer at my hosting provider and a large chunk of that is RSS, I'm thinking if folks want the body tag from dasBlog they can use the Atom feed.

    Posted Saturday, January 08, 2005    Permalink    Comments [1]  View blog reactions

     

     Friday, January 07, 2005

    Nullable Types

    I'm pretty excited about Nullable Types in Whidbey. The primary reason I care about this is that in my PhotoLibrary (library that exposes EXIF properties of a picture) has lot of value types like int. One neat thing about the class is that using something like a PropertyGrid you can just point it at the Photo object and it will automatically reflect all the meta data and display it (with very little work). Well if a Picture doesn't contain certain properties, the reference types simply don't appear because they are null. Well, unfortunately all the value types appear in the property grid because they are set to 0. I never found an easy to way filter these out, and there are quite a few EXIF properties out there, which leads to a lot of unnecessary data in the property grid.

    Anyway, this should fix that :-)

    Posted Saturday, January 08, 2005    Permalink    Comments [0]  View blog reactions

     

     Wednesday, January 05, 2005

    Dying Thread on Trackbacks, Referrals and Pingbacks

    Part 2 of 2

    Bug 2: TrackingHandler Thread Dies

    Another problem that Scott Hanselman informed me of was that he would frequently stop receiving Trackbacks, Pingbacks and Referrals on his posts. Furthermore, it was intermittent. This was troubling since losing a Trackback means it's lost forever. Well we went hunting in the code, and thanks to some UnitTest of a theory I had found the answer.

    Basically the situation is this. Scott gets a lot of traffic. More than I do. There is a thread in dasBlog that sits around waiting for Trackbacks and the like. You use it by calling trackingQueue.Enqueue(tracking) and then trackingQueueEvent.Set(). So basically dasBlog can sit there and queue a bunch of trackings, and when it's ready the thread runs to execute them. The code looks like this:

    private void TrackingHandler( )
    {
        while ( true )
        {
            Tracking tracking;

            trackingQueueEvent.WaitOne();
            while ( true )
            {