Gaston Milano's WebLog

About something...





VS Automation


Google Intensity Map , another GeneXus user control

You can download it here and you can see how to use it in the following video.

In the sample I had only one Business Component called Country, after I created a WebPanel, drag and drop the IntensityMap and bound it to a DataProvider that takes data from Countries.  

The DataProvider Code is

        Name = "Population"
        Name = "Area"
            CountryISO = CountryId
                Value = CountryPopulation
                Value = CountryArea


Cardal : Something is changing...

Even if you don't read it in the news, even if you don't watch it on TV, in the society something is changing... and luckily my country is one of the main player in these good changes.

Probably you know about the OLPC and probably you know the first picture of the following video, but almost for sure you never see the others pictures. Why? Because even in Uruguay we never watch these pictures on TV

But our friend Fernando lives in Florida the first City in the world that go ahead with the OLPC program. To be more specific it began on Cardal in Florida. Fernando gave us these pictures. For me are shocking pictures. How many times did you go to school on sunday?


What is changing? Traditional things, traditional ideas.  

We start thinking in the next version of GeneXus, we had been thinking a new code name for our version, we believe that traditional ways to do applications should change, so more than ever we choose a strong meaning name for our version:




My First User Control on GeneXus X: Google Motion Chart

After Enrique wrote about Google Visualization API, and after Gonzalo showed us that create an User Control for Google Visualization Gadgets is an easy task, I tried to do my first User Control.

I choose Google Motion Chart. You can download it here


This sample is a simple chart showing Sales and Price for IPhone, WM and Nokia (N Serie). I wrote this "hard coded" code in GeneXus X


        Name = "IPhone"
        Date = ctod("01/01/2007")
        X = 0
        Y = 0
        Name = "Nokia N"
        Date = ctod("01/01/2007")
        X = 400
        Y = 9
        Name = "WM"
        Date = ctod("01/01/2007")
        X = 400
        Y = 2.9
        Name = "IPhone"
        Date = ctod("06/01/2007")
        X = 499
        Y = 2.3
        Name = "Nokia N"
        Date = ctod("06/01/2007")
        X = 599
        Y = 11
        Name = "WM"
        Date = ctod("06/01/2007")
        X = 450
        Y = 3.8

        Name = "IPhone"
        Date = ctod("08/11/2008")
        X = 199
        Y = 4

        Name = "Nokia N"
        Date = ctod("08/11/2008")
        X = 699
        Y = 12
        Name = "WM"
        Date = ctod("08/11/2008")
        X = 499
        Y = 3

The right code should be:

       Name = ItemName
       Date = ItemDate
        X = ItemPrice
        Y = ItemSales


And in the Start Event of the Panel



 Event Start
    &serie = DataProvider1() // The &serie is the data bound to the control

I think is a bit easier than write a bunch of javascript code.

And the data is almost real ;)

The end of the begining: GeneXus X

Two years ago we started the first prototypes of the GeneXus Rocha, at that time we were sure we had to redesign the architecture of the GeneXus development environment.  We analyzed several options for our new Development Environment like using an existing development environment, for example:  Eclipse, Visual Studio, or even emerging technologies like the Composite Application Block.

Even we are accustomed to work with traditional environments; they are lacking a crucial point: Usability.

In order to work with Knowledge, usability is essential.  So we decided to create a new Environment focusing on Usability, Productivity and Extensibility.

The platform we chose was .NET, so GeneXus is one of the first development environments completely written in .NET, but this is not the essential part.

The essential part is for sure unique usability features; some of them are very important, and some others are minor features that most of the development environments in the market don’t have.

Two years later we have our first major Release of our product; its name is GeneXus X. The GeneXus core is creating business applications using knowledge. Our approach: a declarative language and code generation. This was and is our way. 

A declarative language is the only way programmers can focus in What to do instead of How to do it. And the only way programmers and engineers will focus on solving the real problem. 

Additionally GeneXus generates code, I don’t know another technique in order to increase dramatically the software development productivity.  

In GeneXus you have patterns, an excellent tool that increases productivity and gather knowledge, but when you are creating a pattern inside GeneXus, you are creating a new Generator .

In GeneXus X we are being really, really, declarative; just let me give you an example. This is the code you have to write in order to return a list of Customers





                   Name = CustomerName



There is no information about how to obtain data, there is no information about the format, this is declarative code. This code is technology independent, this code will be a time survivor.

Trust me, if you don’t know about GeneXus just take your time to learn about unique features of this language.

Obviously, you have already noted this project is not just one more project for me, it has been the project living in my mind during two or more years, during the project we have many technical challenges I’m expecting to write about them at some moment:

·         The Challenge of Usability

·         The Challenge of Extensibility

·         The Challenge of Productivity

·         The Challenge of Performance

·         The Challenge of Memory use in .NET

·         Ideal software vs  good enough software

How big is the GeneXus Project? 193 Visual Studio projects. (I promise you to give more data ;).  Big enough I think.

This is the end of the beginning of a new generation of GeneXus, thanks specially to Beta Testers giving us their ideas, their criticisms, they “go ahead”, and so on.

And thanks to all the Artech Team, I have been really learning more than design, develop, test, and release a product in this journey, I learned stealing cookies to my near coworker ;)


GXChart and after Google Chart and YUI Chart Control

In 2001 GeneXus released its chart service called GxChart. GXChart is an online service that instantly creates any chart you want to visualize.

You define the chart and the GXchart server will return an image of it.

The service was created oriented to GeneXus users but anybody could consume this service.

The data, the chart type and other parameters can be passed either in a URL or in an XML file.

The simplest way is to include the parameters in the URL.

For example:,February,March,April&Series1=Values:Purchases:70,40,90,20&Series2=Values:Sales:50,100,20,50&%3Cbr/%3EType=Bar3D&Width=600&Height=400&Legend=Right

Is the following chart:



GXChart service is free and additionally you could obtain the local version in order to install the service in some local server.


 More information about GXChart here

 The last week Google released its Google Chart, esentially the same idea.

The point of this post anyway is not to compare GXChart with Google Chart (I think today GXChart is better)

The point is that I was thinking in a new way to render charts, a more interactive one.

Render images is not enough in many cases because we need interaction with the data.

We need a chart with client events in order to create new ways of interaction with Data. In this way YUI Chart control is using Flash in order to give interaction with charts. Obviously YUI Chart is very rudimentary in terms of charts yet. Using Images is a bit complicate achive this behavior.

GeneXus, Yahoo, Google, where is Microsoft in this game? What about the same service but giving us Silverlight charts ;)

GeneXus USA Event 2007

October 29-30 is our annual GeneXus USA Event (Chicago IBM Innovation Center) 

I'll be there giving first of all an overview of GeneXus (coded name Rocha) and after in another talk I'll be talking about Development of dynamic languages generators. We will show the current development stage of our Ruby Generator and obviously we are going to show you what kind of applications you could create with GeneXus Rocha.

If you want to join us 

We have just released our first Beta for GeneXus with C# and Java generators and SQL, MySQL, DB2, Oracle support. Additionaly we have released our first CTP of our Ruby Generator.

You can try GeneXus Beta 1 here.

If you don't know anything about GeneXus here you have our first online book, it is a good starting point to understand many of the concept behind GeneXus.


Vista/Ubuntu Odisea

I have a new Lenovo T60p notebook I'm very happy obviously is my new toy. I thought it was a great opportunity to migrate to new OS.

I watched this video about Vista and Ubuntu and I decided to install both. 

I will describe right now the steps that  I followed in order to acomplish the crazy idea of install the latest operating system in the market.

I think this will be useful for somebody else.

  1. My notebook has XP preloaded with office 2007 , ThinkPad software, Symantec software.
  2. Install Ubuntu
    1. In the middle of the installation the setup failed so a command prompt appears with a strange message. (After a coworker told me that ubuntu has problem with ATI cards so I had to run a couple of "nice" commands and ready...)
    2. For me the first Ubuntu try failedm, remember I'm a user of a 2007 operating system, I was expecting to be in a 3D cube but I finished in a command prompt.
  3. Install Vista
    1. Windows Vista Capable sticker present in the notebook so I started...
    2. Upgrade Lenovo BIOS, uninstall some thinkpad tools, uninstall symantec tools (
    3. Start Windows Vista Setup
      1. Choose Upgrade
      2. Finish
      3. At this point I was very happy ;)
    4. Time to working
      1. ATI FireGL V5250 driver missing. Solution: Download driver from lenovo Site
      2. Outlook 2007 failed with "Could not create form" message
        1. Solution: Regsvr32 c:\Windows\System32\vbscript.dll
      3. Try to connect to vpn using openvpn failed
        1. Download a new openvpn version
        2. Add to your .ovpn file the following two lines:
          1.   route-method exe
          2. route-delay 2
        3. Run openvpn-gui as Administrator
      4. Try to use Outlook Web Access
        1. I could write messages !!!
        2. Our exchange should be patched in order to get up and running... I have to patch the company server...
      5. Try to run Visual Studio 2005
        1. Install VS SP1
        2. Install VS SP1 for Vista
      6. I join to a Domain
        1. I couldn't use Windows Update anymore
        2. Solution: Left the domain update and join again... I know should be another way I didn't find easily.
    5. At this time I spent a lot of hours reading, installing, but not reading the new features about Vista
    6. What is the first "feature" I learned about Vista ? UAC (User Account Control)
      1. I read about this feature because from my point of view (before reading) in Vista Microsoft did:
        1. Administrator is not Administrator, I mean I need to run program with Run as administrator, but... I'm an Administrator !!
        2. Right now in Vista before running a program I should think "Double click or Run as administrator ?" I mean they break the Don't make me think rule at the more basic level !!
        3. At this time I'm very disappointed
      2. I think is a perfect piece of security software they do the right think about security but miss the main thing The User.
    7. Well I'm having more problems because a bunch of third parts libraries doesn't install in Vista.
  4. Yes you are right I did more effort in Vista than Ubuntu it's true this is because my main environment is Windows right now. Anyway my new 90GB disk has 50GB used (Windows Folder: 11GB, System Volume Information: 9GB, Program Files 9GB, Users 4 GB, IBM 3 GB...) So I suppose Ubuntu should find another machine to live ;)
Right now I have Ctrl+tab, aero, search, etc but it's time to working and I can't... My boss is not happy either.

Posted: May 30 2007, 04:23 PM by GMilano | with no comments
Filed under:
A Better Way To Show your Build Output: BuildConsole.NET

Sometime ago I built a tool I called Build Console. I was a quick and dirty development but until today we are using it often in our daily building.

Why I needed this tool, well I don’t wanna tell you that VS build report is  really poor but… it is ;) I don’t wanna open a big solution and wait 5 minutes in order to build my solution.

I known I can use msbuild command line but it is so hard to know what is going on with the build process (how many warining, errors, what project fail, etc).

So that I built a very simple tool that just is listening msbuild and show you the in a better way what is going on with your build.

Additionally it save the history of your builds.


BuildConsole features:

  • Open BuildFiles and Solution Files
  • Show and Save Build Reports
  • Support for cancellation
  • Verbosity Configuration
    • Build Console solve another small problem that I always have, when building C++ I want a detailed verbosity but for C# projects I need a normal verbosity. BuildConsole assume you want this and if you choose normal when it is building a C++ project it assume detailed. I could be annoying for somebody but I need to know what C++ source is msbuild building and with normal verbosity I can’t see this.
  • Configuration

If you are going to use BuildConsole always with the same build file you can use the .config file

<?xml version="1.0" encoding="utf-8" ?>



    <add key="BuildFile" value="mybuild.msbuild"/>



If you need the code just drop me a line. Remember it is dirty code ;)

Download BuildConsole.NET 

I would like to have a better output in Orcas ;)

Easily Add a string resource with CoolCommands

Localizability is one of the tasks that we should be aware to writing a World-Ready Application. Basically this task implies that the application executable code has been clearly separated from the application localizable resources.

So that one required feature in our code is that all literal should be in a resource file. This sound easy but for lazy programmers like me this task is very hard.

In order to make my life easier I did a new coolcommand called “Add As String Resource”.

Basically you select a string in the text editor and after in the right click menu you will have a new option “Add As String Resource”

The command will show you a dialog like this



After add the resource the command automatically execute the custom tool associated with the selected resx file.


In order to install unzip this file and run setup.bat in a VS command prompt.


Deklarit 4.0 Released !!

I'm very happy because Deklarit 4.0 is released our team was working very hard the last months in order to achieve this. I hope you enjoy the new version. If you were involved in beta testing THANK YOU !!

We have added a lot of new features.

DeKlarit 4.0 Key New Features: 
- Integrates with Visual Studio 2005
- New platform-independent layout designer
- Integration with Enterprise Library 2.0 and the Composite Application Block
- Support for the .NET 2.0 Membership and Role API
- Support for Web Services Enhancements (WSE) 3.0
- Redesigned ASP.NET code generator

More Features


More Posts « Previous page - Next page »