Thursday, March 16, 2006

Post2Blog and Blogger Fun... (The Quest of the Line Feed)

In my quest for a new blog client, Jon recommend I try Post2Blog...

I’ve been using it for a couple weeks now and really like it. It does what I want, how I want it done and with no major problems. This just might be the blog client I’ve been looking for. But I’ve just run into one issue with using it with Blogger.

Blogger has a feature to automatically convert line feeds into breaks <br>. For the longest time, I left that on because I was using clients where that feature made sense (like Blogger’s BlogThis...). Well when posting from Post2Blog, I was getting extra breaks... breaks for breaks and for the line feeds. So I turned off that feature.

That was...um... bad. The problem is that I didn’t know that feature was live. I thought the break insert was done at post time and was permanent. Nope. It’s done at publish time. So each time a post is published (like when someone comments on a post, or the blog is republished, etc) the line feeds were converted to breaks (or not converted with the feature off).

This resulted in some VERY ugly past posts.

So I’ve turned the "line feed to break" feature back on. This means older posts will again look good, but my more recent posts (for the last 15 days or so) will have extra breaks.

The good news is that I think I’ve found a Post2Blog work around to strip out the extra line feeds prior to posting. Click on the "HTML Code" tab, "Post Editor" tab and then back on "HTML Code" tab. Now all the extra line feeds are gone. Yeah!

Now I have to test that (with this post) and also remember that process going forward. Also if I stick with this client and buy it (which I’m leaning toward) I’ll have to post a "strip line feeds on post" suggestion on their site...

Related Past Post XRef:
Testing a New Blog Post Client (PowerBlog)
New Blogger "Blog This"

Technorati Tags: , ,

Dock Panel Suite - Public Domain VS Like Docking Component Written in C#

SourceForge.Net - DockPanel Suite

"The docking library for .Net Windows Forms development which mimics Visual Studio .Net."


dbimage



The Dock Panel Suite is a Public Domain/OSS C# project that appears to provide a fairly complete docking implementation.



It is provided as both VS2003 and VS2005 projects and binaries. The VS2005 project component and DemoUI both build with no problems. It’s an active project with the 1.0.0.0 being released on 2/12/1006.



Make sure you grab the Doc’s, which are in a sperate download. These are great, commercial quality, documents...



(via del.icio.us/.Net  - del.icio.us/tarasn/.Net)


Technorati Tags: , , ,

Wednesday, March 15, 2006

Testing Story I Found Funny...

Testing the Guiding Edge - thougths about 6 sigma - old story



"... Since we were the engineers actually writing and downloading the code for the aircrafts (B1 and B2).

 

I was young kid out of college - so I was one of the developers. 

 

But my experience with 6-sigma was a look bit more personal at that time.  My boss was working 70-80 hours a week going back and forth through the test and analysis.   We were out at Edwards Air force base

 

His quote to me one late night as I was questioning about these analysis. Hey the code work - right let’s do it. :)

 

That’s when I found out he had to actually fly with the pilot in the aircraft to monitor various system.  And said if it crashed - I was the next up for flying on the next prototype aircraft.  Brought it kind of home."

 

Put a Developer in the shoes of his/her User and it’s funny how quickly things can be fixed or made to work right. (Been there, done that)



I’m a strong believer that a developer must understand and "know the pain" of his/her app’s users. This post kind of takes that concept to the extreme...

SecurePasswordTextBox - A SecureString TextBox

Glavs Blog - SecurePasswordTextBox update

"Since there has been so much interest in the SecurePasswordTextBox control (see my previous post here and here ), I thought I would take the time to iron out the bugs...
 
...

All is now well. Go grab it from
herehttp://www.theglavs.com/DownloadItem.aspx?FileID=46

For those unaware, its a Windows Forms TextBox control that uses the .Net V2 SecureString class to store its contents. Basically, you now have a UI control that allows directly entry into this secure string class and makes it useable from a windows UI perspective. (See my
previous post for a full explanation.) "

This is pretty cool. I want to play with SecureString in the context of a textbox so the timing on this is great...



(via Dan Sellers’s WebLog - Ops!!! SecurePasswordTextBox Update now Available)



Technorati Tags: , , ,

Tuesday, March 14, 2006

S3 from Amazon - Storage on the cheap.

Amazon Web Services Blog - Amazon S3

"Earlier today we rolled out Amazon S3, our reliable, highly scalable, low-latency data storage service.

Using SOAP and REST interfaces, developers can easily store any number of blocks of data in S3. Eack block can be up to 5 GB in length, and is associated with a user-defined key and additional key/value metadata pairs. Further, each block is protected by an ACL (Access Control List) allowing the developer to keep the data private, share it for reading, or share it for reading and writing, as desired.

The system was designed to provide a data availability factor of 99.99%; all data is transparently stored in multiple locations.

S3 is a very cost-effective data storage solution. Using S3’s economical pay-as-you-go model, storing 1 GB of data for 1 month costs just 15 cents. Transferring data in and out of the system costs 20 cents per GB..."


Interesting. Very interesting. And I like the price. It sounds to cheap to not play with it, yet it’s not free (which would worry me about its long term viability). The post doesn’t mention that you pay only for what you use and there’s no minimum fee and no start-up cost... Like I said, almost too cheap to NOT play with it.



If you already have a credit card setup on Amazon, you can use that to pay. Not sure how much easier signing up could be.



There are a number of S3 samples already, from C# (SOAP and REST), PERL, Ruby, Java to Python...



I think Google needs to worry more about Amazon than it does Microsoft...

Sunday, March 12, 2006

VS2005 Bootstrapper SDK Released

Chris Smith’s completely unique view - Bootstrapper SDK Released!

"... The big news however, is that I have finally uploaded the first edition of the Visual Studio 2005 Generic Bootstrapper SDK! In it you will find some tools, files, and documentation to help you in creating custom packages.

Unfortunately with the team change I haven’t been able to make it is as grand as I once envisioned, but it should definitely be a good resource to anyone new to creating custom Bootstrapper packages. If you have any feedback or requests for additions to the next Bootstrapper SDK release please use that contact link and let me know!

The SDK is distributed under a Shared Source license ..."




If you’re doing ClickOnce deployment, then you may need to create your own bootstrapper one day. This SDK provides few tools and information to help you with this.



The included whitepaper is well worth the price of admission (which while a free download, the time spent downloading and reading it isn’t...)



"Authoring a Custom Bootstrapper Package


Brief Introduction to the Bootstrapper


The Visual Studio 2005 Bootstrapper is a technology which allows you to create an integrated setup experience for application prerequisites and ClickOnce or Windows Installer installations.With the Bootstrapper you do not have to worry whether or not end users have components like MDAC or the .Net Framework 2.0 installed on their machines -- simply indicate which prerequisites your application depends on and the Bootstrapper will take care of installing them along with the application itself.


Visual Studio 2005 includes out-of-the-box the capability to install several common prerequisites using the Bootstrapper, including .NET Framework 2.0, SQL Server Express 1.0, and others. The Bootstrapper is completely extensible, so it can be configured to install just about any redistributable. As a redistributable owner, providing a means for the developers to seamlessly install your package with their application using the Bootstrapper promotes penetration of your redistributable, and simplifies servicing by providing an alternative to privately deploying assemblies in the redistributable.


This whitepaper will show how to integrate a custom application prerequisite with the Bootstrapper. This will allow other developers to deploy the prerequisite along with their applications.



..."



BTW, I was having a brain cramp and for the life of me I couldn’t find the download link for the SDK. Incase you have the same problem, instead of being an inline/context link, it’s at the end of the post. (On an "Attachment" line... funny that :)



Technorati Tags: , , ,

May the Force...

Tales from the Road: A Traffic Cop’s Stories - March 8th, 2006



"So, I pull over this guy for running a stop sign, and his license plate is a vanity plate that pretty much says "Jedi In Training." So, I get up there and ask for a driver’s license and proof of insurance, and he gives me the license, and starts looking for his insurance. So, I ask him, "So, you are a Jedi in training, huh?"

He comes back with "Yep, and you don’t have to see my identification" and waves his hand like in the Star Wars movie.

I figured that took some guts to do that to a cop, so I let him go with a warning."




This made my son and I laugh, so I had to share it...

Hiding the SharePoint QuickLaunch Bar in 6 Lines of code...

Todd Bleeker’s 60 Hive - Hide the Quick Launch Bar

"Continuing with the Content Editor Web Part (CEWP) series (http://MindsharpBlogs.com/Todd/articles/793.aspx).

When people ask me how to alter various elements of a Web Part Page; one common request is to hide the Quick Launch bar in a Windows SharePoint Services (WSS) Team Site. Fortunately, the code to do this can be readily understood by those with limited CSS and JavaScript experience (Step By Step instructions will be given near the end of this post) so it is a great place to begin discussion about the capabilities of the CEWP.

Import the StyleUnderCursor.dwp CEWP from my previous post onto the Home page of a Team Site and place your mouse over the top of the Quick Launch and you will see that there are three CSS classes consistently used ms-main, ms-nav, and ms-navframe to define the style of the Quick Launch
...
To hide the Quick Launch, download and import my HideQuickLaunch.dwp or paste the following code into the property builder that pops up when the Source Editor... button of your new CEWP is clicked; then click the Save button.
...
Imagine, your end user being able to dray and drop a no-server touch Web Part called Hide Quick Launch Bar from a Web Part Gallery on any Team Site (or custom Site Definition with a Quick Launch Bar equivalent) and the Quick Launch Bar simply disappears. They think you are a genius, but a half-dozen lines of code exported into a CEWP DWP is all it took. [Emphasis added]..."

I was reminded of this cool "Hide the Quick Launch" hack today when reading Todd’s "Guidelines to Centralize SharePoint Style/Script Customizations" post this morning.

What makes this so cool, is that by using the Content Editor WebPart (CEWP) you can tweak the entire web page. I’ve always thought of the CEWP as a "container" part. A place to embed other web pages, flash or to add rich text to my web pages, etc. I’ve never thought of it as a control/script insertion point to tweak the entire page.

This was a "lightbulb over the head" moment. It opens up a whole new area of thought for me...

You don’t need admin access to the site/page, just the ability to add a single webpart (such as like via the "My Page" functionality). No need to touch the server, no need for any tool beyond a web browser, no need to install anything... That’s just cool.

One tip to remember when using this trick, put the CEWP "Hide Quick Launch" webpart at the bottom of the page. Putting it above the other webparts on the page will hide them too (which is bad...  ;)

Technorati Tags: , , ,

Friday, March 10, 2006

Video of Chief Justice Roberts' Speech at the Ronald Reagan Presidential Library

Right Side of the Rainbow - Video of remarks by the Chief Justice

"Here’s the video of remarks made Wednesday by the Chief Justice of the United States at the Reagan Library in Simi Valley. It was his first public address since confirmation.

Because of the nature of the forum, we did not learn during his hearings before the Senate Judiciary Committee what we know now: John Roberts is funny.

(Thanks to
Howard Bashman.)"


Chief Justice Roberts IS pretty funny.



This is a pretty good speech (41 minutes)... And being given at the Ronald Reagan Presidential Library here in Simi Valley makes is even more memorable, for me at least.



Technorati Tags: ,

Auto Increment Visual Studio 2005 Version Build and Revision via MSBuild Task





"Introduction
In Visual Studio 2005, the version numbers don’t auto increment when you build your project. Annoying? I think so. So I set out to find a way to do it. I did find some sample bits of code on the net that said it would do it, and while they did work to a point, they didn’t work well, or at all.


So, I set out to write my own using what I learned from the tutorials.

 

..."



Very cool. I do miss the auto incrementing build numbers from VB6.



I believe I understand why VS2005 doesn’t have the feature (each time to run the app it compiles, so your build number could increment much faster than you might expect, is my guess... i.e. a very different run/debug/compile process than VB6). Still that doesn’t mean I don’t want the feature...



Changing the build number in VS2005 is easier than VS2002/3 (though it’s not really hard there either), but incrementing my build numbers is very minor step that I’d rather not have to worry about. It’s a brainless, no decision process that is prefect for automation.



Hence my interest in this VB8 project. This post is not perfect for my purposes, but it takes me about 90-95% there (I don’t want my revision number incremented and the setup could be more automated. With some very minor updates, strong naming/GAC’ing it, then updating my project templates might just do the trick? Or maybe use Guidance Automation Toolkit [GAT]? Don’t know, but that’s what makes development so much fun...)



Source downloaded and added to my personal project list... ;)



Technorati Tags: , , , ,

Thursday, March 09, 2006

32Feet.NET - Bluetooth, Infrared (IrDA) and more from .NET...

32Feet.NET

"32feet.NET is project to make personal area networking technologies such as Bluetooth, Infrared (IrDA) and more, easily accessible from .NET code. Supports desktop, mobile or embedded systems. The project currently consists of the following libraries:-


  • Bluetooth

  • IrDA

  • ObjectExchange

Bluetooth support requires a device with the Microsoft Bluetooth stack. Requires .NET Compact Framework v1.0 or above and Windows CE.NET 4.2 or above, or .NET Framework v1.1 for desktop Windows XP."



I would like to get a Bluetooth Windows Moble phone this decade, where this might come in handy. Why a Windows Moble phone? So I can easily code for it, of course! ;)

I dig the thought of creating easily connected apps to automatically sync and coordinate my data and device usage...

(via del.icio.us/tag/.Net - del.icio.us/quickie/.Net)


Technorati Tags: , ,

Wednesday, March 08, 2006

Windows Live Toolbar Beta Released...

Windows Live™ Toolbar beta



"What it is


A super-useful tool that helps you find stuff on the Internet faster and more securely.

 

What it lets you do

• Search from any Web page

• See a warning when a site may be trying to scam your personal info

• Cut down on unwanted pop-ups

• Collect, organize and share the info you find online

• Auto-detect a site’s RSS feeds, and have them automatically sent to your personalized Live.com home page

• Effortlessly customize your toolbar with only the buttons you want

• Access your favorites from any PC

• Quickly switch between Web pages in the same window

• Fill in Web forms instantly "

 

The new Windows Live Toolbar (which includes Onfolio) is now available for download... 

 

I have to wonder when a vendor/publisher/etc describes their product as "super-useful". Still it’s installed and seems to be working (and no reboot required.. Yeah!).

 

It kind of looks like then next version of the MSN toolbar (which makes sense) with bunches of new stuff. I dig how easy it seems to be to install and uninstall features (which it gets from the add-in capability from the MSN toolbar codebase?)

 

I’ll be playing with it (and Onfolio) for a bit and we’ll see...


Previous Post XRef:



Technorati Tags: ,

"Microsoft Enhances Windows Live Toolbar Capabilities With Acquisition of Onfolio"


Microsoft Enhances Windows Live Toolbar Capabilities With Acquisition of Onfolio



"SAN DIEGO - March 7, 2006 - Today at the O’Reilly Emerging Technology Conference, Microsoft Corp. announced the acquisition of the assets of Onfolio Inc., a privately held, Cambridge, Mass.-based Internet research and information management provider. Onfolio’s technology has been incorporated into the Windows Live™ Toolbar to enhance the way people discover, save and reuse their personal and professional Web research. The new Onfolio Add-in for the Windows Live Toolbar beta will give people convenient ways to collect information online and organize it on their PCs. People can harness this information by saving it onto their computer so that it can be easily accessed for use in documents, e-mail messages and blog postings. In addition, new online information is easily discovered and accessed through Onfolio’s integrated Really Simple Syndication (RSS) aggregator and reader. The Windows Live Toolbar beta with the Onfolio Add-in is available now and can be downloaded at http://ideas.live.com.

 

..."

 

Damn you MS. Would you stop buying cool products (like this, FolderShare, LookOut, etc) and then releasing them for free, forcing me to then play with them?



;-)



(via ActiveWin - Microsoft Enhances Windows Live Toolbar Capabilities With Acquisition of Onfolio)



Technorati Tags:

You Have the POWER! (To help drive the future Visual Studio)

Rob Caron - Influence the Future of Visual Studio and Get Free Stuff



"In a previous post (Team Foundation Server and the Future), I mentioned that our product team was asking for your input on what we should consider for Team System in the future. There’s also an official program called the “Engineer-to-Engineer Connection Program.” This program requires a larger time commitment on your part, but it is not without its rewards. Here’s some more info on the program, its rewards, and how you can get more information:






You can actively influence and shape the next version of Microsoft Visual Studio!



To improve our next release, Microsoft wants to connect everyday users of Visual Studio 2005 with our internal engineers – Engineer-to-Engineer.  We’re looking for you to give us feedback on how to make the current product better.  If you use Visual Studio 2005 as part of your daily work, you are invited to participate in a one-time 1-4 hour survey, and then to join our Engineer-to-Engineer (E2E) Connection Program with opportunities to continue your participation beyond our initial survey.  Participation is totally voluntary and it’s up to you to decide your level of participation.  Participation ranges from our one-time survey to future direct-interaction with product teams in defining our product.



Each time you are selected (and are able) to participate in one of our E2E Connection Program activities, you can select a gratuity of your choice from our extensive library of titles.  Gratuities include several of our software packages ranging from Visual Studio Pro through Xbox games.



If you are interested and would like more information, please contact Andy (a-andy@microsoft.com). If you are a good match, we will ask you to complete our survey in March. We appreciate your consideration regarding participation in our E2E Connection Program."


 

Sounds pretty cool. I like the idea of giving people my opinions and getting free stuff for doing it ;)



Considering I pretty much live in Visual Studio, it seems like a no-brainer for me to try to help MS improve it, doesn’t it? Email sent...




WinForm Auto Layout UI Design Examples

Building Better Software - One Line At A Time - AutoLayout by Examples - Part 2

"A companion of this document is the actual source code of a Visual Studio solution (AutoLayoutByExamples.sln) that contains all sample projects and the driver program MainMenu. Download source.

 


It is highly recommended that the reader experiments with the individual project and examines the properties associated with the forms, the TableLayoutPanels and their children controls. Much of the “secrets” of auto-layout is in the designer and in the controls’ properties - too detailed and beyond the scope of this document.


..."


PermanentTan is running a very blog cool post series on WinForm design and automating control layouts. If you’re doing WinForm UI’s in VS2005, you should take a quick look at this blog and the recent postings.



Technorati Tags: ,

Tuesday, March 07, 2006

Explorer Shell Extension to Create and Delete NTFS Hard Link/Junction/Reparse Points

Link Shell Extension 

"The NTFS filesystem of NT4/W2K/WXP/WXP64 supports HardLink functionality, but HardLinks can only be created via the POSIX command ln, which is shipped with the Windows resourcekit. Even if with POSIX commands, HardLinks can only be created via the command prompt, which is a kind of a mess for many files.

The Link Shell Extension implements a extension to the Windows shell explorer, so that HardLinks, Junctions, and SymbolicLinks can be comfortably created via right mouse click on a selection of one or multiple files.

The Link Shell Extension is also available for WindowsXP64.

 
..."

Very nice. This and this, Junction Shell Extensions 1.1 Released (for the junction icon overlay), make for a powerful pair.

Does this shoot down the last excuse for not using hard links, junctions, reparse points, symbolic links, etc, etc?

(via SHELL EXTENSION CITY)

Technorati Tags: , , , , ,

Monday, March 06, 2006

Now THIS is a Hybrid...

Street-legal jet powered VW Beetle


street_legal_vw_powered_1



If I do something like this to my Honda Civic Hybrid, would that make it a Tribrid?  ;)

Sunday, March 05, 2006

"Animated Engines"

Animated Engines



"I have loved mechanical things since I was a kid.  Engines in particular have always intrigued me.  All my life I’ve pored over books, studying cutaway diagrams, hungry to understand how things worked.  These pages are an attempt to share that magic.



Some of the animations are rather large, so you may need to allow a few extra seconds while each page loads.  These pages use animated GIF files, so they require a fairly recent browser -- any but the oldest browsers will do.  If the main illustration at the top of each page isn’t moving, you’ll need to update your browser for the full effect.



I hope you enjoy  visiting my engine pages as much as I have enjoyed creating them"


352006otto



I was trying to describe how a four stroke engine worked to my son the other day... A picture really can be worth a thousand words (and a number of badly drawn images on napkins ;)



There are a number of other engine animations, along with a How To, if you’re interested in doing something like this yourself.



(via MAKE: - Animated Engines)

"Tagging emails in Outlook"

Tagging emails in Outlook



"It is a constant battle in my job to stay on top of my inbox. I was just about managing it with a conventional folder/sub-folder setup but when I was promoted before Christmas the volume increased dramatically and I quickly began to drown. Inspired by how effective tags are at sorting and organising stuff I decided to see if I could hack tagging into Outlook.



After some tweaking and playing around I hit upon the following technique. It is based in part around David Allen’s Getting Things Done methodology (which I also use).



This method works in both Outlook 2000 and Outlook 2003. The screen shots and instructions here are for Outlook 2003.
..."



Ever wanted to tag your emails in Outlook? Based on this post, categories may just be your ticket...



(via del.icio.us/tag/outlook - del.icio.us/redfury/outlook)



Technorati Tags: , , ,

Saturday, March 04, 2006

VM Optimizer 2.0

Size does matter

"Invirus sent me a note about a product they have to opimize virtual machine images. Finally got around to trying out the product and it’s pretty slick. It basically rips through your VMs and shrink them down without affecting the OS inside of them. VM Optimizer 2.0 will work with files from both VMWare and Virtual PC/Virtual Server vhd files (although in my test I tried shrinking an identical file of both types and for whatever reason, the Virtual PC file showed better compression).
 
What was useful for me was that I had a large (7GB) VM that I wanted to move to another external drive...I ran the optimizer and it shrunk it down to 3.3GB...

 

There’s a 30 day trial available which is a full version so you can try out all the features and see if it works for you..." 

Very interesting. Sounds like a great tool for those base/master VM’s that we keep around....



Technorati Tags: , , ,

Friday, March 03, 2006

Way Back Machine - 1992 Los Angeles riots

1992 Los Angeles riots


"...On March 3, 1991 African-American motorist Rodney King had been stopped in the Lake View Terrace district by Los Angeles police assisted by other law enforcement. King, who had a record of drunk driving and was believed to be under the influence of PCP, resisted arrest and was tasered, tackled, and beaten with nightsticks by four LAPD officers (three whites and one Hispanic). The incident was captured on video by a private citizen, and it became an international media sensation and a touchpoint for minority activists in Los Angeles and the United States. Eventually the Los Angeles district attorney charged the four with the use of excessive force in the beating. Due to the media coverage of the beating, the trial received a change of venue to a newly constructed courthouse in predominantly white Simi Valley, a Ventura County city. Contrary to popular belief, however, no Simi Valley residents served on the jury, which had been empaneled in Los Angeles County; the jury was, however, drawn from nearby San Fernando Valley. ..."

<vent>

Thank You!

Having lived in Simi Valley for 34 years, it’s always rather pissed me off to see how the city and its residents have had their characters assassinated due to the results of the Rodney King trial. From popular press to even a mention in a Law & Order episode, Simi has been bad mouthed for a decade and a half due to this trial.

AND NO ONE FROM SIMI VALLEY WAS EVEN ON THE JURY!!!

</vent>

Since we’re visiting the Way Back Machine today...

I was in the National Guard during the riots (after having spent 6 years in regular Army). And our unit was one of those called up to help restore order. Of course, by the time we hit the streets it had already run its course (Lets not get me started on that topic...).

I find it a little surreal that in my 11 years in the military, the closet I got to combat was protecting this grocery store and strip mall on the corner of W Imperial Highway and Crenshaw Blvd...

One of the things I remember most was how supportive the local residents were. All day and night it seemed like someone from the local neighborhood would come by to say "thanks" or offer our squad some coffee, donuts, home cooked cookies (oh, those were good...), etc. And of course the shop owners were overjoyed to have us there.

While the riots sucked in so many ways, over a decade later one of the things I remember most is how thankful and welcoming the people of the area were...

(via Social Nonsense & Odd News - THIS DAY IN HISTORY----Rodney King)


Technorati Tags: ,

"Managing Processes and Shell API Functionality using .NET"

Managing Processes and Shell API Functionality using .NET, Part 1

"Managing a process in older versions of Visual Basic was a tedious thing. In order to achieve results, you had to write a series of steps, a lengthy series of API calls which would help in getting information about the processes running on your system, in managing processes etc. With the advent of the .NET technology, this work became easier. In .NET, you have to import the System.Diagnostics namespace. This namespace allows you to interact with system processes, event logs, and performance counters.

This article gives you a brief introduction of how the Windows OS handles processes, methods, definitions, and also explains the way it reacts with .NET. A second article will show you how to work with the Process class, and get memory and thread information about running processes.

...
Introduction

This is the first article in a series of two. The purpose of this article is to provide an introduction to the basic concepts of processes, and to explore the Process class in .NET. The first part explores the basic explanation about the functionalities of a process in such a way that they could be useful for managing application processes on your computer, either in a local or remote machine. The next article will show the usage of processes, and their various functionalities used through the .NET technology. Also, it will show you how to develop a simple program that will use the Process class, memory, and thread information about the running processes. ..."



All to often I find myself trying to figure out where the information that MS shows us in their apps comes from and how I can get at it programmatically.



This is a cool CodeProject posting that does just that for Task Manager. It examines the Processes tab of Task Manager, talking about most its  information/columns and features.



Then it talks about how you can get that same information in .Net by using the System.Diagnostics and System.Diagnostics.Process namesspaces.



Nice... It helps me respond to questions like, "Can’t you just do XYZ if Task Manager says the app is..."



Technorati Tags: , , ,

Thursday, March 02, 2006

What was I just saying about Workflow != Rules? "Windows Workflow Foundation Rules Engine"

Introduction to the Windows Workflow Foundation Rules Engine

"Summary: This article provides an overview of the rules engine capabilities in Windows Workflow Foundation (WF). It describes how conditions and RuleSets are used in WF and discusses the behavior of collections of rules, including forward chaining and tracking and tracing.

Contents
Introduction
Overview of Rules in Windows Workflow Foundation
Rules Evaluation
Forward Chaining
Forward Chaining Control
Additional Modeling Discussion
Tracking and Tracing
Conclusion
For More Information

Introduction



With the availability of Windows Workflow Foundation (WF), Microsoft is introducing new rules capabilities to the WinFX developer platform. These capabilities extend from simple conditions that drive activity execution behavior all the way up to complex RuleSets executed by a full-featured forward chaining rules engine.

The rules capability allows for the declarative modeling of units of application logic within the scope of an overall business process. Sample scenarios for rules engine technology are order validation, pricing calculation, promotion enforcement, exception process management, and claims adjudication and management.

A key objective in developing this technology was to provide a truly integrated workflow and rules experience. Across the industry, rules and workflow have typically been quite distinct technologies, usually provided by different vendors. Third-party rules engines are often embedded or integrated by workflow and Business Process Management (BPM) providers, but the developer and administration experience is clearly not a seamless one.

With WF, Microsoft has been very focused on providing a seamless developer experience between workflow and rules modeling, so as to allow developers to easily incorporate rules at any point in their workflow. Developers are able to make the determination of whether to model their logic in the workflow model, rules, or code without having to worry about the integration implications of those decisions. This has been achieved, however, without sacrificing the ability to execute rules outside the scope of a workflow.

...

In addition to providing an approachable model, WF also provides a powerful evaluation engine to support complex rules scenarios, demanding forward chaining evaluation and precise evaluation control. This is delivered in a manner that provides a number of extensibility points, allowing developers to build on our platform and deliver rules capabilities in support of a wide spectrum of scenarios.

This document provides a technical introduction to the rules capabilities delivered in WF and an overview of the available features and their use. ..."


In my "Building a Rule Engine with SQL Server" post I said, "The thing I have to remember is that "Rules Engine != Workflow"... "

I guess I lied...

(via Paul Andrew - Introdution to the Windows Workflow Foundation Rules Engine)

Related Past Post XRef:
"Building a Rule Engine with SQL Server"

Technorati Tags: , , , ,

More on the Solution Build Framework (SBF) (MSBuild Tasks) From MS UK

MS UK’s Solution Build Framework (SBF) on GotDotNet


"...The Solutions Build Framework (SBF) is a set of tools and procedures that represents Microsoft Services UK’s best practice for developing and deploying enterprise applications.  SBF includes continuous integration build; automated multi box rig deployment; automated testing; automated documentation. Along with the binaries there’s some documentation on how to use SBF. We realise that this is a little thin on the ground at the moment, but we have plans to update the docs in the future.

At it’s heart lies a collection of MSBuild tasks that we’ve written to do pretty much everything that you might want to do during a build or deployment. This means that even if you decide not to follow the SBF way of doing builds, there are over 200 MSBuild tasks there for you to play with. Howard van Rooijen is has already listed them so I won’t bother doing it again.

SBF also includes our Deployment Framework. We use these tools to deploy to our rigs. They uninstall and install MSIs and allow us to have a single set of MSIs which can then be deployed to single box rigs, multi box rigs etc using XML files to define the differences between rigs.

..."

A few more details related to my post yesterday about the cool MSBuild task framework, SBF, released by MS UK.

Related Post Post XRef:
MS SDC.Tasks, a MSBUILD tasks library with over a hundred new tasks...

Technorati Tags: , ,

Class to Help Manually Update Your ClickOnce App

Using ApplicationDeployment to manually update ClickOnce applications

"Class to implement manual updates in ClickOnce applications.

With one line of code, you can asynchronously update your applications

Dim updateCO As New UpdateClickOnce("EnGraph Manager", True, True)
 
..."

As you might have guessed, I like using ClickOnce to deploy my .Net 2 apps. I’ve used other "auto-updating" methods in the past, but they have always required more work than I like to implement and keep up.

The one thing I did like about them was that it was pretty easy (once everything else was done) to add a user driven "Check for Update" feature. This lets the user check for and get updates while still in the app (like after getting an email or IM that I’ve just released a new version).

ClickOnce, by default has a check "Before application starts" or "Check for update every # hour/day/week". For my apps, polling is not a good solution (plus I just don’t like the idea of polling). Also it is an either/or option. You can’t both check at startup and poll. So polling is out for me. But I digress...

Extra coding is required to implement manual, user driven "Check for updates" in ClickOnce apps (as is also required with the other auto-update methods I’ve used). I’ve seen examples of this in different webcasts, but seeing those and implement it in the real world code is something else.

Now comes Tim Hubbard’s above post. He provides a very nice VB8 class/implementation to help me do just what I need to do.



Man I dig the Net, RSS and blogs...  :)

Technorati Tags: , ,

Wednesday, March 01, 2006

MS SDC.Tasks, a MSBUILD tasks library with over a hundred new tasks...

Microsoft Services (UK) Enterprise Solutions Build Framework (SBF): Home

"Sdc.Tasks is an MSBUILD tasks library which provides over a hundred new tasks for driving continuous integration builds, deploying and testing applications and much more.

The Solutions Build Framework is a set of tools and procedures that represents MSUK best practice for developing enterprise applications. This includes continuous integration build; automated multi box rig deployment; automated testing; automated documentation.

These downloads provide source code and binaries for all of the above, allowing a developer to take as much or as little of the functionality as required.
MSUK will keep this site updated as the tools are improved. Some informal support will also be available via the forums on this site. There will be a major update to the (currently limited) documentation in March 2006. "




From Microsoft Services (UK) Enterprise Solutions Build Framework;


"The guys at Microsoft Services UK have created a new GDN workspace for the latest incarnation of the SDC Tasks for MSBuild - basically all the tasks that were in the old SDC Build tools have been re-written for MSBuild. There are several other MSBuild Task community efforts going on at the moment - such as the MSBuild Community Tasks Project for VS 2005 and the Label Source Safe Project ...

 

Microsoft.Sdc.Tasks.ActiveDirectory.Group.AddUser
Microsoft.Sdc.Tasks.ActiveDirectory.Group.Create
Microsoft.Sdc.Tasks.ActiveDirectory.User.Create
Microsoft.Sdc.Tasks.ActiveDirectory.User.GrantPrivilege
Microsoft.Sdc.Tasks.ACTPerfTest
Microsoft.Sdc.Tasks.AssignCulture
Microsoft.Sdc.Tasks.BizTalk2002.Configure
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Deploy
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.ExportBindings
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.ImportBindings
Microsoft.Sdc.Tasks.BizTalk2004.Assembly.Undeploy
Microsoft.Sdc.Tasks.BizTalk2004.Clean
Microsoft.Sdc.Tasks.BizTalk2004.Host.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Host.Start
Microsoft.Sdc.Tasks.BizTalk2004.Host.Stop
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Bind
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.TerminateInstances
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Unbind
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Exists
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Start
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.Stop
Microsoft.Sdc.Tasks.BizTalk2004.Orchestration.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.Party.Configure
Microsoft.Sdc.Tasks.BizTalk2004.Party.ConfigureAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Create
Microsoft.Sdc.Tasks.BizTalk2004.Party.CreateAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Delete
Microsoft.Sdc.Tasks.BizTalk2004.Party.DeleteAlias
Microsoft.Sdc.Tasks.BizTalk2004.Party.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.Configure
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.AddReceiveLocation
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Configure
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Create
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Delete
Microsoft.Sdc.Tasks.BizTalk2004.ReceivePort.Exists
Microsoft.Sdc.Tasks.BizTalk2004.ReceiveLocation.RemoveReceiveLocation
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Configure
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Create
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Delete
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Exists
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Start
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.Stop
Microsoft.Sdc.Tasks.BizTalk2004.SendPort.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.AddSendPort
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Configure
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Create
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Delete
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Enlist
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Exists
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.RemoveSendPort
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Start
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.Stop
Microsoft.Sdc.Tasks.BizTalk2004.SendPortGroup.UnEnlist
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.FileTransportData
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.HttpTransportData
Microsoft.Sdc.Tasks.BizTalk2004.TransportData.SoapTransportData
Microsoft.Sdc.Tasks.Cab.AddFile
Microsoft.Sdc.Tasks.Cab.Create
Microsoft.Sdc.Tasks.Cab.ExtractFile
Microsoft.Sdc.Tasks.Certificates.AddCertificate
Microsoft.Sdc.Tasks.CheckComponentInstalled
Microsoft.Sdc.Tasks.CheckInstalled
Microsoft.Sdc.Tasks.CheckProductInstalled
Microsoft.Sdc.Tasks.CodeCoverage.AddAssembly
Microsoft.Sdc.Tasks.CodeCoverage.Create
Microsoft.Sdc.Tasks.CodeCoverage.MergeReports
Microsoft.Sdc.Tasks.CodeCoverage.Start
Microsoft.Sdc.Tasks.CodeCoverage.Stop
Microsoft.Sdc.Tasks.CompileTestSummary
Microsoft.Sdc.Tasks.ComponentServices.Application.AddComponent
Microsoft.Sdc.Tasks.ComponentServices.Application.Delete
Microsoft.Sdc.Tasks.ComponentServices.Application.RemoveComponent
Microsoft.Sdc.Tasks.ComponentServices.Application.Shutdown
Microsoft.Sdc.Tasks.ComponentServices.Application.Update
Microsoft.Sdc.Tasks.ComponentServices.Component.Update
Microsoft.Sdc.Tasks.ComWrapper
Microsoft.Sdc.Tasks.ConsoleReadLine
Microsoft.Sdc.Tasks.StringToItemList
Microsoft.Sdc.Tasks.StringComparison
Microsoft.Sdc.Tasks.File.Delete
Microsoft.Sdc.Tasks.Folder.GetInfo
Microsoft.Sdc.Tasks.GetMetadataValueFromList
Microsoft.Sdc.Tasks.Help.DocumentExceptions
Microsoft.Sdc.Tasks.CreateGuid
Microsoft.Sdc.Tasks.CreateSateliteAssembliesFromResx
Microsoft.Sdc.Tasks.Culture

Microsoft.Sdc.Tasks.EventSource.Create
Microsoft.Sdc.Tasks.EventSource.Log
Microsoft.Sdc.Tasks.File.GetFiles
Microsoft.Sdc.Tasks.Folder.Copy
Microsoft.Sdc.Tasks.Folder.Share.Connect
Microsoft.Sdc.Tasks.Folder.Share.Exists
Microsoft.Sdc.Tasks.Folder.Share.Create
Microsoft.Sdc.Tasks.Folder.Share.Delete
Microsoft.Sdc.Tasks.Folder.Share.Disconnect
Microsoft.Sdc.Tasks.Folder.Share.ShareReturnCode
Microsoft.Sdc.Tasks.GlobalAssemblyCache.AddAssembly
Microsoft.Sdc.Tasks.GlobalAssemblyCache.GacHelper
Microsoft.Sdc.Tasks.GlobalAssemblyCache.RemoveAssembly
Microsoft.Sdc.Tasks.Help.Compile
Microsoft.Sdc.Tasks.Help.CreateProject
Microsoft.Sdc.Tasks.Help.Decompile
Microsoft.Sdc.Tasks.Help.InsertAfter
Microsoft.Sdc.Tasks.Help.InsertBefore
Microsoft.Sdc.Tasks.Help.InsertParent
Microsoft.Sdc.Tasks.LogicalComparison
Microsoft.Sdc.Tasks.MessageQueue.Create
Microsoft.Sdc.Tasks.MessageQueue.Delete
Microsoft.Sdc.Tasks.MessageQueue.SetPermissions
Microsoft.Sdc.Tasks.Msi.GetProperty
Microsoft.Sdc.Tasks.Msi.Install
Microsoft.Sdc.Tasks.Msi.Repair
Microsoft.Sdc.Tasks.Msi.Uninstall
Microsoft.Sdc.Tasks.PerformanceCounters.Add
Microsoft.Sdc.Tasks.PerformanceCounters.Remove
Microsoft.Sdc.Tasks.Ping
Microsoft.Sdc.Tasks.Registry.DeleteKeyTree
Microsoft.Sdc.Tasks.Registry.CreateKey
Microsoft.Sdc.Tasks.Registry.DeleteKey
Microsoft.Sdc.Tasks.Registry.Get
Microsoft.Sdc.Tasks.Registry.Set
Microsoft.Sdc.Tasks.Security.AddAcl
Microsoft.Sdc.Tasks.Security.RemoveAcl
Microsoft.Sdc.Tasks.ServiceProcess.Exists
Microsoft.Sdc.Tasks.ServiceProcess.Start
Microsoft.Sdc.Tasks.ServiceProcess.Stop
Microsoft.Sdc.Tasks.ServiceProcess.UpdateIdentity
Microsoft.Sdc.Tasks.Email
Microsoft.Sdc.Tasks.GetInstalledComponents
Microsoft.Sdc.Tasks.GetInstalledProducts
Microsoft.Sdc.Tasks.NativeMethods
Microsoft.Sdc.Tasks.Resources
Microsoft.Sdc.Tasks.Sleep
Microsoft.Sdc.Tasks.SourceSafe.Get
Microsoft.Sdc.Tasks.SourceSafe.LabelGet
Microsoft.Sdc.Tasks.Sql.DisconnectUsers
Microsoft.Sdc.Tasks.Sql.Execute
Microsoft.Sdc.Tasks.Sql.Access.Revoke
Microsoft.Sdc.Tasks.Sql.Role.AddUser
Microsoft.Sdc.Tasks.Sql.Access.Grant
Microsoft.Sdc.Tasks.Summary.AddToReport
Microsoft.Sdc.Tasks.Time.Diff
Microsoft.Sdc.Tasks.Time.Get
Microsoft.Sdc.Tasks.Time.Report
Microsoft.Sdc.Tasks.Tools.DevEnv
Microsoft.Sdc.Tasks.Tools.MsTest
Microsoft.Sdc.Tasks.Tools.StrongName.AddSkipVerification
Microsoft.Sdc.Tasks.Tools.StrongName.ExtractPublicKey
Microsoft.Sdc.Tasks.Tools.FxCop
Microsoft.Sdc.Tasks.Tools.StrongName.GenerateKey
Microsoft.Sdc.Tasks.Tools.Installshield
Microsoft.Sdc.Tasks.Tools.NDoc
Microsoft.Sdc.Tasks.Tools.NUnit
Microsoft.Sdc.Tasks.Tools.PreSharp
Microsoft.Sdc.Tasks.Tools.PsExec
Microsoft.Sdc.Tasks.Tools.StrongName.GetPublicKeyToken
Microsoft.Sdc.Tasks.Tools.StrongName.ReSign
Microsoft.Sdc.Tasks.Tools.StyleCop
Microsoft.Sdc.Tasks.TrimJavascript
Microsoft.Sdc.Tasks.VersionNumber.CppCodeDomProvider
Microsoft.Sdc.Tasks.VersionNumber.CppCodeGenerator
Microsoft.Sdc.Tasks.VersionNumber.CreateSourceFiles
Microsoft.Sdc.Tasks.VersionNumber.Load
Microsoft.Sdc.Tasks.VersionNumber.SplitBuildNumber
Microsoft.Sdc.Tasks.VersionNumber.Update
Microsoft.Sdc.Tasks.VirtualServer.Load
Microsoft.Sdc.Tasks.VirtualServer.RegisterVirtualMachine
Microsoft.Sdc.Tasks.VirtualServer.UnregisterVirtualMachine
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.AddNetworkAdapter
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Exists
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.OS.CheckHeartBeat
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.OS.Shutdown
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Start
Microsoft.Sdc.Tasks.VirtualServer.VirtualMachine.Stop
Microsoft.Sdc.Tasks.Web.AppPool.Create
Microsoft.Sdc.Tasks.Web.AppPool.Delete
Microsoft.Sdc.Tasks.Web.FtpSite.Create
Microsoft.Sdc.Tasks.Web.FtpSite.CreateVirtualDirectory
Microsoft.Sdc.Tasks.Web.FtpSite.Delete
Microsoft.Sdc.Tasks.Web.FtpSite.DeleteVirtualDirectory
Microsoft.Sdc.Tasks.Web.FtpSite.Start
Microsoft.Sdc.Tasks.Web.FtpSite.Stop
Microsoft.Sdc.Tasks.Web.ServiceExtension.AddFile
Microsoft.Sdc.Tasks.Web.ServiceExtension.DeleteFile
Microsoft.Sdc.Tasks.Web.Smtp.Create
Microsoft.Sdc.Tasks.Web.Smtp.Start
Microsoft.Sdc.Tasks.Web.Smtp.Stop
Microsoft.Sdc.Tasks.Web.WebSite.AddBinding
Microsoft.Sdc.Tasks.Web.WebSite.AddFilter
Microsoft.Sdc.Tasks.Web.WebSite.AddMimeType

Microsoft.Sdc.Tasks.Web.WebSite.AddhttpCustomHeader
Microsoft.Sdc.Tasks.Web.WebSite.DeleteFilter
Microsoft.Sdc.Tasks.Web.WebSite.FilterExists
Microsoft.Sdc.Tasks.Web.WebSite.UpdateHttpErrorSetting
Microsoft.Sdc.Tasks.Web.WebSite.Continue
Microsoft.Sdc.Tasks.Web.WebSite.Create
Microsoft.Sdc.Tasks.Web.WebSite.CreateVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.Delete
Microsoft.Sdc.Tasks.Web.WebSite.DeleteVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.Pause
Microsoft.Sdc.Tasks.Web.WebSite.Start
Microsoft.Sdc.Tasks.Web.WebSite.Stop
Microsoft.Sdc.Tasks.Web.WebSite.UnloadVirtualDirectory
Microsoft.Sdc.Tasks.Web.WebSite.UpdateServerCertificate
Microsoft.Sdc.Tasks.Wix.CompileMsi
Microsoft.Sdc.Tasks.Wix.Fragment
Microsoft.Sdc.Tasks.Wix.LinkMsi
Microsoft.Sdc.Tasks.Xml.CanonicalizeFile
Microsoft.Sdc.Tasks.Xml.GetValue
Microsoft.Sdc.Tasks.Xml.ModifyFile
Microsoft.Sdc.Tasks.Xml.XslTransform
Microsoft.Sdc.Tasks.Zip.AddFile
Microsoft.Sdc.Tasks.Zip.Create
Microsoft.Sdc.Tasks.Zip.ExtractFile
Microsoft.Sdc.Tasks.Zip.JSEnumerationWrapper
Microsoft.Sdc.Tasks.Zip.ZipManager"



All these make me want to play with MSBuild. Just think of the cool build processes I can do with all these! Muhahahaha...

(via Howard van Rooijen’s Blog - Microsoft Services (UK) Enterprise Solutions Build Framework)



ClickOnce Trick - supportURL

Specifying Individual Support URLs for ClickOnce Prerequisites

"... just finished a bunch of work on the ClickOnce documents regarding Platform Detection, which ClickOnce uses to check that the operating system and installed CLR are of the appropriate version, and also that any controls required to be installed in the GAC are installed. If ClickOnce detects that one of these prereqs is missing or doesn’t match what the ClickOnce application manifest requires, it halts installation and displays a failure dialog to the user.

An undocumented feature - undocumented until now! - is that this failure dialog can contain a support URL, pointing to a page with more information about how to resolve the failure. E.g., a dependency on a GAC-installed component can point to a page that contains a link to an MSI that installs it.


 

...

You have to hack this in to the application manifest by hand, and then re-sign the application and deployment manifests. Also, the URL will not display unless your app has full trust.

I have a How to about this that will be published later this year. For now, here are the relevant application manifests snippets that show the supportUrl.
..."

Nice. The more information you can provide a user having ClickOnce install issues the better...



Technorati Tags: ,

Free ISBN REST Web Service from ISBNdb.com

Free ISBN Web Service



"From The Programmable Web comes word of ISBNdb.com, a large database of books indexed by ISBN. Of interest to developers is the fact that there is a complete (and free) REST API. Items in the site are organized (and accessible) via book, subject, category, author, and publisher index.

 

Several (ok, many) ECS developers have asked me for similar services over the past year or two and it is great to see this new and powerful service in action...."



Nice. I still have my "My Bookshelf" project on the... um... books... so this will come in handy.



ISBNdb provides a refreshingly simple API, yet it delivers almost all the information I need. The only thing it doesn’t provide is a URL for an image of the book’s cover. Still that’s easy enough to get via the Amazon API (where as for the rest of this information, the Amazon API is way over kill).



I guess I have no more excuses? (lol... I can always come up with another excuse. Heck my excuse API is very full featured! ;)



Technorati Tags: , , ,

"Free USB Thumb Drive from Microsoft"

Free USB Thumb Drive from Microsoft

"Microsoft is giving away free USB Drives. Simply go here and then click on "Valuable Information" on the right side of the screen.

Too easy -- and it’s free!!!"

Because you can never have enough thumb drives...  ;)

Extended and Date Winform Textboxes

VB.NET User Controls: Extended and Date Textboxes

"This article offers two user controls that are alternatives to the standard VB.NET TextBox.


  • DateTextbox ... an aggregate of a standard TextBox and a calendar button.

  • ExtendedTextbox ... adds six properties to the standard TextBox for controlling textbox behavior.
...
DateTextbox


The DateTextbox is an aggregate of a standard TextBox and a Button. When the button is clicked, a calendar is displayed....

ExtendedTextbox


The ExtendedTextbox can be used in any VB.NET project as a replacement for the standard TextBox. This user control adds several extension properties that can be used to determine how the textbox will respond to keystrokes, and what happens when the textbox gets and loses the focus.

 

_HighlightText Boolean

When true, any pre-existing text is highlighted when the textbox receives the focus. The user can replace the pre-existing text by just starting to type. When false, text is not highlighted and the insertion cursor is placed at the end of the text.

 

_TrimSpaces Boolean

When true, any leading and trailing spaces are removed from the text when the textbox loses the focus.

 

_Keystrokes Multiple options

All ... Accepts all keystrokes the same as the standard TextBox.

LettersOnly ... Accepts upper and lower case letters (a-z, A-Z) and space (to accept only lower or upper case letters, set the standard CharacterCasing property).

NumbersOnly ... Accepts numbers (0-9) plus allowed number related special characters (minus sign, decimal point, thousands separator).

NoSpecialChar ... Accepts upper and lower case letters (a-z, A-Z), numbers (0-9), and space.

PhoneChar ... Accepts numbers (0-9) plus (), -, and space.

 

_MinusSign Boolean

When true, accepts a minus sign (the minus sign character set in the OS region settings) in the first character position of the textbox. In effect only when the _Keystrokes property is set to NumbersOnly.

 

_DecimalPoint Boolean

When true, accepts one decimal point (the decimal point character set in the OS region settings). In effect only when the _Keystrokes property is set to NumbersOnly.

 

_ThousandsSeparator Boolean

When true, accepts any number of thousands separators (the digit grouping character set in the OS region settings). In effect only when the _Keystrokes property is set to NumbersOnly.
 

..."
 
I needed something just like this the other day. I needed a simple textbox limited to numbers only and that highlighted on focus. Sure it’s easy enough to code that, but I’m pretty lazy and hate rewriting the same code over and over (even to snipping over and over... ). An extender is a good solution for this problem.


I ended up using a third party control that I already owned (Infragistics UltraNumericEditor). But I also hate using a 10 pound sledge to hammer in drywall nails (I’m just never happy am I?).


This is a VB 7.1 project, but looks easily upgradable to VB8...

Tuesday, February 28, 2006

Street Level View in Windows Live Local

Talk about cool! Have you seen the new street level images in the new Windows Live Local?

It lets you "drive" (or walk) around Seattle and San Francisco. The images are not live, but static snapshots taken every 5 feet or so as a vehicle down each the road. The pictures were taken from the front, left and right sides and the rear (and left and right rear). So you can move in any direction.

You’ll want a high speed low latency internet connection to get the true feel (my cable modem is doing a good job of keeping up), but you need to check this out...

This is just too cool!

Windows Live Local

Now all they need is someone walking with an imaging set and GPS to get all those areas not vehicle accessible... ;)

(via e-piphany - Virtual Earth gets street-level imagery...)

Testing a New Blog Post Client (PowerBlog)

I am on a quest for a good Windows Blogger client.


I like BlogJet a good deal, but $40 with only minor version updates free has put me off a little.


So I've been hunting for another cheaper/free windows blogging client that matches the features of BlogJet and fits my blogging style.


It's not been pretty.


There are a number of Windows Blogger clients, and I feel like I've played with them all recently... Today it's PowerBlog.


So far it seems like a good candidate. It's free, has WYSIWYG (I want to write my blog posts, not craft HTML), supports Blogger, and since it hosts the IE HTML editor supports my spell checker (ieSpell). Its shortcuts match what I'm used to (CTRL-K to insert a link, etc), supports good cut-n-pasting and more.


Now I just need to post this and see how it looks.


;)


Update #1:
No title post? I have one in my local post. sigh... Maybe a template like issue? Gee maybe I should RTFM?


Update #2:
Posting an update seemed to TOTALLY jack my blog. Maybe it's a Blogger thing, maybe the client, but I'm deleting this post now...


Time to pony up and pay for BlogJet I guess...


Update #3:
My link to ieSpell was TOTALLY jacked. This was what was causing my above problem. How it got jacked is the question... And I still don't have a post title.


Update #4:
Okay, I think I've found the fix (via the forum). Let's post this and see...


BTW, don't get me wrong. PowerBlog seems to be a VERY cool client. You can tell a great deal of love and work has gone into this app. If I move onto another app, it's not because this one is not good, just that it doesn't fit me...


Update #4a:
LOL. I have a post, but no body. LOL!
Editing article template...


Update #4b:
I think I've got it. In the end, I think I dig the article template feature...

Monday, February 27, 2006

DOM Helper: A new and improved CSS Editor for IE

Hairy Spider Blog - Announcing DOM Helper: A new and improved CSS Editor

”Well I've finally got round to producing the inline CSS editor that I wanted to do in the first place. The first stab, was in C++ and although it worked, it was a complete nightmare. It didn't allow you to alter CSS files that were loaded as "@import". This new version does, it parses the CSS and adds each individual rule back to the style sheet. Simply replacing the CSSText caused a memory corruption error in MSHTML. It's been re-written it in C# using Pavel Zolnikov's BandObjects. I've also added a few extras such as a DOM Explorer and the ability to add plugins to the band object.While it's been writting in C# 2.0 there's not much use of the new version 2 features. Mind I was most satisfied with my first foray into using generics. I didn't think that there'd be much use for them but I did find a use, albeit slightly contrived.

…”

This is an interesting IE toolbar.  In part, much like the IE Developer Toolbar, but this DOM Explorer is prettier…  ;)

(via help.net - DOM Helper for IE)

"New CoolCommands for Visual Studio 2005"

New CoolCommands for Visual Studio 2005

"After I released coolcommands I received a lot of suggestions about adding others commands. I received bug reports too :(. So I developed some new commands and fixed some bugs.

My favorite new cool command is the Resolve Project References.

But Andres Aguiar insists that the coolest is the Copy and Paste of references ;)

So here a brief explanation about the new commands:


Resolve Project Reference
A lot of times I load only one project without the original solution of it. So all project references are unresolved. So that we should load each project in the solution in order to build the project. Well, this command solve this problem, right click in the project and Resolve Project References load all the project references recursively

Copy / Paste of References

Open File

Locate in Solution Explorer

Collapse all projects is enabled in the solution root

..."

Cool Commands indeed!

One note, the install.bat in the download didn't work 100% for me. VS 2005/8 "DevEnv" is not in my path, so the line "devenv /setup" errored.

Manually running "DevEnv /setup" from Start/Run did work though and all the Cool Commands are now installed and working.

To avoid this, RTFP (Read The Fine Post). It says, very clearly, "... unzip and run install.bat in a VS 2005 command prompt)". dogh!

Besides the very cool "Resolve References" (I hate playing the fix up references games), I think the "Collapse All Projects" is pretty cool too...

Because you can't ever have enough languages...

Don Syme's WebLog on F# and Other Research Projects : F# 1.1.10 now available

"...F# Interactive for Visual Studio. This release comes with a prototype version of 'F# Interactive' for use as a tool Window in Visual Studio 2005. ..." (via Larkware - The Daily Grind 827)

Tobler.SoftwareArchitecture() - [Languages] LSharp, a new .NET Lisp-like scripting language

"From the ancestral line of Lisp, we now have another new scripting language for .NET. LSharp "uses a Lisp dialect similar to Arc." LSharp is Open Source (GPL). ..."

Tobler.SoftwareArchitecture() - [Languages] Zonnon, a new .NET language

"Descending from the heritage of Pascal, Modula-2, and Oberon, Zonnon is a new language for .NET. According to the Zonnon website, "It retains an emphasis on simplicity, clear syntax and separation of concerns whilst focusing on concurrency and ease of composition and expression. ...

...While the first implementation of Zonnon is for .NET, it aims at platform independence. The .NET implementation includes Microsoft Visual Studio.NET integration ..."

Just like sunflower seeds... You can't have just one. ;)

Sunday, February 26, 2006

ClrDump Utility

DebugInfo.com - ClrDump - Create small minidumps of .NET applications

"ClrDump is an experimental set of tools that allow to produce small minidumps of managed applications. In the past, it was necessary to use full dumps (very large in size) if you needed to perform post-mortem analysis of a .NET application. ClrDump can produce small minidumps that contain enough information to recover the call stacks of all threads in the application.

Use the following SOS commands to obtain the call stacks when debugging a crash dump produced with ClrDump:

.NET 1.1 applications:

!dumpstack -EE
Get managed call stack
!dumpstack
Get mixed managed/unmanaged call stack
!clrstack
Do not use it, it does not work correctly with small dumps and can destabilize your debugger

.NET 2.0 applications:

!dumpstack -EE
Get managed call stack
!dumpstack
Get mixed managed/unmanaged call stack
!clrstack
Get managed call stack

For .NET 1.1 applications, ClrDump uses undocumented interfaces implemented by .NET Runtime. For .NET 2.0 applications, it uses small minidump support in DbgHelp.dll.

..."

Interesting. Sounds like a nice Utility Belt item.

(via DebugInfo.com - Oleg Starodumov - ClrDump - Create small minidumps of .NET applications)

"Building a Rule Engine with SQL Server"

SQL Server Developer Center: Building a Rule Engine with SQL Server

"Summary: Rules play a central role in a wide variety of applications. In addition to the declarative specification of business rules, the simple rule engine design described in this article can be used to implement state machines, predicate dispatchers, or any other rule-based system. (15 printed pages)

Introduction

The term rule is often used to describe what may more accurately be called a well-formed formula (wff). In many applications, the satisfaction of a wff is necessary to identify the suitability of some action. For example, in a customer relationship management (CRM) application, we may want to suggest one or more products similar to the product currently being purchased. To make our suggestion as attractive as possible, it would be wise to leverage the information we have gathered about this, and other, customers. For instance, our decision about which additional products to offer might be based on the current customer's age, purchase history, gender, geographic location, or a wide array of other factors. By including such demographics, we can maximize the likelihood that our suggestions will be valuable to our customers, and will consequently translate into additional purchases and revenue for our firm.

In this article we present a design for a rule engine based on nothing more than a few tables and queries in a SQL Server database. ..."

I'm also always up for a new/different Rules engine.

The thing I have to remember is that "Rules Engine != Workflow" ... I find myself trying to mix the two sometime. Now that Windows Workflow is kind of close it's easier for me to keep the two mentally separate. The right tool for the right job, etc, etc.

Saturday, February 25, 2006

CodeKeep Add-in for VS 2005 Now Available

CodeKeep Blog: Add-in for VS 2005 Now Available

"One of the most frequently asked questions I get about CodeKeep is, "When will the add-in for Visual Studio 2005 be available?". I'm happy to report that that question has been answered because I put the finishing touches on the VS 2005 add-in today and it's now ready for immediate download.

I think you'll find the VS 2005 add-in is a nice upgrade to the VS.NET 2003 version. Feature-wise they are equivalent, but the VS 2005 add-in contains additional functionality such as dockable windows, drag-and-drop capabilities, and automatic language detection.

So now you have no more excuses for not saving code snippets in CodeKeep. …
"

Cool. Downloaded and installed. With the new feed formating (Major Upgrade Complete - Woot! & Slight Changes to RSS Feeds), I’m digging CodeKeep even more...

Now to take a minute to post some of my snips.

Friday, February 24, 2006

"Washington Post and the Metadata Mistake"

Electronic Discovery and Evidence: Washington Post and the Metadata Mistake

"…caught in a metadata gaffe that exposed the whereabouts of a 21-year-old hacker who confessed to controlling thousands of compromised PCs for malicious use. The hacker agreed be interviewed by Washington Post reporter Brian Krebs on the condition that he not be identified by name or home town, but when the article was posted on the newspaper's Web site, an accompanying photograph included metadata that pinpointed the location to Roland, Okla., a small town with a population of 2,842. …"

Like I was saying in "Clean Up After Your PDFs", image metadata goofs are going to be “fun” to watch for a while…

 

ThinPrint and Printing from Windows Terminal Services/Citrix

Getting to grips with ThinPrint (Part I) - Angus' Tech Blog

"Many IT infrastructure architects and system administrators have battled with the problem of printing from applications deployed through Windows Terminal Services or Citrix in heterogeneous networks.  ThinPrint .print is a product suite that can help you out with most scenarios, albeit with a few limitations.

One of the main drawbacks to .print is that it's difficult to understand at first, because there are so many different product options and ways of configuring it. Also, the documentation provided is not that good.  I've spoken to many people and done a lot of research, but no-one's been able to explain to me satisfactorily how the product works.  So I decided to get to grips with it myself and share the benefit of this effort by posting a series of articles on the subject.

To begin with, it's worth highlighting the main benefits it brings:

  • Print job compression - extremely useful for low-bandwidth and/or high-latency network connections
  • Driverless printing - good for reducing the number of print drivers on a Citrix farm or Terminal Services server.

The best way to explain how it operates is to work through a series of example deployments and detail the processes that take place.  In this, the first of a number of posts on the subject, we'll be looking at the most basic printing scenario: printing in a Windows Terminal Services environment.

…"

Sounds kind of interesting.

If you’ve ever been in or supported a WTS/Citrix environment you’ll know the problem ThinPrint solves. Printing and printer drivers can be a major pain with WTS/Citrix. And if you have people connecting who are outside your control, clients, business partners, etc, it gets much worse.

Think about how many printer drivers there are. Then think about how different printer brands/models your clients/customers/partners/WTS users have. Think about how often these connecting users add/remove/buy printers. And then think about getting all these drivers onto your WTS in a time-frame acceptable to your users (i.e. “But I need to print NOW… I don’t care if it’s 11pm on Friday…”).

The one downside for this solution is that a client side component is needed. It’s understandable that one is needed, but trying to get that component, even though it’s free, on client/business partner machines might (cough… cough… will) be a hassle. But it’s a one time hassle as opposed to the constant Printer Driver Shuffle game…

Thursday, February 23, 2006

Unicode Script Character Code Chart

Code Charts - Scripts

This is a handy reference for Unicode script characters…

(via Suresh Behera - The Unicode Character Code Charts By Script)

Today's another SkypeOut Gift Day...

“Sometimes not all of the people you want to talk to are on Skype. That’s why we have SkypeOut, a pretty cheap way to call landlines and mobiles around the world at local rates. What’s more, we’re giving away 10 minutes of Skype Credit today to anyone who would like to try SkypeOut for free. We’re nice like that.

You can claim 10 minutes of Skype Credit today and try SkypeOut for free.

Hurry, you need to claim your free credit before midnight tonight

If you’re in the USA, you’ll find a “Get a free Skype gift” button on your account page. …”

I just got an email saying today is another SkypeOut 10 Minutes Gift day…

.Net (C#) TripleDES/MD5 Encrypt/Decrypt

C# Shiznit - Library Encrypt and Decrypt Methods Using TripleDES and MD5

Bobby DeRosa provides a short and sweat TripleDES Encrypt/Decrypt code sample. I like this one over others I’ve found (and it’s cleaner than what I’m using) so I wanted to make note of it…