First time here? Check out the site's "greatest hits" or read a post from the archives. Feel free to leave a comment or ask a question, and consider subscribing to the latest posts via RSS or e-mail. Thanks for visiting!
Do you Tweet? Follow me on Twitter @shanselman or learn how to use Twitter!
Page 1 of 101 in the Musings category Next Page

Twitter: Let the Information Wash Over You

Posted 2009-06-29 01:13 PM in Musings.

twitter-duck-01aThere's a lot of information, both useless and useful, on Twitter. When you get started on Twitter the shear amount of crap can be totally overwhelming.

Twitter's a lot like Tivo (Digital Video Recorders). It'll record everything and everyone you're interested in, and while this seems like a great idea, just like your Video Recorder, what was once a joy quickly becomes a chore. I've got dozens of shows on my recorder...I thought TV was supposed to be fun, now it's become a To-Do List. The same thing happens with Twitter. If you expect Twitter to be high signal and low noise, it's not the medium for you.

If you make Twitter into another list of crap to read, you will be sad. The sooner you realize that Twitter is just a list of crap, the happier you'll be.

Just let it flow over you like water on a duck's back. When you follow someone on Twitter, you're following the whole person. You might find out where @levarburton went to lunch that day. You might see pictures of me taking my kids to see Thomas the Tank Engine. You may see @BillyMays (RIP) last tweet as he gets off a plane. You can get news and opinions, pictures of planes in the Hudson, and find out where famous folks use the toilet. Truly thrilling.

Twitter is a lifestream and just as you'll miss stuff in life, you need to accept you'll miss stuff on Twitter.

Sometimes people will "unfollow" you (or me) and they'll tweet why. I have had a lot of people unfollow me because there's "not enough .NET content" in my tweets.

However, as @unclebobmartin says:

Twitter is not a single topic medium. If you follow someone you follow the whole person.

This statement might seem obvious, but it's not obvious to everyone. Uncle Bob and I don't agree on politics. That doesn't mean I'm going to unfollow him. I'm also not following him because I think I'll miss some deep insight on Software Architecture. I follow Uncle Bob because I like Uncle Bob. He is a full and complete person and he's interesting. When he stops being interesting, well...let's just hope for his sake, he stays interesting. ;)

I use a few tricks with Twitter to stay on to of things without them becoming stressful. That's the key. If Twitter stops being fun, consider Quitting Twitter rather than following everyone.

Twitter Rule #1 - Follow Liberally

Twitter without People isn't Fun. I'll use me as an example, because I'm on Twitter, but note that I'm not the point, just an example.

Sometimes someone will tweet that I've (personally) "filled their twitter timeline." Then I'll take a look at their Twitter account and notice that they are following maybe 7 people. Usually something like 6 friends, the me. This would be like going to a cocktail party with, well, 6 of your friends, and me. That would be obnoxious, or rather, _I_ would be obnoxious. No one would want to go to that party, it would be lame.

To have a real cocktail party, you need a lot more people. Forgive me as I quote myself (ya, I know):

It's a river of uselessfulness and truthiness. It's a permanent cocktail party where you know some folks, and don't know others. Some are famous, some are your friends. There's a the constant background of overheard conversations, except on Twitter, it's socially acceptable, nay, encouraged, to jump in. No need to say, "oh, I couldn't help but overhear, excuse me but..."

To really get something out of Twitter you need to follow at LEAST a hundred people of various backgrounds. Really mix it up. If you're really into just .NET and only want to see .NET tweets, I'll talk about how you can filter in a second.

Still, take a moment and drink this in. Follow liberally. You're following people, not topic experts. They'll tweet jokes and stupid stuff as often as they'll tweet code and useful tips. You'll need to follow a large swatch of people in order to get a wide and diverse experience on Twitter.

Some folks say that they can't find anyone interesting to follow. This is nonsense. Here's a tip. Find ONE interesting person, and see who THEY follow. Rinse, repeat. I've found 1000 interesting people this year. Turns out the world is full of them, and 0.1% of them are on Twitter.

Twitter Rule #2 - Use Search Effectively

Search is integrated into Twitter's website now, when it wasn't before, so that's useful, but I'm still surprised how few people notice that little search box. Make sure when you select a Twitter client that you select on that supports Search Columns. This is how you find info on topics when you're not necessarily interested in particular people.

For example, if you don't want to follow me, but you want to listen to conversations on ASP.NET MVC, make a search column with "ASP.NET MVC" in it.

I recommend these Twitter clients that effectively support search:

  • TweetDeck - The original "deck" full screen client. The first thing you need to do after you install is go to the settings and turn off the "All Friends" notification as it'll drive you insane. The second thing is to setup some columns for topics you're interested in.
  • bDule - A very nice client for Windows with a lot of of flexibility in how you can layout the columns. It also supports Facebook comments and likes.
  • DestroyTwitter - The new kid on the block, it's very minimalist in style but supports many themes. It can be small and thin or be like TweetDeck and have columns.

TweetDeck (2)I have columns in TweetDeck for Friends, Replies, Direct Messages, a search for "hanselman OR hansleman", a search for "Win7", a search for "asp.net", a search for "mvc," and a search for "diabetes." I also add searches for topics that I may find interesting that day or week, but then I'll delete them later. I had a Michael Jackson search for a few days, as an example.

Point is, make sure your Twitter Client supports search. Otherwise it's useless.

Twitter Rule/Tip #2a - Groups

Another way you can segment things is to use Groups. TweetDeck lets you put, for example, all your .NET people in one group and all your diabetics in another. This forces you to break up your party and assign labels to folks, but it's your party. That's another good thing to remember.

Twitter Rule #3 - Favorites as "Read Later"

When things are moving fast you often need a "read stuff later" button. While there is a service called Instapaper that is starting to get integration inside of some Twitter clients, it hardly has the broad support of a TwitPic or other 3rd party tool.

To solve this, I use "favorites" as my "read later." That means if I'm on my phone or my desktop and someone tweets something interesting or a link I don't have time to follow, I favorite it, then I came back later to read it. This simple technique has made things a little calmer for me when there's tweets coming in faster than I can read them. I just hit the little "star" icon in my twitter client that every client supports and I'll get to it later.

Conclusion

So, if you want to follow the Whole Person, follow me on Twitter. If not, just hang out on the blog, there's no hard feelings. :)

Also, consider reading my post on How To Twitter - First Steps and a Twitter Glossary

*Twitter Duck Image courtesy of Paul Söderholm



These are the little bugs that lead to madness

Posted 2009-06-23 01:27 PM in ASP.NET | IIS | Musings.

I received an interesting email today where a fellow was trying to make sure that all browsers could successfully download his company's MSI installer. He had found a blog post that I wrote SIX YEARS AGO on the Content-Disposition header and some trouble I'd had with Check Images. Just in case you're not clear, 6 years is like a century years on the internet.

Here's a little snippet from my incredibly old blog post:

HTTP Headers are name values pairs, so they are easily added with the Response object in ASP or ASP.NET You use it like this (the HTTP Headers):

HTTP/1.1 200 OK
<snip>
Content-Disposition: filename=checkimage.jpg
Content-Length: 76127
Content-Type: image/JPEG

Or, if you want to immediately prompt the user with a File Download Box:

HTTP/1.1 200 OK
<snip>
Content-Disposition: attachment; filename=checkimage.jpg
Content-Length: 76127
Content-Type: image/JPEG

However, Internet Explorer has never really got it right.

Here's a list of gotchas, starting with my own:

  • On IE 6.0, things mostly work, but if you ALSO setup Cache-Control: no-cache, your suggested filename (and type!) will be IGNORED.  A bummer if you have to choose between security and convienence.  Of course, security wins.
  • On IE 4, the attachment option is flaky, see Q182315
  • On IE 5.5, the attachment option is REALLY flaky, see Q267991 and Q279667 and Q281119
  • On IE 5.0, the filename suggested can mangle your filenames, see Q262042
  • On nearly all versions of IE, including 6.0, sometimes the browser will use the filename in the address bar instead of the Content-Disposition Header, and with IE5.5SP2 you're expected to change the UseCDFileName registry key, see Q303750.  This was fixed with IE6.0SP1.

IE's not the only browser with past trouble around this header, but it's been the worst historically. Last year, IE8 made a good move forward when it proposed (during the beta cycle) an "authoritative=true" addition to the Content-Type HTTP header. This would be a way for your server to basically insist that the Content-Type it offered was the correct one. Seems reasonable, like it should have always been that way, eh?

Here's an example on how we'd (under this OLD proposal) force an HTML page to be delivered and rendered as plaintext. Sam Ruby thought it was a good idea as well as sniffing, while inside the HTML5 spec, is generally considered a bad idea.

HTTP/1.1 200 OK
Content-Length: 108
Date: Thu, 26 Jun 2008 22:06:28 GMT
Content-Type: text/plain; authoritative=true;

<html>
<body bgcolor="#AA0000">
This page renders as HTML source code (text) in IE8.
</body>
</html>

Unfortunately this blog post was never updated. EricL (author of Fiddler and very nice person) wrote it, and he'll know I'm not picking on him personally, as this is a huge problem on all blogs, mine included. It's really hard to update old posts when they are obsolete. It's a manual process and all we as bloggers can do is our best to update our old posts with pointers to new information.

Two months later, this post came out and the final design that was agreed on with community feedback looked like this:

Over the past two months, we’ve received significant community feedback that using a new attribute on the Content-Type header would create a deployment headache for server operators. To that end, we have converted this option into a full-fledged HTTP response header.  Sending the new X-Content-Type-Options response header with the value nosniff will prevent Internet Explorer from MIME-sniffing a response away from the declared content-type.

For example, given the following HTTP-response:

HTTP/1.1 200 OK 
Content-Length: 108
Date: Thu, 26 Jun 2008 22:06:28 GMT
Content-Type: text/plain;
X-Content-Type-Options: nosniff

<html>
<body bgcolor="#AA0000">
This page renders as HTML source code (text) in IE8.
</body>
</html>

I'd like this post to serve as a reminder to all of us who are blogging technical content to update our posts if and when appropriate, and certainly when a reader points out errata. As the gent who emailed me so wisely put it:

"These are the little bugs that lead to madness."

Thoughts?



image Microsoft's new Search Decision Engine called Bing is live now (in preview/beta). I thought Bing meant "Bing Is Not Google" but apparently "bing!" is the "sound of found." Found it! Bing!

If you use Google Chrome as your browser you can make Bing your default search. Here's how:

  1. Click the Wrench Icon in Google Chrome and click Options.
  2. Click "Manage" under Default Search.
  3. Click "Add" and make the form look like this:
    Add Search Engine
  4. Now with your new Bing entry selected, click Make Default.

scott hanselman - Bing - Google Chrome 

Go give Bing! a try. I'm going to use Bing for the whole month of June and see how it goes. I'll blog my results.

Technical International Note: If you're outside the US, while Bing is rolling out over the next few days (it's literally rolling) you can temporarily force it to think you're in the US with this Bing URL.

Feel free to post your Bing tips and impressions here in the comments, or follow @bing on Twitter.



iStock_000002294470XSmallDerek Powazek dropped this little piece of truth on Twitter recently:

Twitter was more fun when I could b*tch about a company without them replying to ask how they can provide me with excellent service today.

Things have changed since Word of Mouth got a permalink. When I'm complaining about a company to my friends or while walking down the street, no one seems to care. When I'm calling a company and complaining one-on-one, I don't always get excellent service. Boy, but if you mention a company on your blog, or even better, on Twitter, you'll likely get a reply in minutes.

It's getting to the point that I get better customer service (and hence, satisfaction) on Twitter than I do calling a 1-800 number. I'll spend less time on hold as well!

Where's my Mower?

I recently ordered a Lawn Mower from HomeDepot.com and was bummed when I realize that HomeDepot is NOT Amazon. By that I mean, not every online retailer ships virtually instantly like Amazon. Seems like Amazon has your package being prepared while it's still in the shopping cart. Click Checkout and walk to the mailbox, bam! With other retailers, not so much.,

With my Lawn Mower, it wasn't available anywhere locally so I ordered it online. I was bummed when checking the order status that it was still "processing" four days later and I complained (lower-case "c") on Twitter at 1:26pm on May 19. Sarah from Home Depot replied first thing the morning of the 20th offering to look into it for me. That's pretty cool, so kudos to HD for offering to help.

There's 100s of brands on Twitter (here's the top 100). I'd say, that Comcast got on board first, as I recall, and made really good use of Twitter for customer support. Twitter's also nice for customer support as it's (almost always) clearly a human behind the account. Twitter's not just for customer support, but also for collecting feedback and posting coupons, offers, etc. It's a brilliant medium because of it's elegant publisher-subscriber model and the its brevity constraint.

Why doesn't Home Depot (or any company, as HD isn't the point of this post) jump when I complain on Facebook?

One word: Permalinks.

Facebook is a walled garden, as you likely know. My facebook posts aren't indexed on Google and even within Facebook, they aren't easy to search and very hard to link to, IMHO. On Twitter, tweets are easy to search and you can bet that every one of these folks are using Tweetdeck to hunt for mentions of their brands. That's no doubt how HomeDepot found mine. You don't need a lot of followers, you just need to mention their name.

I've said before, don't give bile a permalink. Brands with an online or social media presence live in constant fear that you will, and it'll be about their brand.

They know that the spark of a negative tweet can fan the flames of rebellion. The threat of RT (retweets) or blog posts about tweets only pours gas on the flames. Even worse, tweets can end up in newspapers and if the company doesn't handle it well, it's over.

Consumer-driven > Company-driven

To Derek's point, yes, it WAS more fun before. I'm not sure I like the reframing of my relationship with these (often global) brands being based on fear, especially their fear of a global uprising based on potential negative publicity. I do like the idea that not only is one not complaining alone any more, but also that Twitter allows the customer (me) to reassert my role as the driving force behind the relationship.

My  question is, however, is this going to scale? I can't see how. There's only, what, 10 million people on Twitter? It's nice now, while there's so few people on Twitter, but it'll be really interesting when Twitter becomes Customer Service Central for every brand on the planet.

I still think it's lame that it took 4-5 days for my Lawn Mower to ship, but I think it's cool that Sarah at Home Depot offered to help me out.

(I got the Toro Personal Pace Mower, on sale at the time, plus a coupon, if you care.)



Disclaimer: It's very likely that I have NO idea what I'm talking about. This is a blog, not a technical article or official anything. Listening to me may well kill your pet kitten and render both your computer and you personally unbootable. Run away in fear as this is all completely useless information.

I paved (reformatted and started over) my main machine, formerly named QUADPOWER, now QUADPOWER7 to use the new Windows 7 RC a few days ago. I went through the process, but wasn't really paying attention. I have a tendency to just Next>Next>Next>Finish my way through most wizards. This will likely be the death of me at some point.

Anyway, my system is a little non-standard and I had at some point a year ago switched hard drives around to make the faster one be my boot drive. I did this by changing the boot order in the BIOs.

Fast forward a bit, and today I wanted to format my DATA drive - my D: drive - and the format applet said "not so fast."

I opened up Disk Management and it showed me this...

clip_image001

Yikes! See how my D: drive is Disk 0 and is marked as System, but my C: drive is Disk 1 and marked as Boot? That means that the Boot Configuration Data (BCD) is on my D: drive. I checked my BIOs, and it turned out, in fact, that I had told it to boot of that drive. However, I'd installed Windows to the other drive and got myself into this situation:

  • Disk 0 - D: Drive with BCD
  • Disk 1 - C: Drive with C:\windows and other booty

I couldn't format D: because it was what I booted off of. Poop.

I searched around and found all sorts of hard and scary descriptions of how to fix this. Basically it boiled down to:

Approach 1: Nuclear Option. Wipe and Start Over.

Approach 2: Copy the Hidden/System Boot Manager and Boot Folder over to the C: drive and run a tool called BCDEdit to move things around in 12 short steps. ;)

This was a scary prospect for me, because from my point of view, while this was a fairly advanced operation, I just wanted to switch where the boot info comes from.

Turns out there is a new (profoundly advanced, you have been warned) command line tool called BCDBoot.

C:\windows\system32>bcdboot /?

Bcdboot - Bcd boot file creation and repair tool.

The bcdboot.exe command-line tool is used to copy critical boot files to the
system partition and to create a new system BCD store.

bcdboot <source> [/l <locale>] [/s <volume-letter>] [/v]
[/m [{OS Loader ID}]]

source Specifies the location of the windows system root.

/l Specifies an optional locale parameter to use when
initializing the BCD store. The default is US English.

/s Specifies an optional volume letter parameter to designate
the target system partition where boot environment files are

copied. The default is the system partition identified by
the firmware.

/v Enables verbose mode.

/m If an OS loader GUID is provided, this option merges the
given loader object with the system template to produce a
bootable entry. Otherwise, only global objects are merged.


Examples: bcdboot c:\windows /l en-us
bcdboot c:\windows /s h:
bcdboot c:\windows /m {d58d10c6-df53-11dc-878f-00064f4f4e08}

This means that I could type this from an Administrator Command Prompt:

bcdboot c:\windows /s c:

And BCDBoot would basically re-gen the BCD stuff I needed on the C: drive given what it knows about the C:\Windows install.

I ran it, and rebooted. I immediately went into the BIOS and changed the Boot Order so that my 300 GIG C: faster drive (the one I thought I was booting off of all the time) was my startup drive.

Now, Disk Management shows that C:\ is both System and Boot and all is right with the world.

image

More subtle awesomeness from Windows 7.



Page 1 of 101 in the Musings category Next Page

Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<July 2009>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Archives

July, 2009 (4)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads