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

Wednesday, May 30, 2007

Microsoft Surface

Isn't it strange that the readonly monitor + writeonly keyboard and mouse paradigm has not been challenged for so long? Here's the challenge: Microsoft Surface. Minority Reports like.

Here is Bill Gates showing off his expensive table.

Thanks everybody (André Lourenço, Marco Gonçalves and Daniel Gonçalves) for the first links :) Long time since a concept like this generates so much interest in people...

And Mr. Jobs, this is a REALLY re-invention...

Sunday, May 27, 2007

FeedDemon 2.5

After reviewing it for some time, I finally bought a copy of FeedDemon(*), the best reeder you can buy for just $20 (*).

Not a great bunch of new features, but the "popular items" now lists different posts from the 2.1 - hopefully for the best. The "Who's linking me?" seems like a great new feature.

(*) use "likeit" as coupon until the end of this month for a $10 rebate.


Let's face-it: it's just an old idea that failed us too many times, but what the hack: it can help saving our planet :)

Meet zonbu, the new generation of environmentally responsible computing.

My question is: will people pay $12.5/month for a computer that won't play games with you?...

Tuesday, May 22, 2007

Critical Features Cut from Windows Server Virtualization

in: betanews

Yet another cut from a Microsoft product (Windows Server 2008):

  • live migration of running virtual machines between servers;
  • "hot-adds" of virtual components such as storage, processors, and memory; and
  • support for more than 16 logical processing cores.

Well, at least the IIS7 and the "server core" technology is still there...

[Update] "server core" is a Windows 2008 command line installation - no GUI. Yeap, a 1GB reduced surface installation. No, not an anti-Linux, but a Linux humble competitor.

Sunday, May 20, 2007

Watch out for adapter versions

I've recently acquired an old used Linksys WPC54G for my wife's notebook. I've bought it because WPC54g was supposed to be supported by Ubuntu.

After the first problems (WAP just isn't supported without ndiswrapper), I've found the following site:


Here I've found that WPC54G has a Broadcom 43xx chipset on version 1 and 3, and a TI on version 2. The first version is supported on Ubuntu, the 2ª isn't, and the third is not fully supported.

Some colleages of mine just told me the same happened to them. Isn't this crazy? Would't you expect the maker to rename a product like a network adapter when the chipset changes? Arghh....

So watch out for model references - always check the version...

Top 15 free SQL Injection Scanners

Found at slashdot: Top 15 free SQL Injection Scanners

Friday, May 18, 2007


As we grow older, we end up spending more time architecting than programming. As a result, I end up spending a lot of my daily work using Visio. So the question arises: does this make me a VISIOnary? :)

PS: please don't feel obliged to answer, this is an academic question :P

His step stones

Here's another blog to watch out for: My Step Stones, from my good old friend, Rui Melo. Rui is presently blogging around MOSS and WSS.

Welcome to the blogosphere :)

Microsoft ASP.NET Futures

Goodie goodie, new goodies :)


The new release includes support for managing browser history (Back button support), selecting elements by CSS selectors or classes, and information on accessing “Astoria” Web data services.

Silverlight Controls for ASP.NET

You can integrate the rich behavior of Microsoft® Silverlight™ into your Web application by using two new ASP.NET server controls: a Media server control that enables you to easily integrate media sources such as audio (WMA) and video (WMV) into your Web application, and a XAML server control that enables you to reference your own XAML and associated JavaScript files.

Dynamic Data Controls for ASP.NET

Dynamic data controls are a set of ASP.NET server controls that obtain database schema information at run time, provide default display formats according to common user expectations, and enable you to easily customize those formats. Watch a video showing how to build a task list application using the Dynamic Data Controls from the ASP.NET Futures Release.

Dynamic Data Controls in ASP.NET Futures

Download the video

ASP.NET Application Services

New services for ASP.NET enable you to add search to your ASP.NET Web applications, using a commercial search engine’s API (such as Windows Live Search) and custom search providers. You can also publish custom and dynamic sitemaps that are configured to assist search engine crawlers. A new service lets you capture JavaScript errors and report them to server-based ASP.NET code.

Dynamic Languages Support in ASP.NET

In ths release, support for dynamic languages in ASP.NET expands on the earlier support for IronPython for ASP.NET. Support for dynamic languages in ASP.NET is built on the Dynamic Language Runtime (DLR), a new platform currently under development at Microsoft. The DLR simplifies hosting dynamic languages on the Common Language Runtime.

Two dynamic languages are now hosted on the DLR: IronPython and Managed JScript.

Thursday, May 17, 2007

Is my Vista more Mac OS Like?

Not quite, but you can always try these:

taken from: .net DEvHammer

Wednesday, May 16, 2007

Byebye Longhorn - Hello Windows Server 2008

No surprise here. Longhorn is dead. Long live Windows Server 2008.

Monday, May 14, 2007

KB931768 causes IE7 failure

The KB931768 caused IE7 failure w/ navcancl and ieframe.dll. Anyone else has experience this?

Sunday, May 13, 2007

Partitioned Tables and Indexes in SQL Server 2005

Here's a great article about database partitioning in SQLServer 2005. I've found it on this OutSystem's forum post. Here's the synopsis:

Table-based partitioning features in SQL Server 2005 provide flexibility and performance to simplify the creation and maintenance of partitioned tables. Trace the progression of capabilities from logically and manually partitioning tables to the latest partitioning features, and find out why, when, and how to design, implement, and maintain partitioned tables using SQL Server 2005.

Asus WL-500gP: from announced heaven to living hell!

On a previous post I introduced you with Asus WL-500gP. Last week I bought one of these, and here's my review:

  • the ftp and Samba daemons work as expected. Didn't try the printer;
  • in general, the router user interface is just too bad to be true;
  • I couldn't get download manager to work; tried it on 3 boxes with firewalls down: the utilities finds the router, the downloader refuses to connect;
  • the FAQ to solve this known problem makes reference to something just not there, probably from another version;
  • the Asus forum is full of other upset users; lots of bugs and unstable versions; lots of crashes and strange communication slowdown;
  • the updatable linux firmware can go wrong on this unit, and the repair voids the waranty;

I'm returning it tomorrow. Being Asus, I'd expect a better product... The 32MB RAM linux upgradable and USB support is not enough for the instability of the unit.

Thursday, May 10, 2007


Yeap, seems like hard competition. At last! :) Here are ARSTecnica's first impressions.

PS: what about Flash?

WPF Features in SCSF


Tuesday, May 08, 2007

Microsoft Surpasses Java's Dynamic Language Support

Oops, Microsoft has done it again:

I think it’s clear that Microsoft are innovating faster on the CLR. For example: LINQ is an extremely powerful new feature (based on Haskell monads, I might add); Generics were supported earlier and better in C# than in Java (both flavours were inspired by Haskell’s polymorphic type classes… hmm!); the CLR has better support for multiple languages than the JVM; and now it has the DLR, which is probably two years ahead of the JVM being able to offer anything comparable.

For much that I like and use Microsoft technologies, I'm a bit worried about the lack of response from the "other side". Few of these great technologies Microsoft presents us today would exist without the "other side" methodological influence and competition. Wake up, guys!

Monday, May 07, 2007

How to Be an Effective Manager

Here's a great post about management effectiveness. Be sure to keep this blog's address, there are some other great posts out there.

CSLA .NET 3.0 test release

Here it is. Probably not the coolest of the technologies of the moment now that ORMs and Linq are in everybody's mind, but still one of the safest ways to scale your applications.


My Vista has pulled the first on me... the DVD burner stopped burning, probably because of lack of space. After some disk cleanup and driver installation, it kept refusing to burn DVDs.

I found this great application: DeepBurner. The free version is enough for most of my needs, and it beats the XP and Vista burners.

Live after MIX

You can still attend to MIX 2006 and 2007 here.

Sunday, May 06, 2007

Baking Performance Into the Life Cycle

Meyer has just posted about the need to add performance to early stages of the development live cycle, not just on latter tunning stages. To set it up, he proposes:

  • Set objectives and measure.
  • Performance modeling helps you design performance for your scenarios.
  • Measuring continues throughout the life cycle and helps you determine whether you are moving towards your objectives.
Most of us actually do this to some extent. I certainly do it on most of my projects, but not in a continuous way. There's a high point of stress near the end of the implementation stage, prior to QA, a time on the live cycle traditionally stressed with a waterfall of changes. This is a stage on the development live cycle when we are stressed with costs and deadline, and performance is the first casualty to keep the iron triangle happy. Performance is, most of the times, the 1st functionality we can take away. We're not Microsoft, you know, we can't just take functionalities away and get away with it :)

Friday, May 04, 2007

Linq Support in Silverlight 1.1 Alpha

Good news for Silverlight (and Linq): it supports Linq!

Implementing the Singleton Pattern in C#

I've just received this great link about singleton implementations. Not the first of these articles on the net, but a clean and clear one.

Please check the rest of the site - there are other great articles there.

Thursday, May 03, 2007

The Programmer's Bill of Rights

Last year Jeff Atwood stated his "Programmer's Bill of Rights". Here they are:

  1. 1. Every programmer shall have two monitors

    With the crashing prices of LCDs and the ubiquity of dual-output video cards, you'd be crazy to limit your developers to a single screen. The productivity benefits of doubling your desktop are well documented by now. If you want to maximize developer productivity, make sure each developer has two monitors.

  2. 2. Every programmer shall have a fast PC

    Developers are required to run a lot of software to get their jobs done: development environments, database engines, web servers, virtual machines, and so forth. Running all this software requires a fast PC with lots of memory. The faster a developer's PC is, the faster they can cycle through debug and compile cycles. You'd be foolish to pay the extortionist prices for the extreme top of the current performance heap-- but always make sure you're buying near the top end. Outfit your developers with fast PCs that have lots of memory. Time spent staring at a progress bar is wasted time.

  3. 3. Every programmer shall have their choice of mouse and keyboard

    In college, I ran a painting business. Every painter I hired had to buy their own brushes. This was one of the first things I learned. Throwing a standard brush at new painters didn't work. The "company" brushes were quickly neglected and degenerated into a state of disrepair. But painters who bought their own brushes took care of them. Painters who bought their own brushes learned to appreciate the difference between the professional $20 brush they owned and cheap disposable dollar store brushes. Having their own brush engendered a sense of enduring responsibility and craftsmanship. Programmers should have the same relationship with their mouse and keyboard-- they are the essential, workaday tools we use to practice our craft and should be treated as such.

  4. 4. Every programmer shall have a comfortable chair

    Let's face it. We make our livings largely by sitting on our butts for 8 hours a day. Why not spend that 8 hours in a comfortable, well-designed chair? Give developers chairs that make sitting for 8 hours not just tolerable, but enjoyable. Sure, you hire developers primarily for their giant brains, but don't forget your developers' other assets.

  5. 5. Every programmer shall have a fast internet connection

    Good programmers never write what they can steal. And the internet is the best conduit for stolen material ever invented. I'm all for books, but it's hard to imagine getting any work done without fast, responsive internet searches at my fingertips.

  6. 6. Every programmer shall have quiet working conditions

    Programming requires focused mental concentration. Programmers cannot work effectively in an interrupt-driven environment. Make sure your working environment protects your programmers' flow state, otherwise they'll waste most of their time bouncing back and forth between distractions.

I have some doubts about the last one, if taken too much seriously: it's important to maintain focus, as long as you can get some healthy silliness's breaks :) And no, for me the 3rd one is also not as issue.

When architecting is just too much

Architecting is not just about adding, is also about removing. Let me explain with an example we are all familiar with: in "Platoon", when the troops arrived at Vietnam, Sgts. Elias and Barns welcomed the newcomers getting rid of a bunch of equipment they didn't need. The soldiers were just over-architected, and they didn't know why.

Sometimes we need to strip a lot of "gear" from systems we welcome. Thought the main drive for this removing is to guarantee the agility of the projects, I often identify the following pattern:

  1. a need was identified, and an architectural decisions was taken based on that need;
  2. the architect identified some architectural patterns based on that need, but doesn't identify the need itself;
  3. the architect leaves the team, but the patterns and practices are kept;
  4. people enter and leave the team, maintaining the patterns and practices without knowing why;
  5. the need is no longer valid, but the architectural grounds the application is built upon are kept;

Isn't it strange how people work?

Designing a Domain-Driven Data Access Layer

A friend of mine has just send me this great post about designing Domain-Driven Data Access Layer.

Other then the goals themself:

  • The DAL should completely hide the underlying data access technology, whether it be an ORM tool like NHibernate, hand-generated inline SQL, calls to stored procedures, or anything else.
  • The DAL should not place any significant constraints on the design of the domain model.
  • The entire layer should be replaceable with minimal impact (or minimal risk for you PM folks).

this post presents us with this great TDD experience. Please don't miss these.

Wednesday, May 02, 2007

Tuesday, May 01, 2007

Does Microsoft have a Data Access Strategy?

About the Entity Framework delay, Mike Pizzo, Architect on Data Programmability, says:

Yes, it turns out we do. Microsoft envisions an Entity Data Platform that enables customers to define a common Entity Data Model across data services and applications. The Entity Data Platform is a multi-release vision, with future versions of reporting tools, replication, data definition, security, etc. all being built around a common Entity Data Model.

Within the .NET Framework, the ADO.NET Entity Framework is integral to this vision. The ADO.NET Entity Framework builds on our mutual investment in ADO.NET by enabling applications to write to a conceptual data model with strong notions of type, inheritance, and relationships. Through the use of “Client Views”, this conceptual model can be flexibly mapped to existing relational schemas, enabling the creation of new business structures when the underlying database schema cannot be changed and providing a level of indirection that helps isolate applications from naming as well as structural changes of the storage schema (for example, changes in the degree of storage schema normalization). The ability to work with a conceptual model greatly simplifies forms design and web service development where the underlying data store represents the model in a complex way.

Client Views are implemented within a new ADO.NET Data Provider called the Entity Client which supports an extended SQL grammar called Entity SQL (“ESQL”). ESQL provides a common query language across providers by extending the existing SQL language with constructs to work with strong notions of type, inheritance, and relationships from the Entity Data Model. By exposing the conceptual model through traditional ADO.NET Data Provider APIs (Connections, Commands, and Data Readers), existing ADO.NET programmers can immediately benefit from the conceptual model, common SQL language, and flexible mapping of the ADO.NET Entity Framework.

The ADO.NET Entity Framework also supports Object Services for building typed queries and returning, manipulating, and updating results as Business Objects. These Business Objects can be queried using ESQL, or through a new language innovation called LINQ.

Follow the post here for the expected roadmap.

Project Codename “Astoria”

Here is a not so interesting project (at least for me): "Astoria".

Project Codename “Astoria”

The goal of Microsoft Codename Astoria is to enable applications to expose data as a data service that can be consumed by web clients within a corporate network and across the internet. The data service is reachable over regular HTTP requests, and standard HTTP verbs such as GET, POST, PUT and DELETE are used to perform operations against the service. The payload format for the service is controllable by the application, but all options are simple, open formats such as plan XML and JSON. Web-friendly technologies make Astoria an ideal data back-end for AJAX-style applications, and other applications that need to operate against data that is across the web.

To learn more about Project Astoria or download the CTP, visit the Project Astoria website at http://astoria.mslivelabs.com.

Project Codename "Jasper" - Announced at Mix 07

in: ADO.NET team blog.

Microsoft is announcing a new data goodie: "Jasper". “Jasper” uses a set of new technologies to make this happen:

  • Dynamic generation of data classes so there is no configuration or design time code-gen to carry around.
  • Rich query and O/R capabilities because “Jasper” is built on top of the Entity Framework.
  • Auto-binding capabilities for ASP.NET, WinForms, and WPF to make binding data to a UI simple and automatic.

Looks like the dynamic ORM lobby at Microsoft as finally succeeded! Seems like my Christmas wish list. Don't you dare dropping this one, Microsoft!

[update] ok, now that I think of it, and after seeing the first samples, I'm not so thrilled with the idea. Well, at least we're getting another great demo material, but can this technology enter the enterprise world we live in? Only time will say. One thing is for sure: the "Generate Default EDM=True" on the connection string is scary, to say the least...

Project Codename “Jasper”

Project Jasper is geared towards iterative and agile development. You can start interacting with the data in your database without having to create mapping files or define classes. You can build user interfaces by naming controls according to your model without worrying about binding code. Project Jasper is also extensible, allowing you to provide your own business logic and class model. Since Project Jasper is built on top of the ADO.NET Entity Framework, it supports rich queries and complex mapping.

To learn more about Project Jasper visit the ADO.NET Blog at http://blogs.msdn.com/adonet
To download the Project Jasper CTP visit http://www.microsoft.com/downloads/details.aspx?FamilyId=471BB3AC-B31A-49CD-A567-F2E286715C8F&displaylang=en.

[MIX07] Microsoft announces IronRuby

in: infoq

The new Dynamic Language Runtime (DLR) adds a small set of key features to the CLR to make it dramatically better. It adds to the platform a set of services designed explicitly for the needs of dynamic languages. These include a shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code. With these additional features it becomes dramatically easier to build high-quality dynamic language implementations on .NET. More importantly, these features enable all of the dynamic languages which use the DLR to freely share code with other dynamic languages as well as with the existing powerful static languages on the platform such as VB.NET and C#.

For much as I hate dynamic languages, they are (again) here to stay. So this may be the time for me to stop rejecting them. Don't get me wrong, I still love my curly brackets strongly typed static languages, but this may be the time to start looking at the advantages these new implementations bring. If not for anything else, to have (again) much complaining to throw at them :)

Development Catharsis :: Copyright 2006 Mário Romano