Gaston Milano's WebLog

About something...
Annual World Usability Day

Yesterday was celebreated the 4th annual world usability day. In Uruguay it was in the ORT University  Artech and other companies from Uruguay were invited to participate in this event.

Yesterday while I was preparing my talk Fabian (a coworker and Mac fan) sent me the perfect sample for usability where the mental model of a 1 year old user match exactly with the program and hardware model

.

And additionally I found this sample where obviously the program model doesn't match the mental model  (From uselog)

Ticket Machine

 

Posted: Friday, November 14, 2008 4:18 PM by GMilano with no comments

M and textual DSLs

After PDC 2008 everybody start talking about a new way of creating textual DSLs using the Oslo Project, actually I have been confused trying to figure it out what exactly are the differences between the Oslo Project and many of the well proved tools and languages in the market.

The Eclipse world is really well positioned with its Eclipse Modeling Project where you can define your grammar for your textual DSL and have a lot of tools for free for your language (like obviously parsing, editors with coloring, intellisense, deploy the generated editor, etc)

(Take a look here)

 After PDC new samples of Mg (MGrammar) to define languages appeared:

 http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2199

http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2206

So I continue confused because I felt that esentially Mg has the same complexity or even more than ANTLR or the Gold Parser project. And I don't understand why we need yet another way to create languages.

Luckly I found a comment of Don Box in a Gold Parser vs MGrammar post that tell this:

"I think we’re not being super-clear on our side when we talk about M and textual DSLs."

 "While it is possible to write the grammar for a “capital-L” language in M, that’s not where most of us on the team see the primary use case of M. "

"Rather, the sweet spot (in my mind at least) is in enabling tailored syntax over schematized data - that is, the schema dominates the design, not the language per se. "

 I agree with Don Box, Microsoft is not being clear about the message with M, I downloaded and tried the Oslo SDK, I was expecting a complete sample on using the Oslo Project (M, MGrammar, repository, Quadrant, etc) in order to solve a real world scenario.

I know this is only a CTP, anyway I was expecting more.. 

We, the pragmatic developers, need a side by side sample for a real and simple scenario, in this sample every piece of the puzzle should be included.

We need to learn by example, we need to learn by simple and real examples.


Posted: Wednesday, November 12, 2008 7:03 PM by GMilano with no comments

Filed under:

Buildconsole is open source

This morning our team had a very interesting meeting with Jon 'Mad Dog" Hall, we were talking about many topics related with open source. I really enjoy the meeting.

When I developed BuildConsole I knew it was written in a "bad way", I didn't use patterns, I didn't follow styles rules,  I didn't localize the application, I hard coded a lot of things, etc. So, just in case I didn't open the code because of that.

Many times people asked to me for the code and I sent it. The last time Simone Busoli asked to me for open source the code and I accepted. So now you can contribute or use Buildconsole in

http://code.google.com/p/buildconsole/

 Jon said something similar to: If you consider you are giving benefits to users with your product just open it, even if you consider your code ugly.

So, BuildConsole is open source right now.

 

Posted: Wednesday, September 10, 2008 12:39 PM by GMilano with 3 comment(s)

Goodbye CUIL

I give you the chance of a good first impression even I believe Google engine is hard to improve. 

The best definition I got this week was : "Wonderful marketing for a bad product"

So that CUIL lost a lot of users this week. You miss your first chance.

Goodbye CUIL.

Posted: Sunday, August 03, 2008 7:23 PM by GMilano with 3 comment(s)

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

CountryInfo
{
    Info
    {
        Name = "Population"
        Name = "Area"
    }
    Countries
    {
        Country
        {
            CountryISO = CountryId
            Values
            {
                Value = CountryPopulation
                Value = CountryArea
            }
        }
    }
}

 

Posted: Tuesday, June 17, 2008 3:58 PM by GMilano with 2 comment(s)

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:

Cardal

 

 

Posted: Friday, June 13, 2008 5:38 PM by GMilano with 2 comment(s)

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

DataProvider1 

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

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

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

The right code should be:

 TimeSerie
{
    Category
    {
       Name = ItemName
       Date = ItemDate
        X = ItemPrice
        Y = ItemSales
    }

 

And in the Start Event of the Panel

 

WebPanel1  

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

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

And the data is almost real ;)

Posted: Tuesday, June 10, 2008 6:30 PM by GMilano with no comments

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

Customers

{

          Customer

         {

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

 

Posted: Wednesday, April 30, 2008 8:12 PM by GMilano with 4 comment(s)

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:

http://www.gxchart.com/service/drawchart.aspx?Categories=Values:January,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.

GXChart

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

Posted: Monday, December 10, 2007 2:08 PM by GMilano with 3 comment(s)

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 http://www.genexus.com/usa/event 

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.

 

Posted: Tuesday, October 16, 2007 6:59 PM by GMilano with no comments

More Posts Next page »