Tuesday, January 31, 2006

Fully Managed Screen Grabbing With .Net 2.0

Screen Capturing - The Code Project - C# Programming.

“Introduction

There are a lot of articles about screen capturing, but most of them use Win32 API functions, even in .NET 2.0, where this is not necessary because .NET 2.0 has all the classes needed to implement that.

Background
It's often necessary to get a screenshot of the screen or parts of it. In our applications, we often use systems with multiple monitors, requiring to capture all of them at once or each screen separately. Just remember: the virtual screen is the complete view of all monitors attached to the system, the primary screen is the view of the main monitor, and the working screen is the same but excluding the task bar.

…”

Very cool. This is something I’ll be able to use…

IE 7 Beta 2 - To Install it on my Production Machine or Not?

IE7 Beta 2 Preview Available.

"If you’re a developer, an IT Pro, or just plain interested, please visit http://www.microsoft.com/windows/ie/ie7/ to try the IE7 Beta 2 Preview.

What’s a beta preview? It’s a release for everyone involved in making the Internet work.

Before we release a consumer-focused beta, we want to make sure anyone with a website can look at the changes we’ve made to our layout engine and the stricter user experience around security certificates. Developers should try out their toolbars, ActiveX controls, and applications that host or rely on the IE platform. IT Pros have their own concerns when a new browser is coming, as do domain registrars (especially with the IDN support), network operators, and many, many other groups. The site has some checklists we’ve written to help people exercise IE7 with their sites and applications. If we missed items you think we should call out, please let us know. We’re looking forward to feedback that will help us deliver a great, consumer-focused beta.

…"

To install IE7B2 on my production machine or not… I do have some apps that I support that use and/or embed IE so it is important that I know how IE7 will effect them. But this is my production box…

Sometimes I feel it’s okay to play the beta game on this box, for example I installed the Google Toolbar 4 beta yesterday… But I live in IE. And in the past IE has been so tightly bound to the OS/Explorer/my online life/etc that I’m just not sure in this case.

I guess I’ve answered my own question. If I’m so unsure, I just can’t risk it. Yet. Though the post comments do ease my concern a little;
“If you uninstall IE7, you will revert to what you had installed before, which I presume is the version of IE6 in XP Service Pack 2 for most people.

- Al Billings [MSFT]”

I think I’ll let the dust settle and maybe give it a go in a VPC machine.

sigh…

"Continuous Integration Using Team Foundation Build"

Continuous Integration Using Team Foundation Build.

"…. Continuous Integration Using Team Foundation Build

Team Foundation Build is the build automation tool in Visual Studio Team System. Built on top of MSBuild, Team Foundation Build integrates with other Visual Studio Team System tools like source control, work item tracking, and test execution to provide an end-to-end build process. It does not provide continuous integration out of the box, but it can be customized to easily do so.

You can download a sample, which we have built on Team Foundation Build, to implement continuous integration. By following the procedure described in this article, you can easily use this sample to set up continuous integration.

…"

CI (Criminal Intent?… um… no… Continuous Integration… Yeah… that… ;) is something I want to look closely at when VSTS ships and I’ve got it running in-house.

I like the concept… Now I want to see it work in my world.

Monday, January 30, 2006

DB2 Express-C (Free DB2)

IBM sets DB2 database free | Tech News on ZDNet.

"DB2 Express-C is the same database as IBM's commercial offerings but the company places limits on what kind of hardware it can run on.

It can be deployed on systems with two processor cores or up to two dual-core chips on Advanced Micro Devices- or Intel-based servers. The memory limit is 4GB but there are no limits on the size of database or number of users.


IBM's decision to add a free database to its lineup follows moves by its largest rivals in the database business, Oracle and Microsoft.

…"

Nice. I’ve always been interested in DB2…

You can download the Windows x86 32 bit version here (Registration required to download it).

(via SlashdotIBM Sets DB2 Database Free (Beer))

New Road Rage Handler?

Defense Tech: Pain Ray, Sonic Blaster, Laser Dazzler - All in One.

Oh yeah, I want one of these for my commute from hell. Let’s see someone road rage me when I have THIS!!! MUHAHAHAHA

;)

Initial XBox 360 Feedback

Jacob and I played on our new XBox 360 all weekend and I have to say I’m very impressed. Compared to our old console, PS2… well it’s just not fair to compare them.

What do I dig about the 360?

A) It’s not a stand-alone silo.

For me, this is the number one uber-cool feature… That it’s fully connected to my network and the world. XBox Live rocks. The online experience is very cool and feels totally seamless.

Its integration with other devices is also VERY cool. While playing PGR3, I have it streaming my music collection from my wife’s PC (having multiple CPU’s is nice… ).

Being able to bring up the XBox Guide in the middle of playing a game (to see if I have any friends…. [um online… yeah…], or to play music, etc) is just too cool.

B) The graphics rock (even on a standard TV)

C) The controllers are nice

They are easy to use for both me and my son

D) Having built in support for different Gamer Profiles, and making it easy to switch between them

I just dig the fact that all the games are integrated with the console’s systems. That instead of each game being a stand-alone silo of data, they instead talk to the XBox system and get the profiles from it. I never want to create another in-game profile/user again.

E) That XBox Live is not a totally closed system.

For example you can see my GamerCard on my Spaces page… 

What don’t I like?

A) Its going to drive me to purchase to a HDTV sooner than later…

B) That I suck at cornering in PGR

C) That I can’t seem to get it to see my other PC.

Either the 360 can only connect to one PC at a time (could be, I guess I should read the doc’s), or my PC isn’t configured right (could be as I try to keep my PC pretty locked down).

D) Its going to drive me to purchase or build a MCE PC

E) That I can’t stream my music when playing XBox Compatible Mode games (like Halo)

F) I would like to see more content in the XBox Live Marketplace.

This is the UI/method where I want to be able to download and view TV shows, stream movies, etc.

G) Its going to drive me to purchase more and more Microsoft Points to spend in the XBox Live Marketplace.

H) I wish it had a multi-card reader.

While it CAN hook up to my digital camera via a USB cable, I’d rather just plug in my CF card… Also CF/SD etc support would be cool storage options to transfer saved games, etc.

Also think about purchasing music/video online and storing it to these cards then playing them on a device with MS’s Play For Sure integration…

I) Initial setup was kind of a pain.

It wasn’t hard, just a little repetitive. Of course I took a little longer in setting up my secure wireless, my XBox Live account and Profile, my Son’s Profile… etc, etc.

It would be very cool if there was a roll-up/laser keyboard available for the 360. It would make some operations so much easier.

Also there has to be an easier way to keep our wireless networks secure and to setup new devices… I keep my wireless as locked down as my devices allow (MAC Address filtering, 128 WEP, no SSID broadcasting, etc, etc). So every time I need to add a new wireless device I have to jump through a number of hoops both on the new device and wireless router, hoops that my parents, daughter, wife or son wouldn’t be able to do easily.

Now that USB is cheap and about everywhere, it sure would be cool if I could use that to transfer/setup/add new wireless devices. Plug the USB Key FOB into the router, push a button, plug it into the new device, push a button, plug it back into the router, push a button and then be done. Even my parents could do that! While not perfect, it’s better than no security. Security that’s hard is security that won’t be used. But I digress…

J) The 20GB HD is just not big enough.

It’s going to be filled sooner than later. With 12GB free, and some game demo’s being 600MB to 1.6GB+, well you get the picture.

K) That my son already kicks my butt in Halo

 

All in all Jacob and I totally dig the 360. While not cheap, in the end I think it was well worth it…

One of my Son's past teachers gets Simi Teacher of the Year...

Simi Teacher of the Year to be feted at dinner.

"Laurie Cariker tries to live by the same philosophy she gives to her three daughters.

The third-grade teacher, who will be honored this week as Teacher of the Year by the Simi Valley Education Foundation, passes on the same advice to her students at Madera Elementary School. …"

Very cool! My son had her twice, both for Third and Fifth grades Second grade … She was/is one of my son’s favorite teachers.

My son is currently an A/B GATE student in middle school (sixth grade), which I believe shows Mrs Cariker did a pretty darn good job…. (That and that my son is d’ man!  ;)

Sunday, January 29, 2006

Generate Parameters Collection Using T-SQL

Generate Parameters Collection Using T-SQL.

"How many times have you written the following lines?
myCommand.Parameters.AddWithValue("@Title",title)
.....
....
....
and so on. If you are attaching only 3-4 parameters then its okay but what about attaching 10-15 parameters. That will be lot of typing and wasting some precious time.
I made a small T-SQL that will generate the parameter collection for you provided the table name.

USE Northwind

-- declare the variables
DECLARE @column_name varchar(20)
DECLARE @ordinal_position int
DECLARE @counter int
DECLARE @totalRows int
DECLARE @table_name varchar(20)
DECLARE @commandObjectName varchar(20)

SET @counter = 1;
SET @table_name = 'Customers'
SET @commandObjectName = 'myCommand'


SELECT @totalRows = COUNT(*) FROM information_schema.columns WHERE
table_name = @table_name

WHILE @counter <= @totalRows
BEGIN

SELECT @column_name = COLUMN_NAME FROM information_schema.columns WHERE
table_name = @table_name AND @counter = ORDINAL_POSITION

Print @commandObjectName+'.Parameters.AddWithValue("@'+@column_name+'",'+LOWER(@column_name)+')'

SET @counter = @counter + 1

END

GO
"

(SQL leached in full for my future reference, searching, etc, etc. All cred’s to the author, Mohammad Azam…)

I use this technique, using T-SQL to create static VB code, in a number of places so I thought it worth noting and capturing the above…

All my data access is stored procedure based, so with a few minor tweaks my version uses the parameters of a given stored procedure instead of table columns. Next I want to include data types, etc, etc…

USE Northwind
-- declare the variables 
DECLARE @parameter_name varchar(20)
DECLARE @ordinal_position int
DECLARE @counter int
DECLARE @totalRows int
DECLARE @storedprocedure_name varchar(20)
DECLARE @commandObjectName varchar(20)
SET @counter = 1; 
SET @storedprocedure_name = 'SalesByCategory'
SET @commandObjectName = 'myCommand'

SELECT @totalRows = COUNT(*)
FROM information_schema.PARAMETERS
WHERE SPECIFIC_NAME = @storedprocedure_name
WHILE @counter <= @totalRows 
BEGIN
SELECT @parameter_name = PARAMETER_NAME 
FROM information_schema.PARAMETERS
WHERE SPECIFIC_NAME = @storedprocedure_name 
AND @counter = ORDINAL_POSITION
Print @commandObjectName
+'.Parameters.AddWithValue("'+ @parameter_name +'",'
+replace( LOWER( @parameter_name), '@','') +')'
SET @counter = @counter + 1
END 
GO

And here’s the output;
myCommand.Parameters.AddWithValue("@CategoryName",categoryname)
myCommand.Parameters.AddWithValue("@OrdYear",ordyear)

Yeah, I know there’s about a million other ways to also do this, but sometimes quick and dirty is all I need…

Saturday, January 28, 2006

EZShellExtensions - Develop Shell Extensions in .Net (Third Party Commercial Product)

EZShellExtensions.Net : Develop Shell Extensions in .Net Fast And Painlessly!

"EZShellExtensions is a set of components for fast, painless and easy development of Windows shell extensions. EZShellExtensions eliminates the time-consuming, error-prone and complicated process of developing shell extensions using an innovative yet simple and easy-to-use object model.  EZShellExtensions can reduce the time required to write shell extensions by as much as 80%. Think of the savings in terms of time and money that this brings to your software development schedule!

Develop All Kinds Of Shell Extensions

EZShellExtensions can be used to develop any kind of shell extensions including context menu extensions, property sheet extensions, infotip extensions, thumbnail extensions, "Send To" extensions, icon extensions, overlay icon extensions, drag-drop extensions, disk cleanup extensions, background menu extensions, drop extensions, Taskbar bands and IE toolbands and explorer bars. Complete list...

VS.Net 2002, VS.Net 2003 and Visual Studio 2005 integration ..."

For $95, if I ever need to build Explorer/Shell/IE extensions, it would be silly to not take a closer look at this...

(via TheServerSide.Net - EZShellExtensions.Net 1.0 Released )

Friday, January 27, 2006

Create Custom Graph & Grid Sheets

Free Online Graph Paper / Grid Paper PDFs

This is a neat site that allows you to create your own custom graph paper in a PDF, which you can then print. There are about two dozen different styles, each with their own custom options.

Need a single sheet of graph paper, then this is your site...

(via Kam VedBrat - free online graph paper )

Google Map API Based World of Warcraft Map

MapWoW.com World of Warcraft Maps

"The map utilizes the Google Maps API and therefore behaves just a like a Google Map. Clicking on the controls on the left side of the map will let you zoom in and out. Dragging the map around lets you scroll the map and view different areas. It's that easy.

Use the menu to the right of the map to select resources and labels that you wish to display. Currently you can display herbs, ore, treasure, zone names, and city names. There are over 15,000 data points covering 69 resources with their exact map location in our database. The bottom of the menu provides quick links to popular locations in the game. Found a great area that you want to share with your friends? Go to the location on the map, click on the "Link to this Location" and then copy the URL. We are always looking to make the site better; so more features will be coming shortly. Soon instance locations and travel paths will be added to the map. ..."

How very cool... A WoW map with all the Google Map AJAX coolness.

(via MMORPGDot@RPGDot - WoW: Map World of Warcraft @ Mapwow )

XBox 360 In Da' House!

The XBox 360 Tracker utility came through for me today. I kicked it off this morning, and wham, it says my local Best Buy has some in stock!

So I jump in the shower (luckily I was "working remote" today) and traveled in an expeditious manner to Best Buy. Yes, they did have some in stock. Rock On!

I now have a number of XBox 360 related items wrapped as surprise birthday presents for my son. Now if only he'd get home from the sleep-over he's at...

... must ...control ...myself ...must ...control... GRRRRR!!!!

;)

 

TFS Administration Tool

TFS Administration Tool: Home

"The TFS Administration Tool allows a TFS administrator to quickly add users to all three platforms utilized by TFS: TFS, Sharepoint, and SQL RS, all through one common interface. The tool also allows administrators to change the current permissions on any of the three tiers, identify any errors, and view all of the users and their permission sets across TFS, Sharepoint, and SQL RS.

This tool was created by the Developer Aftermarket Community Solutions team in Developer Division at Microsoft.

..."

This sounds interesting... I'll have to check it out when it gets released.

Thursday, January 26, 2006

FileHelpers Library 1.3.1

FileHelpers Library - Copyright 2005 to Marcos Meli

"The FileHelpers are an easy to use library to import/export data from fixed length or delimited files.
If you want to start using the library go directly to the Quick Start Guide.

Who needs the File Helpers Library ?

In almost every project there is a need to read/write data from/to a file of a specified format.

For example for log parsing, data warehouse and OLAP applications, communication between systems, file format transformations (for example from a fixed length to a CSV file).

This library aims to provide an easy and reliable way to accomplish this task.

..."

I've been wanting to take a closer look at this since I first saw the article about it on CodeProject in early November.

What a very cool project. I first thought it was some kind of parsing engine, and while it is that, it's much cooler. Using attributes and a template like class it allows you to strongly type your flat file processing, both in and out.

I might need to add a flat file export feature to my app suite soon and this may be the method I use to do it....

Wednesday, January 25, 2006

XBox 360 Tracker v2.0 Released

New Version 2.0 Released!

"Ohhhh CaaaaanaaDaaaa!" Yes, after days of fustration and headache, FutureShop is now supported in this, version 2.0, of the XBOX 360 In-Store Inventory Tracker. There's also some nice additions / fixes that many of you requested. I think the GMAIL issues some were having should be resolved (use port 587).

..."

The very cool XBox 360 Tracker has rev'ed to v2.0.

This thing is a stable for my system tray until I can find a 360...  sigh...

It was to be family gift for X-Mas, then my b-day, then my son's b-day (He's 12 today). But my son is such a stud, he's not upset at all, "We'll get it when we get it..." That's MY BOY!  :)

Unchanged ClickOnce Files are Copied and not Downloaded

Saurabh Pant's Weblog : File Patching

"While upgrading from v1.0 to v2.0 of an ClickOnce application, files/assemblies that have remained unchanged (have the same hash) across the update are not redownloaded from the server. Instead they are just copied over locally in the Clickonce store from the v1.0 to v2.0 app folder. This is totally transparent to the user except for the Download Progress Bar moving much quicker due to the local copy. ..."

VERY nice.

I was a little concerned about this as my ClickOnce app's are stating to get more internal and 3rd party components. Components that don't change all the often. While I would accept the fact that they are copied down each time there's a new release, I wouldn't like it...

Now it seems I have one less thing to worry about.

The more I use ClickOnce the more I like it. It's so much nicer than the Auto Update methods I've used in the past...

Tuesday, January 24, 2006

Visio SharePoint Template and Stencil

Ferry den Dopper's blog: Design for regular people and the real world - Visio template and stencil for designing SharePoint sites (beta)

"I am sharing my Visio template (with stencil) for designing SharePoint
sites. They are designed to assist interaction designers in prototyping
wireframes, together with all the other Visio stencils you can
find online
.

The template and stencil are free to use, just don't re-sell them or
distribute them under your own name. Because this is the first time that I
publish these tools, I release them as 'beta'. I will be adding more shapes in
the nearby future. If you have any suggestions for improvements, please drop me
a note.

...

The stencil offers some of the basic SharePoint webparts. Simply drag &
drop them and customize the list or library. I have included an empty webpart,
area-details webpart, document library, links list, events list, some custom
list views and a site directory. ..."

This is a cool Visio/WSS/SharePoint design download...

(via STEFANO DEMILIANI WeBlog - Visio stencils for designing Sharepoint sites )

Update #1 10/16/2008:
Updated URL to new site per head's up of the change from OP (thanks Ferry!)

Also if you're interested in this, then you might also be interested in Visio template for SharePoint 2007 too! :)

Gigabyte's i-RAM storage device - The Tech Report - Page 1

Gigabyte's i-RAM storage device - The Tech Report - Page 1

"...

Those dissatisfied with the performance of mechanical storage solutions can tap solid-state storage devices that substitute silicon for spinning platters. Such devices shed the mechanical shackles that limit hard drive performance, but they've hardly been affordable options for most users. Then Gigabyte unveiled the i-RAM, a $150 solid state-storage device that plugs directly into a motherboard's Serial ATA port, accommodates up to four run-of-the-mill DDR SDRAM modules, and behaves like a normal hard drive without the need for additional drivers or software.

Gigabyte first demoed the i-RAM at Computex last summer, and cards have finally made their way to the North American market. One has also made its way to our labs, where it's been packed with high-density DIMMs and run through our usual suite of storage tests. Read on for more on how the i-RAM works, what its limitations are, and how its performance compares with a collection of single hard drives and multi-disk arrays.

..."

I blogged about this last year, RAM disk with up to 4 GByte capacity and a battery... $80 bucks, and while I still think it's pretty cool, I'm having second thoughts about if I'd get it for myself.

A) Since I original saw it, I've seen Vista and its SuperFetch. Now if Vista could be configured to use this solid state drive as it does USB drives for SuperFetch, then that would be something...

B) 10 hour power backup, means I'd never put my OS or important apps on it. So for me, it's primary purpose would be for my page file and temp folder (4GB is not big enough to act as my CD-ROM ISO cache folder).

C) With 64 bit here, we're going to start seeing RAM heavy machines. WinXP64 supports 128GB of RAM... So I'd bet we'll be seeing RAM Drives coming back into vogue and the death of page files (as we know them today...).

So I see it as a stop-gap product, with limited future re-use. I think I'll save my money for a new video card... ;)

(via Gameguru Mania - Gigabyte's i-RAM storage device )

MapPoint Web Service 4.1 Release Coming

MapPoint B2B : MWS 4.1 Release

"Ok, it's official. We're doing an MWS release, it's called 4.1 and it's coming in January 2006. Here are the customer ready details of the release:

Expanded Map Coverage
MapPoint Web Service 4.1 includes new data sources that bring updated worldwide road network coverage and support for rendering, finding places (such as cities or towns) and routing between locations. More than 150 cities in Central and Eastern Europe, Northern Africa, and South America now have street-level coverage, including locations of bodies of water and select points of interest such as airports, parking areas and railroad stations.

...

Please note that worldwide city-to-city routing may provide routes through regions that are dangerous due to war, crime, political instability or other factors. The provision of a route through worldwide city-to-city routing should not be considered to be a representation of its safety or suitability. Users should exercise caution and verify the safety and appropriateness of all routes with appropriate governmental and other sources before traveling.

..."

That last paragraph made me pause. Sometimes (many times?) those of us in the US don't realize how dangerous parts of the world can be...

Reflector 4.2 Released...

Lutz Roeder's Programming.NET C# VB CLR WinFX

"Reflector is a class browser for .NET components. It supports assembly and namespace views, type and member search, XML documentation, call and callee graphs, IL, Visual Basic, Delphi and C# decompiler, dependency trees, base type and derived type hierarchies and resource viewers."

The must-have .Net utility, Reflector, has rev'ed to 4.2

(via John Bristowe's Weblog - Reflector 4.2 Released (Via James Kovacs) )