Just sharing some of my inconsequential lunch conversations with you... RSS  

Friday, December 29, 2006

The role of software architect

After a very interesting debate over the role of software architecture over lunch, where we compared it against the role of the building architect, I friend of mine sent me this link: Worldwide Institute of Software Architecture.

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.

Thursday, December 28, 2006

How often our predictions fail..

A long time ago, when I was still in college back in the late 80's, early 90's, I firmly believed that the relational database would lost their market share in the year 2000, and the object persistence models (like db4o) and the rest of the object oriented databases family would naturally take their place.

I was obviously wrong. No mater how much we know about the ORM dificulties, we are still using the relational paradigm. And quit rightly, because it as been proven to work. And maybe because we are used to those...

I also failed in the following predictions for the end of the century:

  • "in the early 90s, I predicted the fax would not make it to the 2oth century";
  • "in the early 90s, I predicted voice would be only transported over data channels until the end of the century".
Man, was I wrong :)

Tuesday, December 26, 2006

Enterprise Library for .NET Framework 3.0

Here's P&P Christmas gift for the geeks: a partial implementation of the Validation Application Block, Application Block Software Factory, Visual Studio-integrated config tool, DAAB enhancements and more.

Thursday, December 21, 2006

Frequently Asked Questions About the Home Use Program available to qualifying Microsoft Volume Licensing customers

The Home Use Program is a benefit of Software Assurance, one of Microsoft’s volume licensing programs. It provides a simple way for employers to enable employees to work at home with the same Microsoft® products they use at work.

Answers to frequently asked questions about the Home Use Program available to qualifying Microsoft Volume Licensing customers.


REF: "Google kills SOAP!"

Vasters posted a very interesting article about the Google search API change. Rather than observing from the technological view, he rather analyze it by the business side.

Tuesday, December 19, 2006

The Mythical Man-Month

I'm revisiting an old friend of ours, The Mythical Man-Month.

From wikipedia:

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.

I'm recovering this old issue after earing a podcast (from DotnetRocks, if I remember), where this concept was very well illustrated as: "9 women can't make a baby in 1 month".

Now seriously, I should now explain why this article is labeled as "architecture": it's because one of the goals we should pursuit when architecting and choosing methodologies should be the contention of the mythical man-month issue.

Monday, December 18, 2006

Where's i-Technology Headed in 2007, Java people say?

Here are the trends, as Java people see it.

Some of my references and comments:

  • 'A slowdown in the AJAX hype': yeap!
  • 'The open-sourcing of Java will have no effect whatsoever on Java's slow decline in favor of dynamic languages (Ruby, Python) and C#'. More, I don't think there will be as many defections from C# to the dynamic languages, as from Java.
  • 'IE 7 will have a fast adoption curve and so Firefox will cease gaining market share' - Yeap.
  • 'IT finally admits that there is no silver bullet'. Eh, eh, eh, I agree. But I must confess, I was once young and I did believe on new silver bullets every year.
  • 'The enterprise will embrace ways to simplify development by continuing to embrace open source software and Agile Development strategies'. Yeap, not in a "all I need is open source", but more like "open source has it's place". As most definitely, alse Agile development strategies!
  • 'Dynamic languages and frameworks will continue to make leaps in popularity and adoption. Given the current squeeze on technology talent in the US, companies are going to have to learn how to do more with fewer resources. Moving to dynamic languages and frameworks as well as other simplification such as varying Agile software development practices will enable this to take place.' This is the american development community response to foreign outsourcing. And this is the way to go - I'm only sorry that this was not the answer for many people when their jobs weren't at risk...

VMware to Microsoft Virtual Machine Conversion

Here is a pretty little tool: VMDK(VMWare) to VHD Converter.


From bink.nu:

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!?)

REF: Using the Rake Build Language

Despite my visceral hate for languages like Ruby, here is an good example of (internal) DSL usage, from Fowler's site:

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 :)

Visual Studio 2005 Service Pack 1 now available

I know, this is old news from last friday, but I've only read it now. Here's the reference from theserverside.net, and my personal comment: Visual Studio 2005 Team Suite SP1 is 431MB! Is this a reasonable size for an SP?!?!

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:

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.

[updated]
If you're having trouble installing SP1, please check out this link.

Tuesday, December 12, 2006

Windows development chief: 'I would buy a Mac if I didn't work for Microsoft'

And you would be very well served, it's a beautiful OS. But so is XP and Vista. And Linux. If I had James Allchin 's budget, I would get a bunch of different OSs, and installed them on a bunch of machines.

But that's not the issue. According to this article, Allchin was caught with is pants down on his mails.

"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."

The article end with this funny statement:
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...


[update] Allchin Explains the "Buy a Mac" Statement

Anders Hejlsberg on dynamic/static religious wars

Hejlsberg in his best:

'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.'

I couldn't agree more!

Monday, December 11, 2006

REF: Lambda expressions explained like nowhere else!

B# .NET has posted a great article about lambda expressions, and a real case of usage evolution. The goal is to eliminate noise using a feature in C# 3.0, based on functional programming concepts (lambda calculus).

Check out the rest of the series:

Title: C# 3.0 Feature Focus - Part 1 - Local Type Inference
Title: C# 3.0 Feature Focus - Part 2 - Object Initializers
Title: C# 3.0 Feature Focus - Part 3 - Collection Initializers
Title: C# 3.0 Feature Focus - Part 4 - Extension Methods

Microsoft and McLaren Electronic Systems Win Race to Provide Electronic Technology to the FIA Formula One World Championship

Yeap, it looks like crazy, but the ECUs in F1 cars will be shipped by Microsoft.

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.


Ok, this is not the NT kernel that will ship in the ECUs, and yes, it's probably a marketing operation, but one thing's for sure: slowly but steadily, the market in recognizing Microsoft's ability to ship quality products and services. It's about time. Good for you, Microsoft.

PS: ok, Microsoft still ships lots of crappy products, the question is: who doesn't?...

Saturday, December 09, 2006

NDAS - 2ª generation of great technology for the poor

Some days ago I stumbled upon this cool technology: NDAS (Network Direct Attached Storage) is Ximeta's patented technology which enables all digital storage devices(HDD, ODD, Memory, Tape Drives) direct connection into standard Ethernet networks. All users or systems on the network can directly control, use and share those devices.

I can't help seeing NDAS as:

 NDAS = coolVersionForThePoor (
iSCSI = (
coolVersionForThePoor (SAN)
)
);


Comparing NDAS to NAS, Ximeta got something like:


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


Cool, hum? I particulary liked the block level storage - wouldn't it be cool to have a bunch of this drives in RAID0 serving for SQL Server or Oracle storage over a Gigabit LAN? And pay €179 for a 400GB storage facility?

Peaty this is a propriety solution, not an open and supported one. Maybe one day...

How the solution will be based on solutions, not projects

I've started my career doing projects for a year or so. Then I switched to products for some years. Then back to projects. And again to products. And I'm currently back on projects. Do you notice a trend, or just an inconsistent career?

Now seriously, as so many things in live, the trends come tend to be circular. And we all have experience the cycle:

  • a) this is the way to go, let's just use/build a product
  • b) oops, the product customization is harder then we thought
  • c) arghh, I'll never choose a product as long as I live
  • d) projects are just too expensive, why not give products a chance?
Though circular, my opinion is that the cycle's trend tend to the product side. And the balance will finally start favoring product with the SaaS trend we are experiencing. After Salesforce success, Microsoft is jumping over the SaaS market with the Office Live, a small business web site (external) and collaborative (internal) service. The SaaS rush will finally start!

Even the information systems will soon be implemented over solutions, not as custom-from-ground-up projects. And they won't be implemented by consultants, but by the business people - well, the very geek business people, but nevertheless, business people. And yes, one of the greater problem we have, the extraction of business processes will finally go away! But then so will our most of our jobs, won't they?

Wednesday, December 06, 2006

Windows Vista Volume Activation 2.0 Technical Guidance

As much as I agree with stopping piracy, I'm not so sure making Vista VLK hard to install is a good thing for Microsoft. But well, here's the documentation:

  • Volume Activation 2.0 Step by Step Guide - This guide provides planning, deployment and operational guidance for activating volume editions of the Windows Vista operating system.
  • Volume Activation 2.0 FAQ - This document provides answers to frequently asked questions about Windows Vista Volume Activation 2.0.
  • Volume Activation 2.0 Technical Attributes - This spreadsheet lists WMI properties, WMI methods, KMS registry keys and values, KMS log events, KMS error codes and KMS PRC messages.
  • StandardUserProductActivation.zip - This contains the Standard User Product Activation webpage. This webpage is used for simplifying Standard User recovery from Reduced Functionality Mode (RFM). Refer to Volume Activation 2.0 Step-by-Step Guide for instructions.

Sysinternals Suite

Probably not news, but news to me! Sysinternals has a AllInOne download package - they call it suite. Here's the link.

Tuesday, December 05, 2006

REF: Script#

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.


in: nikhilt.net

Monday, December 04, 2006

Flash Killer is on his way - WPF/E

"WPF/E" is the Microsoft solution for delivering rich, cross-platform, interactive experiences including animation, graphics, audio, and video for the Web and beyond. Utilizing a subset of XAML (eXtensible Application Markup Language)-based Windows Presentation Foundation technology, “WPF/E” will enable the creation of content and applications that run within multiple browsers and operating systems (Windows and Macintosh) using Web standards for programmability. Consistent with Web architecture, the XAML markup is programmable using JavaScript and works well with ASP.NET AJAX. Broadly available for customers in the first half of 2007, “WPF/E” experiences will require a lightweight browser plug-in made freely available by Microsoft.

SQL Server Best Practices

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

The Linux Equivalent Project

The goal is to provide an informational and available website for all linux users.

As of today, this is what's loaded:

Windows Software Linux Equivalent
Adobe Audition
Audacity ( http://audacity.sourceforge.net/ )
Adobe Illustrator
Inkscape ( http://www.inkscape.org/ )
Sodipodi ( http://www.sodipodi.com/index.php3 )
Adobe PageMaker
Scribus ( http://www.scribus.net/ )
Adobe PhotoAlbum
F-Spot ( http://f-spot.org/Main_Page )
Adobe Photoshop
GIMP ( http://www.gimp.org/ )
Adobe Premier
LiVES ( http://lives.sourceforge.net/ )
Cinelerra ( http://cvs.cinelerra.org/ )
kdenlive ( http://kdenlive.sourceforge.net/ )
AOL Instant Messenger (AIM)
Kopete ( http://kopete.kde.org/ )
Gaim ( http://gaim.sourceforge.net )
CDex
Sound Juicer ( http://www.burtonini.com/blog/computers/sound-juicer )
Grip ( http://nostatic.org/grip/ )
Dreamweaver
Quanta Plus ( http://quanta.kdewebdev.org/ )
Nvu ( http://www.nvu.com/index.php )
Bluefish ( http://bluefish.openoffice.nl/index.html )
DVDShrink
k9copy ( http://k9copy.sourceforge.net/ )
OGMRip ( http://ogmrip.sourceforge.net/ )
xdvdshrink ( http://dvdshrink.sourceforge.net/ )
qVamps ( http://vamps.sourceforge.net/ )
dvd::rip ( http://www.exit1.org/dvdrip/ )
AcidRip ( http://untrepid.com/acidrip/ )
iTunes
Banshee ( http://banshee-project.org/Main_Page )
Amarok ( http://amarok.kde.org/ )
Microsoft Frontpage
Quanta Plus ( http://quanta.kdewebdev.org/ )
Nvu ( http://www.nvu.com/index.php )
Bluefish ( http://bluefish.openoffice.nl/index.html )
Microsoft HyperTerminal
minicom ( http://alioth.debian.org/projects/minicom/ )
Microsoft Internet Explorer
Firefox ( http://www.mozilla.com/firefox/ )
Microsoft Office
KOffice ( http://www.koffice.org/ )
OpenOffice ( http://www.openoffice.org/ )
Microsoft Windows Media Center
Freevo ( http://freevo.sourceforge.net/ )
Elisa Media Center ( http://www.fluendo.com/elisa/ )
MythTV ( http://www.mythtv.org )
mIRC
BitchX ( http://www.bitchx.org/ )
Xchat ( http://www.xchat.org/ )
ChatZilla! ( http://chatzilla.hacksrus.com/ )
irssi ( http://www.irssi.org/ )
Gaim ( http://gaim.sourceforge.net )
Mp3tag
EasyTAG ( http://easytag.sourceforge.net/ )
Nero Burning Rom
X-CD-Roast ( http://www.xcdroast.org/ )
K3b ( http://www.k3b.org/ )
Notepad
tpad ( http://tclpad.sourceforge.net/ )
Quicken
KMyMoney ( http://kmymoney2.sourceforge.net/ )
GNUcash ( http://www.gnucash.org/ )
Gnofin ( http://gnofin.sourceforge.net/ )
Grisbi ( http://www.grisbi.org/ )
SoulSeek
Nicotine ( http://nicotine.thegraveyard.org/ )
Winamp
mplayer ( http://www.mplayerhq.hu/design7/news.html )
XMMS ( http://www.xmms.org/ )
Windows Movie Maker
LiVES ( http://lives.sourceforge.net/ )
Cinelerra ( http://cvs.cinelerra.org/ )
kdenlive ( http://kdenlive.sourceforge.net/ )
WS_FTP
gFTP ( http://gftp.seul.org/ )
FireFTP ( http://fireftp.mozdev.org/ )

Sunday, December 03, 2006

Management in the Portuguese Public Sector

[This post's addressing is broader to Project Management - I just didn't find necessary to open a 'Management' label.]

My father is taking a course in public administration management. The course is 'FORGEP - Formação em Gestão Pública', targets middle management and consists of:

  • 120 hours of classes
  • 60 hours of e-learning
  • hundred of hours in reading material
  • workgroup projects
  • a final certification exam
The program is very interesting:

1. Ethics, Public Administration and Public Administration Management
2. Leadership and Leadership Management
3. Budget and Resource Management
4. Technological Management
5. Innovation and Quality
6. Internationalization and prospective

I found the course very appealing, and I'm very pleased to find the Portuguese Public Sector is narrowing the gap to us in the private world :)

Good luck for your exam, dad :)

Friday, December 01, 2006

The importance of Project Management Certification

I was just chatting with a customer this morning, an IT department manager on a large portuguese organization, when he mentioned how much he valued the project management certification process that is taking place on another consulting company that is working for them. I was glad to tell him that the consulting company where I work was one of the first ones to certify project managers at APOGEP, and remains one of the top portuguese companies on regard to certified managers.

This was the first time I felt the Project Management Certification was meaningful for a client. There will be a day in the future were Project Management Certification will be a must in most projects, no doubt about it. But after this morning, this day looks a lot closer :)

Development Catharsis :: Copyright 2006 Mário Romano