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

Saturday, June 30, 2007

NHibernate assessment

Now that my my first NHibernate implementation is entering the QA stage, it's probably time to share some thoughts with you.

What went ok:

  • there was practically no impact on the team due to the paradigm change;
  • on the beginning, the artifact the team missed the most was the database diagram, that was deliberately substituted by the static class diagram; that database diagram lack was soon forgotten by whole of the team;
  • the domain model was expressed with great ease;
  • search forms were just easy and natural to develop;
  • the lazyload mechanisms to transverse the domain model was used and abused whenever performance issues were not applicable;
What didn't:
  • we lost the capability to override CRUD operations (ex: we can't just rewrite some class Add method, filling some data and calling base.Add);
  • the OR/M performance overhead just can't be missed on bulk operations;
  • we couldn't find the right software factory for this project, so we decided to develop some CodeSmith templates from scratch to facilitate the data dictionary to HBM, domain model and basic CRUD presentation code;
It's a sure bet for this type of projects. We're now ready for the next leap LINQ offers us. LINQ is such a compelling technology that we daily miss it before even using it :)

SilverLight / VirtualEarth Sample: Destroy All Invaders

Here's a great SilverLight / VirtualEarth integration sample (Virtual Earth as the backdrop for the game, Silverlight for the rest). Play the game here, and get the source there.

PS: and no, you can't report the time playing this game on your daily tasks. No, not even as R&D.

Friday, June 29, 2007

Gartner: Businesses should be wary of iPhone

in: cnet news

Analyst Gartner claims the iPhone could "punch a hole" through corporate security systems if workers are allowed to use the phone for work purposes.

Thursday, June 28, 2007

Advice to bloggers

When starting a blog, don't delay your logging strategy, or you'll probably end up loosing a lot of valuable information. In particular, don't start without ClustrMaps. A must.

What's New in Microsoft® SQL Server™ 2008

Clinic 7045 : What's New in Microsoft® SQL Server™ 2008

Course Type: Self-paced Course

Available Offline: Yes

Estimated Time of Completion: 2 Hours

Language: English

In this clinic, you will learn about the new and enhanced features included in SQL Server 2008. You will explore the new data types and the data management features. Additionally, you will learn about the enhanced Integration Services, Analysis Services, and Reporting Services included in SQL Server 2008. This online clinic is composed of a rich multimedia experience.

It's here : https://www.microsoftelearning.com/eLearning/cours...

Wednesday, June 27, 2007

Wouldn't life be simpler...

"Wouldn't life be simpler if we had the source code?"

A funny statement I heard on some podcast. If we stop to think of it, it a great way to stand for the open source way.

On a SOA perpective, we could re-write it as:

"Wouldn't life be simpler if we had the contracts?" Hey, here we're getting somewhere, life is really getting simpler :)

Tuesday, June 26, 2007

Native SQL on NHibernate

I've been working on a project where NHibernate was choosen as the OR/M. The usage policy defined for the adoption of OR/M was:

  1. Isolate business rules on a separate business layer (separate from the domain model provided by NHibernate); this decision was partially based on the way tiers are design on our company;
  2. Use insert, update and delete directly from the NHibernate domain model;
  3. Map directly as relationships whenever possible (ex: Invoice.InvoiceLine will interact transparently with INVOICE_LINES, People.Hobbies will interact transparently with PEOPLE_HOBBIES);
  4. Bypass business tier on customized searches - ex: the form that search for Invoices, which will search directly over ICriteria over the OR/M Domain Model;
  5. Use as little HQL as possible;
  6. When none of the previous could be fulfilled, use Native SQL.
Yesterday we finally had to write our first Native SQL code. Ok, we really didn't have to, but we felt this was the time to do it.

Why? We had to reorder a result from a query with a computed criteria, and we didn't want to use views, nor in memory ordering. So here's what we did:

using (TransactionContext transactionContext = new TransactionContext())


IList result = transactionContext.Session.CreateSQLQuery(

"Select MyEntity.ID as {MyEntity.Id}," +

“MyEntity.TYPE as {MyEntity.Type}," +

“MyEntity.VALUE as {MyEntity.Value}," +

“MyEntity.PERCENTAGE as {MyEntity.Percentage}," +

“MyEntity.DATA as {MyEntity.Data},

“MyEntity.ID_CONDITION as {MyEntity.Condition}, “

"decode(MyEntity.Tipo, 'E', 0, 'A', 1, 'F', 2, 3) as ordercriterium " +

“FROM T_MY_ENTITY MyEntity inner join T_CONDITION Condition on MyEntity.ID_CONDITION = Condition.ID " +

"order by ordercriterium ",

.AddEntity("MyEntity", typeof(Link.SIGDA.Model.GrandesDireitos.MyEntity))


// ...

// ...

// ...


The integration capability between Native SQL and the Domain Model surpassed my early expectations. Cool!

Sunday, June 24, 2007

OutSystems strengthens worldwide position

Venture investment has just been injected on OutSystems to strengthen their position on the global market.

OutSystems is an enterprise platform designed uppon agility concepts. OutSystems proposes the creation of applications that are faster to create, change and manage, built with scalability assurance.

Applications built with OutSystems are mostly graphical - except for some data relational code, users express their application using workflows, fluxograms and other graphical components, facilitation the communication between the functional and technical worlds, thus lowering the impedance mismatch between them.

In my first impressions, the great strength of OutSystems are:

  • A development platform closer to the functional users – I believe this is the model most of information systems will depend on some years from now, probably on a self-sufficient model;
  • The agility of the platform – fast prototyping is one of the greatest assets of a successful project;
  • “Closed in developing, open in usage” – I find the runtime free model just awesome on an investment protection perspective;
  • Betting on a community and certification - yeap, I'm now OutSystems certified (Level 2), and haven't spoken with anyone from OutSystems; just downloaded and installed the designer (and optionally the runtime), read ther PDF and video documentation and aplied for online tests;
  • Betting on quality and reliability, not on a broad set of functionalities;
  • (from the later) the confidence to open the product to the world “by itself” – the simple fact that we can use OutSystems without someone from OutSystems installing it is just a great achievement for an enterprise platform. For the first 10 years of my career I've worked on a software house on enterprise products, and that was a goal our product division didn’t achieve.

Good luck for them.

Friday, June 22, 2007

HTC Touch

Human-Machine Interfaces are getting smarter. Here's a great sample: HTC Touch.

Now my HTC 3300 just seems like ancient history...

Tuesday, June 19, 2007

New Microsoft Learning Site

One of the best things on my profession is that everything comes automatically with a time limit :) Ok, not everything, the basis may work forever.... But everything else we build upon those basis just suffer from a continuous education syndrome.

Tank god for the net to keep us updated: Microsoft Learning Site.

Monday, June 18, 2007

I'm in love with Acropolis!

Yeap, it's true, the world as we know it is pendular. Remember MFC's DocView? Here it is again, on a beautiful declarative form: Acropolis!

Here's a great little sample.

Thursday, June 14, 2007

Project Server 2007 VSTS Connector

PSOs, start your engines:

The Visual Studio Team System Project Server 2007 Connector is designed to integrate the project management capabilities of VSTS with Project Server 2007. It's been developed by the Visual Studio Team System Rangers in response to significant customer demand for a connector solution. Future versions of Team System will have native integration with Project Server, in the meantime this Connector solution is the best way to integrate the two Microsoft products.

Safari on Windows

Safari on Windows is on beta3. I can now finally test my web apps on Safari over my Vista box. Well done Apple!

PS: what about Linux, Mr. Jobs?

Monday, June 04, 2007


The Microsoft code name “Acropolis” Community Technology Preview 1 is a set of components and tools that make it easier for developers to build and manage modular, business focused, client .NET applications. Acropolis is part of the “.NET Client Futures” wave of releases, our preview of upcoming technologies for Windows client development.

Get it here.

SQL Server 2008 Pillars

in: microsoft.com.

Mission Critical Platform for All

SQL Server 2008 will provide a more secure, reliable and manageable enterprise data platform.

  • Provides a scalable and reliable platform with advanced security technology for even the most demanding applications.
  • Reduces the time and cost of managing data infrastructure with innovative policy based management.
  • Watch the video: Enterprise Data Platform Vision

Beyond Relational

SQL Server 2008 will enable developers and administrators to save time by allowing them to store and consume any type of data from XML to documents.

  • Manages any type of data from relational data to documents, geographic information and XML.
  • Offers a consistent set of services and tools across data types.
  • Watch the video: Beyond Relational

Redefining Pervasive Insight

SQL Server 2008 provides a more scalable infrastructure that enables IT to drive business intelligence throughout the organization.

  • Brings powerful BI capabilities and valuable data even closer to every user.
  • Empower users to easily consume information due to increased integration with Microsoft Office.
  • Provides reports of any size or complexity internally within organizations and externally to partners and suppliers.
  • Integrates all relevant data into a scalable and comprehensive data warehouse platform.
  • Watch the video: SQL Server BI Vision

Dynamic Development for Data Management Solutions

SQL Server 2008 along with .NET Framework 3.0 will accelerate the development of the next generation of applications.

  • Provides an integrated development environment with Microsoft Visual Studio and .NET Framework that will accelerate development of new applications with a higher level of data abstraction.
  • Enables developers to synchronize data from virtually any device to the central data store.
  • Watch the video: Dynamic Development

Net taxes could arrive by this fall

in: cnet.

The era of tax-free e-mail, Internet shopping and broadband connections could end this fall, if recent proposals in the U.S. Congress prove successful.

Internet sales taxes
At the moment, for instance, Seattle-based Amazon.com is not required to collect sales taxes on shipments to millions of its customers in states like California, where Amazon has no offices. (Californians are supposed to voluntarily pay the tax owed when filing annual state tax returns, but few do.)

ALT.NET - Alternative tools and approaches to mainstream .NET

Though not completely agreeing with Osherove's post, this seems like an interesting point to start a great discussion (at least as a reference to some great projects). Here's his table of coolness/uncoolness:

Hot Not
Castle, ActiveRecord,
DataSets, Dataset Designer, Entity Framework, MS Application Blocks
MVC,NUnit,MonoRail Web Forms, SCSF, VSTS, MSTest
XP, TDD, Scrum MSF Agile, MSF For CMMI
Evolutionary Design and Development Big Design Up Front
Ruby + IronRuby, Python + IronPyton, DLR, Silverlight(?) ?
OR\M (NHibernate, LLBLGen etc..) DLinq, Data Access Block, DataSets, Plain ADO. NET
Open Source (Mono, SourceForge) Application Blocks, CodePlex
MVC and MVP (RoR, MonoRail..) Web Forms, CAB, Smart Client Factory
CVS, SVN VSS, VSTS Source Control
Build Automation and CI
(CI Factory, NAnt, FinalBuilder, CruiseControl..)
Team Build
TDD and Unit Testing
NUnit, MbUnit, RhinoMocks, NMock, TypeMock
MSTest for unit testing, VSTS
Subtext, DasBlog, WordPress, TypePad, Blogger, FeedBurner Microsoft MSN Spaces, Community Server(?)
Simplicity in Design P&P
Working at Google Working at MS
Google Gears Smart Client, MS Ajax
.NET 3.X (WF, WPF. Silverlight) .NET 2.0
DI, IoC, Spring for .NET Object Builder
OSCon, RubyCon, Code Camps, DevTeach..
VSLive, TechEd, DevConnections..

Virtual TechEd

No TechEd for me this year. At least the real one. Here's the virtual one.

Saturday, June 02, 2007

The Best Code is the the code needed, and nothing more

Rich Skrenta writes that code is our enemy. Jeff Atwood continued with The Best is no code at all.

Though I can relate to much of those contents, I would like to state the
obvious: "The Best Code is the the code needed, and nothing more".

Why this La Palice statement? Well, I just can't related to the sample Atwood gave us about String.Empty - yeap, the Empty option is the right one, not only because of the marginal performance improvement, but above all because of a much higher level of intention. But this is not what bothers me, I wouldn't stop a team on a code review because of this. The problem is that nowadays we've been experiencing a trend in coding languages that defends a smaller code footprint. I don't believe this is the way to improve developers productivity. We are not typists, we are developers. Our greater asset is to solve computer science problems, not to type faster.

Should we code less? Hell yes, but on another level: up the abstractions. Particularly making extensive use of models and DSLs. So that's what I like about NHibernate and LINQ for SQL and LINQ for Entities.

Friday, June 01, 2007

Accelerate Microsoft ASP.NET and AJAX applications with no change to code, servers or network

Strangeloop Networks develops and delivers a family of network appliances purpose-built to accelerate Microsoft ASP.NET and AJAX applications. The Strangeloop AppScaler, the first member of the family to be unveiled, offers real-time network-based optimization for Dynamic Web Applications and improves, by an order of magnitude, the performance and scalability of today’s highly interactive, personalized web applications without changes to software, servers or the network.

With Strangeloop in their network, businesses, government and education organizations can deliver powerful, interactive, personalized applications that engage employees and partners and drive business success.

How does it work? Quiet simple, it just intercepts the 5th OSI layer (session) for you, saving you a valuable resources: bandwidth. And probably 6th (presentation) and 7th (application). Uau, for how long didn't we hear of the OSI model?...


Development Catharsis :: Copyright 2006 Mário Romano