You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Wednesday, Aug 30, 2006, 7:50 AM in Tools
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:
- Top 10 (+ 5) Life/Working-Changing Utilities
- A Developer's Life
- COM is Dead [ed: if only]
- XML/HTML Stuff
- Regular Expressions
- Launchers
- Stuff Scott Digs
- Low-Level Utilities
- Websites/Bookmarklets
- Tools for Bloggers
- Smart People's Utility Pages
- Alt.Lang
- Browser Add-Ins
- Things Windows Forgot
- Outlook Add-Ins and Life Organizers
- Ultimate Registry Tweaks
- Windows Explorer Integration (and other integratey things)
- Continuous Integration
- TablePC Indispensables
- ASP.NET Must Haves
- Visual Studio Add-Ins
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.
Sunday, Jul 30, 2006, 2:06 PM in Tools
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.
Sunday, Jul 30, 2006, 12:00 AM in Tools
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.
Sunday, Jul 30, 2006, 12:00 AM in Tools
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.
Saturday, Jul 29, 2006, 12:52 AM in Tools
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.
Tuesday, Jul 11, 2006, 3:36 PM in Tools
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:
- All "variables" are immutable, often called "symbols"
- Program state is kept in functions (specifically, arguments passed on the stack to functions), not variables
- Functions are first class citizens, i.e. functions can be passed as arguments
- "currying" is a convenience syntax for adapting a function to an alternate function signature
- "closures" are functions that are allowed mutable state and access to state outside their lexical scope to bridge functional and non-functional languages
Implications:
- Functions cannot cause side effects ("variables" are immutable)
- FP is great for unit testing (only have to test outputs against inputs -- don't have to test side effects)
- FP is great for debugging (no need to worry about external state affecting function results -- results are only based on the input)
- No need for multi-threaded locks, as state is immutable
- This makes functional programs automatically parallelizeable
- Can hot swap new function definitions w/o effecting existing instances
- Don't need to evaluate a function 'til the results are needed
FP sounds great! Why do we mess around w/ anything else?!?
Wednesday, Jul 5, 2006, 4:47 PM in Tools
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.
Monday, Jun 12, 2006, 2:02 PM in Tools
"man" for MSDN
If you like man, you'll love MSDN man. Enjoy.
Friday, Jun 9, 2006, 4:20 PM in Tools
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!
Friday, Jun 9, 2006, 4:17 PM in Tools
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!
Monday, Jun 5, 2006, 12:49 PM in Tools
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: |
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
Thursday, Apr 20, 2006, 5:37 PM in Tools
Visual Studio Express Editions Free4Ever
Top-notch tools at rock-bottom prices. Enjoy.
Wednesday, Mar 29, 2006, 11:27 AM in Tools
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…
Wednesday, Mar 29, 2006, 6:59 AM in Tools
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:
- Dynamic Custom Button Control
- Data Interchange List Boxes
- File List Control
- Folder List Control
- Multi-Direction Progress bar
- Help Popup Control
- IP Address Control
- PictureBox Button Control
- TimeOut MessageBox Control
- Calendar Combo
Sunday, Mar 26, 2006, 1:52 PM in Tools
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.