
I particularly liked the definition (straight from the dictionary), the philosophy (and contextualizing with the building architecture evolution), and a very nice tool which I have to try one of this days, Simon Tool.
The Mythical Man-Month: Essays on Software Engineering is a book on software project management by Fred Brooks, whose central theme is that "Adding manpower to a late software project makes it later." This idea is known as Brooks' law, and is presented along with the second-system effect and advocacy of prototyping. The work was first published in 1975, and republished as an anniversary edition in 1995 (ISBN 0-201-83595-9) with the essay No Silver Bullet and commentary by the author.
Anyway I've run through a conversion and it worked a treat. I used the 'Dugie-thumb-in-the-air' guide below:
- 'Scrub' the VMware Image using the first half of that very fine guide from Chris Wolf over at SearchServerVirtualization.com
- Use VMDK2VHD to convert the VMDK virtual disk to to a VHD
- Create a new VMC with roughly the same hardware (IDE drives, etc, etc) in Virtual PC 2007
- Attach your newly created and converted VHD
- Power up you new VMC, login and wait (a few minutes) for *all* the new hardware to be detected
- I clicked cancel to the new hardware driver wizard
- I also clicked no to the reboot - hey livin on the edge here
- Install the Virtual Machine additions (v13.724)
- Reboot
- Let the hardware wizard run
- Tada!
The VMDK was 1,986 Mb and it converted to a 2,001 Mb VHD in about 15 minutes on my aging T41p laptop.
Overall with VM reboots, coffee, etc, etc the whole conversion took about 40 minutes (I really should have done a screen cast of the whole process!?)
Rake is a build language, similar in purpose to make and ant. Like make and
ant it's a Domain Specific Language, unlike those two it's an internal DSL programmed in the Ruby language. In this article I introduce rake and describe some interesting things that came out of my use of rake to build this web site: dependency models, synthesized tasks, custom build routines and debugging the build script.
Very interesting from the DSL perspective. Hope I will never have to use it :)
More than a year after the release of Visual Studio 2005, Microsoft has finished VS 2005 SP 1. The service pack addresses issues Microsoft discovered through both internal testing and customer feedback.
In all, there are more than 70 enhancements, ranging from support for mobile devices and the SQL Sever Compact Edition to integration with Excel 2007 and Project 2007. In addition, the service pack includes the Web Application Project, which is a previously released tool for migrating Web apps from ASP.NET 1.x to ASP.NET 2.0.
Three service packs are available now:
- Visual Studio 2005 Team Suite SP1 -- This edition covers the standard, professional and team versions of Visual Studio 2005.
- Visual Studio 2005 Team Foundation Server SP1
- Visual Studio 2005 Express Editions SP1 -- Separate downloads are available for the five free versions of Visual Studio 2005: Visual Basic, Visual C++, Visual C#, J# and Web Dev.
Finally, there is a Visual Studio 2005 SP1 Update for Windows Vista Beta. This service pack, aimed at developers using VS 2005 in conjunction with Vista, will officially ship after the new operating system ships in early 2007.
Microsoft Dynamics CRM 3.0 VPC , 3.2Gb Internet Explorer 6 Application Compatibility VPC Image , 495Mb Orcas - September Community Technology Preview (CTP) , 3.6Gb Visual Studio 2005 Team System Basics Training , 5.2Gb SQL Server 2005 TD VHD 2.4Gb Windows Server 2003 R2 TD VHD 1.4 Gb ISA Server 2006 TD VHD 1.5 Gb Exchange Server 2007 TD VHD 1.4
The article end with this funny statement:"In my view, we lost our way," Allchin, the co-president of Microsoft's platform and services division, wrote in an e-mail dated Jan. 7, 2004. The e-mail was presented as evidence late last week in the Iowa antitrust trial, Comes v. Microsoft Corp.
"I think our teams lost sight of what bug-free means, what resilience means, what full scenarios mean, what security means, what performance means, how important current applications are, and really understanding what the most important problems our customers face are. I see lots of random features and some great vision, but that does not translate into great products."
Conlin also presented evidence of a job description for Bill Gates' technical assistant, whose primary duty was to make sure no permanent record of Gates' e-mail existed, Conlin said, according to transcripts.
Well, maybe Microsoft's success is based on this actions: when pushed, they react and respond like hell breaking loose!... And so the Linux threat seems under control. But watch out for Apple...
'When you ask why people like dynamic language, people often say it's because [they] have to write less or because it’s terser or succinct and you try and dig a little bit…and often one of the reasons that gets cited is there are no types there, and therefore types get in the way. We all know that strong typing is a sort of a lever. And the further you dial it up the more painful it gets.'
'However, one of the things that we are learning a lot from functional programming languages is in the area of type inference. It is one of those … 'have your cake and eat it too' kind of things. It is actually strongly typed'
'When types are gone, there are just a lot of things a tool can no longer do for you,'' Hejlsberg advised, adding that his approach was to look for ''the happy medium.'
PARIS — Dec. 11, 2006 — Microsoft Corp. and McLaren Electronic Systems (MES) today formally announced that they are to be the official suppliers of engine control units (ECUs) to the Fédèration Internationale de l’Automobile (FIA) Formula One World Championship for the 2008, 2009 and 2010 racing seasons.
NDAS = coolVersionForThePoor (
iSCSI = (
coolVersionForThePoor (SAN)
)
);
NDAS system
NAS system
Next generation advanced technology
Based on old technology (PC file sharing)
Higher performance (up to 6 times faster)
Lower and limited performance
RAID, Aggregation, Mirroring, unlimited expansion
Not possible between multiple NAS systems
Simple, easy, no need IP setting
Complex, difficult, IP setting, DHCP setting required
Strong security (Limited to local network, safe from internet hacking)
Weak security (Open to the Internet)
Block level storage (user has full control of storage)
Folder sharing (users can not format, partition or choose other file systems, etc.)
Multimedia application, most suitable for
multi-media
Can not support enough performance for multimedia
Consumer electronics compatibility
More difficult to use with consumer electronics
Cost-effective, simple structure, fewer sources of problems
High cost, complex structure, more sources of problems
Will we finally have a decent scripting language on our browsers?
The latest release of Script# (0.2.0.0), also published today, contains a code-behind model that allows me to add c# code-behind to a page, and have that converted into script. I'll blog more about that in the coming days, but this post is mostly about WPF/E.
Here is a portion of my Scriptlet class, which contains c# code-behind for the page. The code in bold shows the scriptlet instantiating a WPF/E plugin instance with some XAML markup.
using System;
using System.DHTML;
using System.WPFE;
using ScriptFX.UI;
namespace PhotoViewer {
public sealed class PhotoViewerScriptlet : IDisposable {
private PhotoViewerControl _photoViewerControl;
...
public static void Main(Dictionary arguments) {
PhotoViewerScriptlet scriptlet = new PhotoViewerScriptlet(arguments);
}
private PhotoViewerScriptlet(Dictionary arguments) {
...
Button searchButton = new Button((DOMElement)arguments["SearchButtonElement"]);
searchButton.Click += OnSearchLinkClick;
WPFEPlayer player =
WPFEFactory.CreateWPFEPlayer((string)arguments["ID"],
(DOMElement)arguments["ParentElement"],
(string)arguments["MarkupURL"],
"Black", /* windowLess */ true);
_photoViewerControl =
new PhotoViewerControl(player, (string)arguments["FlickrKey"]);
...
}
private void OnSearchLinkClick(object sender, EventArgs e) {
string[] tags = _tagsTextBox.Text.Trim().Split(' ');
_photoViewerControl.Start(tags);
}
...
}
}And here is some code from the PhotoViewerControl that wraps the WPF/E plugin and implements the functionality to make requests to Flickr and progress the presentation from one photo to the next.
internal sealed class PhotoViewerControl : IDisposable {
private WPFEPlayer _player;
private string _flickrKey;
private Image _photo1;
private TextBlock _title1;
private Storyboard _storyboard1;
private HTTPRequest _request;
private Photo[] _photos;
private int _nextPhoto1;
public PhotoViewerControl(WPFEPlayer player, string flickrKey) {
_player = player;
_flickrKey = flickrKey;
}
public void Initialize() {
_photo1 = (Image)_player.FindName("image1");
_title1 = (TextBlock)_player.FindName("title1");
_storyboard1 = (Storyboard)_player.FindName("storyboard1");
...
}
public void Start(string[] tags) {
Dictionary scriptTransportParams = new Dictionary();
scriptTransportParams["callbackParameterName"] = "jsoncallback";
string uri = String.Format(FlickrSearchURLFormat, _flickrKey, tags.Join("+"));
uri = HTTPTransport.CreateURI(uri, typeof(ScriptTransport), scriptTransportParams);
_request = HTTPRequest.CreateRequest(uri, HTTPVerb.GET);
_request.Invoke(OnRequestComplete, null);
}
private void OnRequestComplete(HTTPRequest request, object userContext) {
IHTTPResponse response = request.Response;
if (response.StatusCode == HTTPStatusCode.OK) {
PhotoSearchResponse searchResponse = (PhotoSearchResponse)response.GetObject();
_photos = searchResponse.photos.photo;
StartInternal();
}
}
private static string CreateFlickrPhotoURL(Photo photo) {
return String.Format(FlickrPhotoURLFormat, photo.server, photo.id, photo.secret);
}
private void ShowFirstPhoto() {
_photo1.Source = CreateFlickrPhotoURL(_photos[_nextPhoto1]);
_title1.Text = _photos[_nextPhoto1].title;
Window.SetTimeout(StartFirstTimeline, 1000);
_nextPhoto1 += 2;
if (_nextPhoto1 >= _photos.Length) {
_nextPhoto1 = 0;
}
}
private void StartInternal() {
_nextPhoto1 = 0;
ShowFirstPhoto();
Window.SetTimeout(ShowSecondPhoto, 8000);
}
private void StartFirstTimeline() {
_storyboard1.Begin();
Window.SetTimeout(ShowFirstPhoto, 14000);
}
...
}One other thing to observe in the sample... the sample makes requests to the Flickr service directly without going through a server-side proxy. To make these cross-domain calls successfully, It uses
<script>tags rather than XMLHttp to work against Flickr, and uses the JSONP support provided by the service. Script# provides a mechanism to work against this protocol transparently by hiding away the plumbing in the ScriptTransport class that is referenced in the code above. If this is of interest, drop me a comment, and I'll blog about it further.The sample is packaged into the Script# msi that you can download to delve into the code. In addition to this sample, the msi contains the Script# compiler, and various other samples. There is also a document with a how-to guide on using Script# with a lot of new content, that should help you get up and running using the installed project templates.
Microsoft has announced a new web site for database administrators and developers called SQL Server - Best Practices. This site offers a wide range of material from top 10 lists suitable for novices to the in-depth technical white papers needed by seasoned professionals.
in: infoq.com
Working with Team Foundation Server we have to perform various repeating task related to user declaration and permission setting. I already wrote about TFS permission and tools. Managing permissions is complicated, and from time to time quite frustrating. I've decided that it would be a better use of my time to assemble such a tool than just manually applying permissions again and again...
Tool | Summary | Where to get it | Links |
CLR Profiler | Easy way to measure memory performance for managed apps. | Download for .NET 2.0, .NET 1.1 | Tutorial |
Perf Console | Awesome for analyzing performance issues for apps. This makes perf analysis surprisingly easy to do and is perfect for the non-perf person. | Download | Demo, details |
Power Shell | A shell scripting language that's infinitely better than batch files. | Download | Tutorial, Blog, MSDN |
Iron Python | Python on .NET | See link on homepage. Source code | Homepage, Tutorial included in download. |
MS Build | Way better than NMake. | Included in .NET redist. | Tutorial, Blog, Forum |
MDbg | Managed wrappers for debugging managed apps. | Download (Also in the SDK) | Forum, Other Links |
TeamWord is add-in created with .NET 2.0 for Microsoft Word 2003 to enable users (analytics, programmers, project managers etc.) that use Microsoft Team Foundation Server for work item tracking to use Word as the front-end for editing work items. TeamWord allows user to insert work item directly in an existing document, thus allowing tracking work item status from the place of their origin.
For example - when writing a meeting summary, you can add a work item for each problem, each of it in a different Team Project, assign these work items to the corresponding persons etc. And after that, to see if everything has been done, you don’t have to open up Team Explorer or other application - just open the same Word document and it will load all information for these work items right back in your document.
LINQ is divine but DLINQ is a delinquent. It gives programmers too much power and makes programming against data way too easy. Is nothing sacred anymore?
In the past few years there's been a strong fashion for writing self-testing code. Despite being the last person to ask about fashion sense, this is a movement that I'm thoroughly immersed in. Many of my colleagues are big fans of xUnit frameworks, automated regression tests, Test-Driven Development, Continuous Integration and similar buzzwords.When people talk about self-testing code user-interfaces quickly raise their head as a problem. Many people find that testing GUIs to be somewhere between tough and impossible. This is largely because UIs are tightly coupled into the overall UI environment and difficult to tease apart and test in pieces.
Sometimes this test difficulty is over-stated. You can often get surprisingly far by creating widgets and manipulating them in test code. But there are occasions where this is impossible, you miss important interactions, there are threading issues, and the tests are too slow to run.
As a result there's been a steady movement to design UIs in such a way that minimizes the behavior in objects that are awkward to test. Michael Feathers crisply summed up this approach in The Humble Dialog Box. Gerard Meszaros generalized this notion to idea of a Humble Object - any object that is difficult to test should have minimal behavior. That way if we are unable to include it in our test suites we minimize the chances of an undetected failure.
The Humble Dialog Box paper uses a presenter, but in a much deeper way than the original MVP. Not just does the presenter decide how to react to user events, it also handles the population of data in the UI widgets themselves. As a result the widgets no longer have, nor need, visibility to the model; they form a Passive View, manipulated by the presenter.
This isn't the only way to make the UI humble. Another approach is to use Presentation Model, although then you do need a bit more behavior in the widgets, enough for the widgets to know how to map themselves to the Presentation Model.
The key to both approaches is that by testing the presenter or by testing the presentation model, you test most of the risk of the UI without having to touch the hard-to-test widgets.
With Presentation Model you do this by having all the actual decision making made by the Presentation Model. All user events and display logic is routed to the Presentation Model, so that all the widgets have to do is map themselves to properties of the Presentation Model. You can then test most of the behavior of the Presentation Model without any widgets being present - the only remaining risk lies in the widget mapping. Provided that this is simple you can live with not testing it. In this case the screen isn't quite as humble as with the Passive View approach, but the difference is small.
Since Passive View makes the widgets entirely humble, without even a mapping present, Passive View eliminates even the small risk present with Presentation Model. The cost however is that you need a Test Double to mimic the screen during your test runs - which is extra machinery you need to build.
A similar trade-off exists with Supervising Controller. Having the view do simple mappings introduces some risk but with the benefit (as with Presentation Model) of being able to specify simple mapping declaratively. Mappings will tend to be smaller for Supervising Controller than for Presentation Model as even complex updates will be determined by the Presentation Model and mapped, while a Supervising Controller will manipulate the widgets for complex cases without any mapping involved.
... Many people in those days considered it impractical to use a virtual machine. I wonder what our prior selves would have thought to see me running Smalltalk 80 in a virtual machine written in VisualWorks running in the VisualWorks virtual machine on Windows XP running in a VMware virtual machine running on Ubuntu.
If you're preparing to reinstall Microsoft Windows or Microsoft Office you will need to locate your copy of the software's product key (CD key). Normally this product key is located with the manual or CD that came with your software.
If you've lost your product key you can often times find it in the registry but this can be very difficult to impossible to retrieve manually. Luckily, there are many free key finder programs available to help.
Below are the top 3 free key finder programs.
1) Magical Jelly Bean Keyfinder
The Magical Jelly Bean Keyfinder program is a free utility that retrieves product keys from the registry. It also has the ability to change the product key for the Windows XP operating system if need be.
Advantages include very small size, ease of use, no installation required, instant display of product keys and multiple product key saving options.
Finds Keys for Operating Systems: Microsoft Windows 95, Windows 98, Windows ME, Windows NT4, Windows 2000, Windows XP, Windows Server 2003 and Windows Vista.
Finds Keys for Other Software: Microsoft Office 97, Office XP and Office 2003.
2) WinKeyFinder
The WinKeyFinder program is another free utility that retrieves product keys from the Windows registry.
Advantages include small program size, no installation required, and additional features such as a password generator and registered user information.
Finds Keys for Operating Systems: Microsoft Windows 98, Windows ME, Windows 2000, Windows XP and Windows Server 2003.
Finds Keys for Other Software: Microsoft Office 97, Office 2000, Office XP and Office 2003.
3) RockXP
RockXP is another free program that retrieves lost product keys from the registry.
Advantages include small program size, no installation required, and additional features such as a password generator and password retriever.
Finds Keys for Operating Systems: Microsoft Windows XP.
Finds Keys for Other Software: Microsoft Office 2003.
10. IT finally admits that there is no silver bullet. Every year I hope to see this happen and every year my hopes are crushed by buzz-word of the minute hype machines. Hey I can dream, can’t I?
Yes, I know, this is one of those articles that surely will make many people angry.
For years I want to stop seeing so much SQL in the applications I architect!
Why? Because I believe that DBAs are too much a limited and expensive resource to use for most of our application design. And because SQL by itself doesn't promote strongly typing, or Intellisense discoverability. Among others.
And so I'm a firm believer on ORMs. More, I believe that the problems stated in the The Vietnam of Computer Science will be largely surpassed by the benefits it brings - even before the arrival of the LINQ initiative.
So I keep dreaming on applications where only 5% of the relational algebra is made in SQL - 0% in the long term. And the dream is feasible for most of my application. Except for the #&%$"&%$# most applications must have: the migration!
Yes, for the migration we still must depend heavily on SQL. When the ORM war is over, we'll still have this one to battle.
And even those are nothing but intermediate steps on a much broader roadmap. But that's a story for a future posting...
A new MOSS community is born, the Comunidade MOSS Portuguesa (MOSS Portuguese Community) is created with the objective of providing MOSS articles, opinions and contents in Portuguese.
The blog is divided in 4 main categories:
The founders are my good friends Ricardo Magalhães and Bruno Valente, from Link Consulting and Microsoft Portugal.
We [they] are pleased to announce the release of SDLC-in-a-Box version 2.0! With more than 75 partners in over 10 countries already signed up, we are excited about partners being more prepared than ever to deliver Visual Studio Team System deep-dive and implementation training for customers. We encourage you to visit the site, become familiar with the program, and engage your Microsoft account team and Training or Consulting Partner to begin the Application Lifecycle Management assessment within your own organization. If you are a partner, sign up now, download SDLC-in-a-Box, and start training now!
#
# start VPN
#
RASDIAL "myVPN"
#
# get my VPN IP
#
$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" -computername .
$myIP = ""
foreach ($objItem in $colItems)
{
if ($objItem.Description -like "*PPP*")
{
$myIP = $objItem.IPAddress
}
}
write-host "my IP: " $myIP
#
# establish necessary manual routing
#
route add mySubnet0MASK 255.255.255.0 $myIP mySubnet1
route addmySubnet2 MASK 255.255.255.0 $myIP
route addMASK 255.255.255.0 $myIP
The Analysis
The following analysis is of the Enterprise Library deployment in both a 32-bit (2 and 4 processor) and 64-bit (2 and 4 processor) environment and examines their relative performance to a 32-bit 2 processor server. To get a realistic comparison to measure since the 32-bit and 64-bit worlds have differences, the setups used were designed to be as equivalent as possible. The goal was to obtain the relative performance measurements of the Enterprise Library Logging Application Block, Caching Application Block, Data Access Application Block and the scalability from going from a 2 to a 4 bit processor arrangement in each environment. The various configurations and measurement results are below.
Some Fast Answers
- Q: How long did it take to convert Enterprise Library from 32 bit to 64 bit?
- A: None, since the .NET Framework uses an intermediate language which is processor independent and uses a just-in-time compiler to convert it to machine code as required by the deployment environment. So it's not a recompile—rather just run it on a 64-bit .NET-based machine—although, there can be specific issues see the section "Moving to the 64-Bit World."
- Q: Does the Enterprise Library scale?
- A: Yes, the results show a 50 to 70 % gain in the tested scenarios going from a 2 to 4 processor environment regardless if it's 32 bit or 64 bit, see section 4 for details.
- Q: What are the gains in going 64 bit?
- A: Scabililty, see section "Scabililty View of the Caching Block" for details
The ASP.NET 2.0 Starter Kits for Visual Web Developer are fully functional sample applications to help you learn ASP.NET 2.0 and accomplish common Web development scenarios. Each sample is complete and well-documented so that you can use the code to kick start your Web projects today!
These kits, once downloaded are integrated directly into the Visual Web Developer 2005 Express Edition or Visual Studio 2005 experience. After downloading and installing the starter kits, please provide feedback on the ASP.NET forums.
The Small Business Starter Kit provides a sample of a business promotion website suitable for small and medium-sized businesses. It provides a template for customizing and creating a site for your own business out-of-the-box, with advanced features including integration with SQL and XML data sources for content and data management.
A typical personal site that includes a photo album system. Also included are static pages for a resume and links. Comes in your choice of white or black... just change the theme!
» Download the Personal Web Site Starter Kit
Administrator login:
Username: Admin
Password: 1.admin.1
Member login:
Username: Friend
Password: 1.friend.1
A starting point for creating a web site for your club or organization. Includes a news posting, calendaring, member directory, and photo album systems. Create news announcements and news articles with photos or links to a photo album. Create and view Membership lists of club members. Create photo albums and share the photos from your club activities.
» Download the Club Web Site Starter Kit
Administrator login:
Username: Admin
Password: 1.admin.1
Update!
Visit the By the Community, For the Community page and view the Extended Club Site Starter Kit created by Brendon Schwartz.
A business web application for keeping track of hours spent on a project with the ability to handle multiple resources as well as multiple projects.
» Download the Time Tracker Starter Kit
Manager login:
Username: Manager
Password: 1.manager.1
Consultant login:
Username: Consultant
Password: 1.consultant.1
TheBeerHouse starter kit enables you to implement a website with functionality typically associated with a
The PayPal-enabled eCommerce Starter Kit is an extensible open source web application that allows you to setup and manage your own ecommerce Web site.
DotNetNuke is a Web Application Framework ideal for creating and deploying projects such as commercial web sites, corporate intranets and extranets, online publishing portals, and custom vertical applications.
Job Site Starter Kit is a web application that provides a platform for candidates seeking job and the employers to share their needs. The starter kit demonstrates many new features of ASP.NET 2.0 including themes, master pages, new data controls, membership, roles and profiles