Marquee de Sells: Chris's insight outlet for category 'tools' via OData 2.0 Marquee de Sells: Chris's insight outlet for category 'tools' via ATOM 1.0 csells on twitter

You've reached the internet home of Chris Sells, Developer Tools at Telerik. This site is targeted at the Windows developer. Enjoy.




Window Clippings 1.5

Capturing screenshots for a book used to be a piece of cake. Alt+PrintScreent and you were golden. However, sometimes I wanted to get the cursor, too, and neither Alt+PrintScreen nor PrintScreen does that, so I got myself a copy of SnagIt. Unfortunately, if I wanted to capture multiple screens, I was putting a maximized copy of Notepad in the backgrand, using PrintScreen and PBrush to do the cropping (although SnagIt has slightly more seamless multi-window selection).

Still, this all worked 'til Vista came along and Alt+PrintScreen left the shadows out! I was fine with that, but Ian correctly pointed out that the screenshots with the shadows looks *so* much better that I could hardly say "no." And I discovered the Snipping Tool in Vista, which let me do a selection on any part of the screen I wanted to, except that now instead of just doing Alt+PrintScreen, even for a single window, now everything is a selection, which means that somebody (hopefully not me!) has to trim the extra whitespace to make sure the pictures layout OK in the book.

I told you all of that so you could know that I envy folks that don't have to do screenshots! It's hard to make it look right, although, for visual technologies, I really can't imagine not having them. Anyway, I was definately open to another screen capturing technology and that's when someone turned me on to Windows Clippings.

When I found Kenny Kerr's most excellent screen capture tool, it was so close to what I wanted (it did Vista shadows with no guesswork!), that I sent Kenny an email with my feature request (easy child+parent capturing support), fully expecting not to hear back (it's clear from his web site that he's a busy guy!). Not only did he reply, but he'd implemented my feature!

And it was such a time-saver, that I forwarded it along to Ian, who had his own feature request (keeping the transparency in the captured image w/o grabbing the stuff underneath), which Kenny promptly implemented (with some example code from Ian). Of course, that broke my feature (the constant animation of WPF apps + capturing transparency caused problems), so Kenny fixed that, too. By this point, Kenny's app itself was notifying me of updates faster than he could send the emails.

All of this is merely to say, I'm really loving my Windows Clippings experience. Thanks, Kenny!

7 comments




CodeFetch: Search Book Source Code

CodeFetch allows you to search in the source code associated with books (like the code I publish for my books). Plus, it lets you choose the language to search on and shows the book the results come from so you can read your favorites. Very cool.

4 comments




Point: Local Live Maps

When it comes to Web 2.0 apps, online maps are easily the thing I use the most. I don't go anywhere these days w/o first pulling up the map on MapQuest, Google maps or, for a coupla years now, local.live.com (starting back when it used to be called MapPoint). I generally use Google for my search engine, so don't think it's just the MS employee thing pushing me -- I genuinely like local.live.com better.

Google and MS have been in an arms race for years on the maps stuff, doing fancy stuff like 3D globes and other goo that looks good in demos, but that I don't need. However, in this war of the world (so to speak : ), today MS fired a decisive shot across the bow, I think -- the "Send" menu. This is huge for me, because I can send the directions to my phone, either via SMS or via email, and I get a great display clearly optimized for my smartphone. Not only does it have a great mini-map, but the directions are easy to read (saving me from printing the directions for just a single trip) and it has a link to reverse the directions (the one thing I never remember to do).

Oh sure, I can do the same thing with the Google maps "Email" menu, but when I follow the link on my phone, there's no map (although there is a handy link to reverse the directions). Also, the directions don't read as well and I swear it's faster to surf to the local.live.com directions (although this might just be the MS bias talkin' : ).

On the other hand, I just noticed that Google maps has a new "Add destination" link for multi-destination trips, which is the only thing I use AAA online TripTiks for and you have to be a member to access the feature (I am, but still it's kinda clunky...). Hey, local.live.com guys -- can I have that, too?!?

P.S. I think I've scared the most reactionary, close-minded folks away, so I think I'll cool it on the postscripts for a while ('til I feel like it again : ). BTW, my definition of "close-minded" is "those who don't think I have the right to express my opinion," not "those who disagree w/ me." Hopefully I managed to shake the former off my RSS feed while keeping the latter.

9 comments




VS2005 SP1

"Through further advancement and feedback, Service Pack 1 ... provides over 70 improvements for common development scenarios including:

For more information, see the Microsoft Download Center:

At the time of this posting, VS05SP1 update for Vista download wasn't available, but it should be directly.

P.S. I hope everyone is enjoying the holiday season with peace, love and understanding.

7 comments




XNA Game Studio Express Has Been Released!

Oh, man, I *so* want to write a game that runs on my Xbox 360! Now I can (and so can you). Enjoy!

P.S. Impeach!

3 comments




If it can be installed, Scott's installed it

and if it's any good, we hear about it. Really, I'm just posting this link to Scott Hanselman's 2006 Ultimate Developer and Power Users Tool List for Windows here so I can find it later, but feel free to browse the list yourself, broken up into several interesting categories:

Notice how just his list of categories is longer than most people's lists? Scott's a gem. Guaranteed you'll find something that makes your life better.

1 comment




Number to String Converter

To capture the work that Doug and I did to make Indigo (WCF) and Avalon (WPF) work together, I tore up our PDC sample application into a set of simpler technology samples. To make it fun for myself, as part of these samples, I built a little library for converting numbers into strings of English words, e.g.

Enjoy.

10 comments




RegistrySettingsProvider2

I updated the SDK RegistrySettingsProvider to implement IApplicationSettings and built a sample to demonstrate how to integrate it (or any .NET 2.0 custom settings provider) with the settings designer-generated code. Enjoy.

Discuss

0 comments




Number To String Converter

To capture the work that Doug and I did to make Indigo (WCF) and Avalon (WPF) work together, I tore up our PDC sample application into a set of simpler technology samples. To make it fun for myself, as part of these samples, I built a little library for converting numbers into strings of English words, e.g. 4 is "four:"

To drive home the point (of which there wasn't any because the sample had nothing whatever to do with number to English phrase conversions), I spent some time polishing the algorithm so that it handled decimal points:

and when that didn't satisfy me, I added large numbers and negative numbers:

Before writing this code, I searched the net and didn't find any algorithms that handled both negative numbers and decimal points, let alone for .NET or in the number of lines of code to which I cut it down (93, including comments). I know it's not useful, but it was fun. If you want the code, you can get it by downloading the .NET 3.0 Cross Technology samples and checking out the WinSDK_Samples\CrossTechnology\WpfDataBindingToWcfResults\service\NumberUtility.cs file. I built the file to be dropped into any .NET 2.0+ project (and even .NET 1.x projects, if you remove the "using System.Collections.Generic" statement at the top of the file -- I don't actually use generics), regardless of whether you're using Avalon or Indigo or not.

Enjoy.

Discuss

0 comments




MS Live Labs PhotoSynth: building the photo web

Imagine your vacation photos displayed in 3D and linked together, both around a space and zooming in and out. Now imagine everyone's photos linked together in this way. What you get is PhotoSynth:

Worth checking out.

0 comments




Functional Language Summary

I've been hearing a lot about functional programming lately (and the circle of life continues); I found Functional Programming For The Rest of Us to be a nice summary. Here's what I got from it:

Atoms of FP:

Implications:

FP sounds great! Why do we mess around w/ anything else?!?

10 comments




A Shared Source Site: CodePlex

"CodePlex functionality, built on Microsoft Visual Studio® 2005 Team Foundation Server, provides source control, issue tracking, discussion forums and RSS feeds in and out of each project so that members can stay up to date on the development issues most important to them. Microsoft Visual Studio Team Foundation Server enables developers to collaboratively develop, share, discuss and consume source code and build software."

Enjoy.

5 comments




"man" for MSDN

If you like man, you'll love MSDN man. Enjoy.

2 comments




Annotate the MSDN Wiki

For a long time, my favorite place to put up code snippets that I could get back to later has been pinvoke.net (like GetTempFileName). However, that was only good for managed/native interop, whereas the MSDN Wiki is for anything in the docs. I don't know what their commitment is to keeping content over time or between versions, but I've got my fingers crossed. Enjoy!

6 comments




Advanced MSDN Search

MSDN has a new search UI which includes And, Or, Exclude, Group, Exact Phrase and Preference in the query and then narrowing by source or category in the results, e.g. MSDN or MFC Reference. The ability to exclude CE in the search results is worth the price of admission. Check it out!

0 comments




Web Application Project: "The type 'foo' exists in both 'some dll' and 'another dll'"

In using the most excellent Web Application Project support for ASP.NET 2.0 in VS05 from Mr. Guthrie and co, I ran into what was first an intermittent and then a constant problem that actually made it's way onto my live site (it worked on my machine!). The error looked like this against several classes in my app, i.e. when I'd comment out one, I'd get another class that showed the same problem:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0433: The type 'ASP.clientredirector_ascx' exists in both 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\sb2\4d76034e\bec2c8d0\App_Web_clientredirector.ascx.cdcab7d2.zmdrab5k.dll' and 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\sb2\4d76034e\bec2c8d0\App_Web_axhgbqrn.dll'

Source Error:

Line 11: 
Line 12: <!-- client redirector -->
Line 13: <sb:ClientRedirector runat="server" id="ClientRedirector" />
Line 14:
Line 15: <!-- fragment monitor -->

Source File: d:\project\mine\sb2\pageLayout.ascx    Line: 13

I chased this with my ISP a few days ago, but futzing with it made it go away mysteriously. When it came back, it came back with a vengeance and I pulled in every ASP.NET 2.0 resource I could think of to fix it, including sending ScottGu the FTP user name and password to sellsbrothers.com (my site hasn't fit into a reasonable .zip file for a while now : ).

The thing I did that fixed the problem (seemingly consistently), came from Scott himself; I added the batch="false" attribute to my compilation element in my web.config file:

<configuration ...>
  <system.web>
   
<compilation ... batch="false"/>
      ...

Apparently this ends up generating a lot more assemblies than 'batch="true"', but I don't know why that would fix the problem or even what's causing the problem. This never happens in WinForms or Avalon (and, of course, neither of those technologies have issues of their own... : ).

Thanks Scott, Ting-Hao, Simon and David!

Update: Microsoft has updated the Knowledge Base with this issue

17 comments




Visual Studio Express Editions Free4Ever

Top-notch tools at rock-bottom prices. Enjoy.

0 comments




Tell me about your troubles and woes configuring, deploying and maintaining distributed .NET apps

Believe it or not, Microsoft is always trying to improve its products and to do so, I find we do our best work when we actually ask our potential customers what they think.

In this case, I’d like to know what “pain points” you experience when configuring, deploying and maintaining distributed .NET applications. That can be any kind of app, whether it’s a client-side app that phones home for code or data updates or whether it’s a fully distributed grid or anything in between. Please be as specific as possible and, if you’d like one of our courteous technical people to follow-up, make sure to include contact info.

Use this as an opportunity to vent – don’t hold back. Remember: the life you save may be your own…

50 comments




Gengis for .NET 2.0

Genghis has been updated for .NET 2.0 and is available from the Genghis workspace. Enjoy.

Update: The following controls have been added to Genghis in the .NET 2.0 version:

6 comments




I'm with Scott -- I Love Monad

I fell in love w/ the potential of monad a while ago w/ Jeffrey Snover's original Channel9 video, but I was too lazy to download it onto all of my machines. However, after seeing Jeffrey's talk at TechDays 2006 in Switzerland (and remembering that monad is installed by default w/ the WinFX SDK, so it was already on all my machines), I took the dive (starting with kiping Jeffrey's personal copy of "Monad," from ORA, Andy Oakley's most excellent monad intro) and I've been doing it pretty much non-stop on the train and on the plane all the way home. Like Scott, I'm loving it.

I've built several scripts, including start-process (to act like cmd.exe's "start" command -- invoke-item doesn't work on URLs), find-file, find-filebytext, find-dir and format-notepad. So far, no luck on format-clipboard, i.e. dropping the results of an operation into the clipboard, but I'm having a blast trying.

Monad is the command line I've missed so much from my ex-life under Unix. Give it a try! You'll love it.

3 comments




ClickOnce + FireFox

If you're having trouble with ClickOnce while using FireFox as your default browser, then this post is for you. Thanks, Saurabh!

0 comments




Hello from ASP.NET 2.0

I ported sellsbrothers.com to ASP.NET 2.0 a while ago, but I wasn't happy with the experience, so I didn't pull the trigger on moving it to a production environment. I'm glad I waited. I ported the site again last night using the VS05 Web Application Project preview and it worked a treat. Recommended.

5 comments




Network bandwidth usage monitor?

Sometimes, for no reason I can discern, the network bandwidth on various computers in my house goes south. What I'd love is a tool that shows me how much traffic is going across my network, where it's going and where it's from, i.e. from the internet, from a machine in my house, etc. Ideally, it'd also show me the ports and even the processes on each machine that are producing/consuming the data. Does such a tool exist?

21 comments




Calling a Remote Index Server from .NET

I was building some code to access Index Server's results via .NET and I got this:

// Catalog specified in connection string
string query = "select Path from Scope() where FREETEXT('foo')";
using( OleDbConnection conn = new OleDbConnection("Provider=MSIDXS.1;Data Source=MyCatalog") ) {
  conn.Open();
  OleDbDataAdapter cmd = new OleDbDataAdapter(query, conn);
  DataSet ds = new DataSet();
  cmd.Fill(ds, "SearchResults");
  DataTable table = ds.Tables[0];
  ds.Tables.Remove(table);
  return table;
}

This came from a combo of stuff I found on the net and my own experimenting. However, I had to get an MS employee who know IS (thanks Chad Ray!) to figure out how to access IS remotely, which I was finally able to get working thusly:

// Server and catalog specified in query string, not connection string
string query = "select Path from MyServer.MyCatalog..Scope() where FREETEXT('foo')";
using( OleDbConnection conn = new OleDbConnection("Provider=MSIDXS.1") ) {
  conn.Open();
  OleDbDataAdapter cmd = new OleDbDataAdapter(query, conn);
  DataSet ds = new DataSet();
  cmd.Fill(ds, "SearchResults");
  DataTable table = ds.Tables[0];
  ds.Tables.Remove(table);
  return table;
}

Also, if the server or catalog name has anything "weird" in it, e.g. those wacky dashes, you're supposed to wrap it in double quotes. My experimenting showed that wrapping any server or catalog name in double quotes worked just fine, e.g.

string query = "select Path from \"MyServer\".\"MyCatalog\"..Scope() where FREETEXT('foo')";

However, if the server name is "localhost" or "127.0.0.1", IS doesn't like it, which meant that I had to check for those server names and drop the ones that used the loopback adapter (although using the machine name of the local machine worked just fine), e.g.

static bool IsLocalHost(string server) {
  return string.IsNullOrEmpty(server) || (string.Compare(server, "localhost", true) == 0) || (string.Compare(server, "127.0.0.1") == 0);
}

string GetPlainTextQueryString(string text, string columns) {
  // IS doesn't like "localhost"
  if( IsLocalHost(_server) ) {
    return string.Format("select {0} from \"{1}\"..Scope() where FREETEXT('{2}')", columns, _catalog, text);
  }
  else {
    return string.Format("select {0} from \"{1}\".\"{2}\"..Scope() where FREETEXT('{3}')", columns, _server, _catalog, text);
  }
}

I'm only posting this 'cuz I couldn't find it on the net and I want to be able to find it again later. : )

7 comments




.NET 2.0 Breaks NTD

Charles Sterling, Developer Evangelist, points out a problem with .NET 2.0 and No-Touch Deployment applications over the internet (where "problem" = "breaks completely").

0 comments




185 older posts       25 newer posts

Powered By ASP.NET

Hosted by SecureWebs

Mensa

IEEE