
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