Saturday, August 20, 2005

Development with Microsoft Virtual PC 2004

Mark DiGiovanni : Optimizing Development with Microsoft Virtual PC 2004

"Generally speaking, my pre-Virtual PC development configuration installed on my laptop consisted of a single installation of Windows XP Pro, SQL 2000, Visual Studio.NET 2003, NUnit, and various other tools. With this configuration, I developed several different applications.

...

To make a long story short, I successfully developed my portions of the portal within the VPC image. The standard install on my laptop now consists only of Windows XP Pro, Office 2003, Virtual PC 2004, and some other software. I did not install any development software on the base image. I created a base development VPC image consisting of Windows XP Pro and Visual Studio.NET 2003 with the most recent service packs. I derive all other VPC images (except those requiring Windows Server) from this one. I physically copy the image, rename it, and run NewSID. The virtual hard disk is configured to be "dynamically Expanding" rather than "Differencing." I do this mainly because it can take some time to save the differences.

..."


This is a pretty cool post on how Mark uses Virtual PC (VPC) on his notebook. His approach is pretty interesting...

Boys and girls, if you're a developer and not using VPC then you are missing out. I have used it more times than I can count when troubleshooting platform related bugs.

VPC is also a must have for people who like to beta test or play with different OS's (Gee, that seems to describe someone I know... ;)


Friday, August 19, 2005

Cropper 1.6 Final

Brian Scott's Blog : Cropper 1.6 Final

"This release gets 1.6 out of beta

Changes from the beta release:
The output directory is now configurable through an Options selection in the right-click menu.

Cropper now uses completely owner drawn layered windows. All double buffering of the user interface is custom coded and uses the UpdateLayeredWindow API for improved performance. You will see a substantial improvement when resizing the window, especially at larger sizes. This also allowed some further performance tweaks to the UI painting. ..."


Also noted was that any Cropper 1.6 beta plug-ins should only need a recompile to work with 1.6 Final...

What? You're not using the uber-cool Cropper? Silly, silly, silly... ;)

SharePoint Template Release Day #2

SharePoint Template Release Day #2

It looks like it is SharePoint Application Template release day #2...

Windows SharePoint Services Applications Template: Employee Activities
The Employee Activities Site application for Windows SharePoint Services is a central site for communicating information to employees about company clubs, teams, and events. With this application, employees can sign up for activities, access contact and schedule information, participate in discussions and surveys, and view activity photos. Now companies can more easily keep employees up to date on activities in which they may participate, and employees can quickly access the information they need to get involved.

Windows SharePoint Services Applications Template: Public Official Activity
The Public Official Activity and Issue Management application for Microsoft Windows SharePoint Services allows any Public Official to keep track of their key tasks, calendar, documents, links, and communication with constituents and special interest groups.

Windows SharePoint Services Applications Template: Travel Request Portal
The Travel Request application for Windows SharePoint Services is designed to organize the travel request and approval process. It includes a calendar displaying when workers are out and where, a travel request form, and summaries for managers of requests that need to be approved. It is also a central site for posting travel guidelines and policies, finding links to helpful travel sites, and initiating discussions about travel.

Windows SharePoint Services Applications Template: Publication Review
The Publication Editorial Review application for Windows SharePoint Services provides a central place for editors, staff, and contributors to collaborate on the editing process for a publication such as a magazine, newspaper, or book. Using this application, it is easy to see the status of the various chapters or articles, who is writing or editing each one, and who has already reviewed them. Discussion threads may also be generated to facilitate discussion about the goals, content, or ideas for various documents. This tool would allow reviewers to track changes and document history, manage the review process, display the publication schedule, make assignments, and gather qualitative feedback about each section, article or chapter.

Windows SharePoint Services Applications Template: New Product Development
The New Product Development application for Windows SharePoint Services provides a collaboration tool for product development teams to share contact information, links to important sites, a task list and calendar, and new product planning documents. It also provides one place for executive management to go to view details about the new product development process and status.

Windows SharePoint Services Applications Template: Performance Review
This application for Windows SharePoint Services is to be used by human resource managers to manage the performance review process across an organization. It is a central site for organizing performance review forms, employee performance history, and related information.”

Related Past Post XRef:
It must be SharePoint Application Template Release Day...

wx.NET

wx.NET Home Page

"wx.NET is a .NET Common Language Infrastructure (CLI) wrapper for wxWidgets. It is composed of two parts:

wx-c is a C++ library which exposes the wxWidgets API as a collection of C# friendly functions.
wx.NET is a .NET assembly written in C# which parallels the wxWidgets class hierarchy.

wx.NET can be used with various implementations of the CLI, including .NET, Mono, and DotGNU Portable.NET. If you are not familiar with the wxWidgets library, you may be interested in some screenshots of wxWidgets and wx.NET.

The source code for wx.NET is released under the wxWidgets license."


From the Why wx.NET? page:

"Cross-Platform, Multi-Runtime
Without any extra work on your part, your application will run on Linux, Mac OS X, and Windows using any of the following .NET runtimes: MS.NET, Mono, or DotGNU Portable.NET.

Native UI, No Emulation
Unlike other toolkit approaches, wx.NET uses the native UI framework on each platform. Under Windows the WIN32 API is used to create buttons, checkboxes, etc. On Linux, GTK+ 2.0 is used (not really "native", but a look/feel users are familiar with). On the Mac, the full aqua look and feel is provided by using Quartz window compositing and HIView implementations for controls.

Other toolkits take the emulation route. This can cause look/feel inconsistencies to end users and slower executing interfaces.
...

HTML Rendering Widget
The HtmlWindow class provides a lightweight HTML 3.2 rendering engine that is perfect for display rich text using a common API on all platforms. This is a great way to spice up reports, display built-in documentation, and provide micro-browser services. ..."


This sounds pretty cool...

I'm not currently doing cross platform development, but when I do, this is something I should check out.

That said though, the HTML Rendering Widget sounds interesting enough to look at sooner...

Get Me The Laziest People ...

Coding Horror: Get Me The Laziest People Money Can Buy

"If you like getting work done, you learn to appreciate inspired laziness as the positive character trait it really is...

...

3. People don't scale
Truly lazy developers let their machines do the work for them. This is partially motivated out of self-interest, it's true, but smart developers know that people don't scale-- machines do. If you want it done the same way every time, and with any semblance of reliability, you want the human factor removed as much as is reasonably possible. ..."


I dig Jeff Atwood's post about hiring "lazy" developers. I love good lazy developers and coders. I make every attempt to be as good lazy as possible.

The "People don't scale" item is so true... (i.e. 9 women can't have a baby in one month... )

Some of My Lazy Thoughts:

If I can buy/find/copy it, why invent it myself?

If I do the same thing twice, then take a bit and make it so you don't ever have to do the same thing a third time.

Don't try to remember everything. All you need to remember is the pointers to the thing (i.e. what to search for in you blog/help/google/email/code, etc)

I try to keep my code as simple as possible, but no simpler.
Meaning no huge and complex frameworks/classes/implementation/feature sets "just cause I might need it one day". Build in enough flexibility to respond to reasonable changes. If in the future there's a true demand for more complexity, THEN you build it. There's NO need to start off complex... It will get complex all by itself in time anyway.

Hire people smarter than you and make sure they have what they need to succeed. If your people succeed, then you succeed.

Deliver fast. Get the app into the real world as soon as possible. In most businesses good enough is good enough. Then grow the app/features/etc as needed to respond to real world requirements/needs/demands. (Hence being lazy in trying to design and build the uber feature set... Avoiding "they MIGHT need this one day" )

Deliver tested. Being lazy to me means that I try to work on a feature once. I don't want to have to touch it again to fix syntax/code/logic bugs. Yeah, perfect world and all that... Still I'd rather spend a little time testing and making sure it works as intended than to have QA/Users push it back as an issue...

Okay, ok... enough for now. Sorry, for the brain dump... :)

Verification for Blogger Comments

Blogger Buzz: Word Verification for Comments

"We've just introduced the option to require word verification for comments. This option (off by default) gives bloggers a tool to prevent the automatic creation of comments by nefarious ne'er-do-wells (e.g. spammers).

Features like comment captcha and flag as objectionable are not complete solutions to the problem of spam. But they are additional tools that can help address it."


LMAO... Wow, ask and you shall...

Of course if I were a spammer, and Blogger comment spam was worth the effort, I'd offshore it to a very low wage country and have humans cut-n-paste'ing all day...

In any case, I've just turned this feature on.

If it causes any problems I apologize in advance, but place the blame where it truly belongs, with the spammers.

Thursday, August 18, 2005

Spam Comment Club Memebership?

It looks like I’ve joined the “Spam Comment club”

I’m starting to get comments that appear to me to be spam. Comments from “Anonymous” that are off topic and are just links to other non-related sites... (If it looks and smells like spam then it probably is...)

sigh...

And there’s little I can do with Blogger’s comment system. Either turn off comments or turn off anonymous comments. I really don’t want to force people to register with Blogger just to comment on my blog. Seems like a little overkill, doesn’t it?

And I don’t want to turn off comments all together. I’ve received just too many great comments from people to just turn them off.

I guess the best solution is to bug Blogger to providing better “are you a human” checking...

Blogger already has the common anti-spam stuff in place, so I’m not sure what value there is to the spammers. [long sigh...]

So far it’s manageable and I’m killing them as they get posted, but this is one club I’d rather not have joined....

Wednesday, August 17, 2005

10 mph - Segway Across America ...

10 mph : Segway : America Dream : Documentary

"The film: 10 mph

Two guys quit stodgy corporate jobs, scrounged up all the savings they could, collected credit cards, and stepped - or better yet - scooted forward to follow their biggest dream: to become filmmakers. Josh Caldwell rode a Segway from Seattle to Boston, while his buddy Hunter Weeks directed a film they both shot about the experience and about the moments leading up to this crazy twist on the American road trip. From cubicle farms to the open road, the film will chronicle how these guys ultimately changed their lives forever. They did what so many of us have always wanted to do - gave it all up for the passion inside."


The end of the trailer made me laugh... 10 Miles per Hour indeed.

I'd watch this. Heck, I might even pay money to see it (yeah I know, "omg"). A positive, there IS hope, message film would be smack on target right now...

(via Gizmodo - 10MPH - Next: Travels With Aibo)

Modifying the Horizontal Navigation Bar in WSS

Modifying the Horizontal Navigation Bar in WSS

"Ever wonder what you can do with the horizontal navigation bar in a WSS site? Yeah, keeps me up at night too. There are two ways to modify it:

Modify it using a custom site definition via the ONET.XML file
Crack open the site in FrontPage 2003 and modify it that way

Both are valid and I'll leave the modification to ONET.XML for another day. Here's a visual walkthrough of how you can change it with FrontPage and about 5 minutes of your precious time. ..."


This is a cool walkthrough on how to change SharePoint's top horizontal navigation bar.

Tuesday, August 16, 2005

Enumerating Managed Processes With .Net 2.0 and the MdbgCore.dll Assembly

Inside and Out... : Enumerating Managed Processes

"System.Diagnostics.Process class is a managed wrap over a subset of the ToolHelp API - as it enumerates only the process list. Not only that, it will list all the running processes, irrespective of whether they are running unmanaged code or running managed code. What if you wish to identify which of these processes are running managed code?

Unfortunately, neither the ToolHelp API, nor the Process class allow us to identify managed processes from the list they provide us. ...

The same identification can now also be done using managed code. Under %SDKRoot%\v2.0\bin folder, you will find, amongst others, MdbgCore.dll - the core of the managed debugger. If you ILASM this file (yes, its an assembly), you will see the managed wraps of the unmanaged interfaces mentioned above ...

The starting point is Microsoft.Samples.Debugging.CorPublish.CorPublish. This lets us enumerate the managed processes, returning an instance of Microsoft.Samples.Debugging.CorPublish.CorPublishProcess type. Below is a sample that exemplifies doing the same ..."


I saw this and thought it was pretty nifty...

COME ON 11/7, hurry up and get here...

Free Blogger for Word Add-In

Blogger: Download Blogger for Word

"Now you can use Blogger right within Microsoft Word. Just download and install the Blogger for Word add-in and a Blogger toolbar will be added to Word allowing you to:

Publish to your blog
Save drafts
Edit posts "

About Blogger for Word

"Blogger for Word is a free add-in for Microsoft Word that lets you save a Word document as a post to your Blogger blog with just a few clicks, and without even opening up a browser. Blogger for Word makes it even easier to express yourself online, save your documents to the web, and edit your work both online and off.

With Blogger for Word, publishing a Word document to your blog is just as seamless as saving it to your computer, and it's easy to get started; all you need to do is download and install the Blogger for Word add-in, and three buttons appear in your Word toolbar:

Publish creates and publishes a new post from the text in your document.
Open Post enables you to edit your last 15 Blogger posts in Word.
Save as Draft enables you to keep a post unpublished; it will appear in your Blogger account, but not publicly on your blog."

Now that's pretty interesting (for Blogger users like me at least).

Downloaded and installed.

Wonder if it will make posting images/pictures a little easier (Doesn't sound like it, given the "publishes a new post from the text in your document" statement)? Well I guess I'll give it a try anyway...    

Update #1 8/16/2005 1:35:46 PM (PDT):
I’m editing this now in Word (after originally posting it with the Blogger Blog This tool).

Now to insert an image... What to insert...hum..

How about a picture of our new, “You’re not to bring home any more cats” kitten!
(image placeholder)

(sigh... Nope. Warning dialog with “Images and Document Tables are not currently supported”).


Update #2 8/16/2005 1:40 PM (PDT):

Here's the pic anyway...

Printer Queue Monitoring via VB.NET and Windows/Winspool.drv API

The Code Project - How to monitor a printer queue from VB.NET - VB.NET

"Although the VB.NET printer handling has improved immeasurably over that offered by Visual Basic 6 there is still a need to turn to the Windows API in order to monitor a print queue. ..."

A nice example on how to monitor Print Queues from VB.NET using API calls.

I'm doing this in VB6 now, but will be moving this to .Net soon, so this info might come in handy.

Another approach is to use WMI. Sometimes though, depending on the printer driver, I've run into problems using WMI. So the fall-back is to use the API...

Monday, August 15, 2005

The Secret Workings of Jamis Buck's Dungeon Generator

Random Dungeon Design: The Secret Workings of Jamis Buck's Dungeon Generator

"So you've tried my Dungeon Generator once or twice, and it's got you thinking. Perhaps you're a programmer and would like to incorporate similar features in a program of your own. Or maybe you're not a programmer, but would be interested in an overview of how this program works.

Either way, I've been asked how this random dungeon generator works many, many times, and I finally decided that, to save myself time, I'd just put up the description on a web page. ..."

This is a cool article on 2D dungeon auto-generation and population....

(via Jay Miller - Quest Game Engine Update)

Safarp V0.5 (Uber Fast Add/Remove Programs List)

The Portable Freeware Collection

"... Safarp displays the list of installed programs and allows you to repair/uninstall them. You can also remove orphaned/obsolete entries, or export the program list to a variety of report formats.

Two reasons why you should use Safarp instead of the default applet: it loads much faster (even when you have tons of installed application like I do), and it allows you to quickly located installed application by typing the first letter of its name (a major gripe I have with the default applet due to its usage of a non-standard listview control). ..."


Wow, it really DOES load fast. I mean really fast. The EXE is only 48K and runs without needing to be installed.

I've not yet used it to uninstall anything, but I don't expect to have any problems when I do (then again, I've said that before... ;).

With this, hopefully I'll never have to return to the painfully slow Add/Remove Programs Applet ever again...

Sunday, August 14, 2005

Universal Studio "We Were There" Pictures

As promised, here are a few pic's from our recent Universal Studio VIP trip.

Mike, our guide, inside our Motor Unit.


Inside the Crossing Jordan sound stage.


Prop body in the Crossing Jordan sound stage.


We wave at the poor suckers on the normal Studio Tour tram as they drive by...


Our Motor Unit... Our group only filled it by about 1/3...


Back to the Future set, Now rebuilt for another show


Inside the Prop Warehouse


Still in the Prop Warehouse. We got "in trouble" cause we were lagging behind checking everything out.. doh!


Jaws...


War of the Worlds set


Waterworld Show


And finally our happy family at the end of the day.

IIS Admin Objects/IIS ADSI/IIS WMI Providers (IIsWebFile)

David Wang : HOWTO: Use IIsWebFile to fine grain control IIS behavior

"A relatively unknown and unadvertised behavior of IIS is that its features are often more granular than exposed via the IIS Manager UI. In other words, the UI constrains you to a pre-determined set of supported and often-used scenarios, both for your safety (remember, we actually want to allow non-admins to use IIS) and ours.

However, if you really understand IIS behavior and configuration, you can take on some 'extra' responsibility and do some nifty and non-obvious things...

Question:
Is it possible to implement in SSL in specific web page. Can you give a details or example.. Is really require separate virtual directory for secured and unsecured pages.

Answer:
Yes, it is absolutely possible to mix secured and unsecured pages within the same virtual directory.
The IIS configuration concept which supports this is called IIsWebFile. ..."


I've seen this before, but it never really clicked. Wow, the IIS Admin Objects/IIS ADSI/IIS WMI Providers are pretty cool. We don't need no stinking MMC console... ;)