Perfil de Angel "Java" Lo...Angel "Java" Lopez Space...BlogListas Herramientas Ayuda

Angel "Java" Lopez

Ocupación
Intereses
http://www.ajlopez.com/
14 julio

LINQ in Orcas Beta

I'm using a virtual machine with Orcas installed Beta 1, the version to come of Visual Studio 9. In another one “post” I'll enumerate the main new features, but now, I want to concentrate in showing a small great step to me, that brings built-in code generation for LINQ. (code of this example in Dbml1.zip)

Those that saw LINQ, the Microsoft technology, in some way, an object relational mapping, remembered that there was a command line tool named SQLMetal, that generated code to make that mapping. Now, the SQLMetal is still alive, but, following with the idea of to do everything from the Visual Studio, the Orcas version provides a new type with item: Linq to SQL.

In the example, I dragged tables from a connection of data SQL Server, and soon they appeared in the new designer (in this case, using a datasbase from a Hands On Lab Orcas Beta 1, on a database similar to the one of DinnerNow, with restaurants, menus, and items of menus):

In a file of code produced automatically by “designer” (Redmond boys saw the light, the generation of code… for years that people have been adding more code generation utilities in Visual Studio versions, e.g., software factories… ), in this example, a DinnerNowDataContext:

public partial class DinnerNowDataContext : global::System.Data.Linq.DataContext { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public DinnerNowDataContext(string connection) : base(connection) { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public DinnerNowDataContext(global::System.Data.IDbConnection connection) : base(connection) { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public DinnerNowDataContext() : base(global::DbmlLibrary1.Properties.Settings.Default.DinnerNowOrcasLabsConnectionString) { } public global::System.Data.Linq.Table<Menu> Menus { get { return this.GetTable<Menu>(); } }

in a similar way as the code generated by SQLMetal tool. As before, it defines “business entities” that are the classes that correspond to the database tables:

[global::System.Data.Linq.Table(Name="dbo.Menu")] public partial class Menu : global::System.Data.Linq.INotifyPropertyChanging, global::System.ComponentModel.INotifyPropertyChanged { private global::System.Guid _MenuId; private global::System.Nullable<global::System.Guid> _MenuTypeId; private global::System.Guid _RestaurantId; private global::System.DateTime _StartDate; private global::System.DateTime _EndDate; private global::System.Data.Linq.EntitySet<MenuItem> _MenuItems; private global::System.Data.Linq.EntityRef<MenuType> _MenuType; private global::System.Data.Linq.EntityRef<Restaurant> _Restaurant; [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public Menu() { this._MenuItems = new global::System.Data.Linq.EntitySet<MenuItem>(new global::System.Action<MenuItem>(this.Attach_MenuItems), new global::System.Action<MenuItem>(this.Detach_MenuItems)); this._MenuType = default(global::System.Data.Linq.EntityRef<MenuType>); this._Restaurant = default(global::System.Data.Linq.EntityRef<Restaurant>); } [global::System.Data.Linq.Column(Storage="_MenuId", Name="MenuId", DBType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, CanBeNull=false)] public global::System.Guid MenuId { get { return this._MenuId; } set { if ((this._MenuId != value)) { this.OnPropertyChanging("MenuId"); this._MenuId = value; this.OnPropertyChanged("MenuId"); } } }

Thanks to the people of Southworks by the virtual machine with Orcas Beta 1.

Angel “Java” Lopez
http://www.ajlopez.com/en

14 agosto

Code Generation with my project AjGenesis

Hello people!

In these days I have written new examples for my open source code generator AjGenesis. The project and the examples can lower them from    http://www.ajlopez.com/ajgenesis  

The new examples are in http://www.ajlopez.com/downloads/AjGenesisExamples.zip. On a single model, three implementations are generated: one in PHP, another one in VB.Net, and another one in VB.Net with NHibernate. The model, like in the previous versions, is expressed in XML. Take note that the model is defined by the AjGenesis user. It is not fixed, but that everyone can specify its own model.    If one wants to model systems that only emit a message (classic Hello the World), it could design a model:

<Project> 
 <Message>Hi, AjGenesis</Message>
</Project>

(there is an example as this in the main solution).    Also it opens models of XMI, but still there is no template to process it. You can open the the AjGenesisWinConsole utility that comes in the solution, and do File Open:

 

You can observe that from the language of the AjGenesis, it is possible to be acceded to those values with nonstandard names as:    [UML: Diagram] .name.

From the last year, I incorporated integration to him with NAnt, therefore an example is seen from the NAnt-GUI: 

Each new example have a .build file that defines the tasks to be executed from NAnt or from NAnt-GUI. In the Templates directory are groups for different technologies (VbNet, PHP, MySql, MSSql….). In the Tasks directory the tasks were placed to execute from the NAnt. In Projects directory the projects are in directories, each one has a Project.xml that describe the model, and severa Technology*.xml files that describe the platform dependent model.    This it is a look of the structure

In the case of the Vb.Net project, it generates the solution, and several projects (it is necessary to publish the Web project directory as a web site before open the solution in VS 2003). See part of the result:

I hope that you can use AjGenesis; suggestions, critics, contributions are welcome!

Angel "Java" Lopez
http://www.ajlopez.com/

13 agosto

Agile Methodologies

The past 22 June, Martin Salías gave an excellent conference on agile methodologies, at the University of El Salvador, in Buenos Aires, organized here by the Club of Programmers. I have taken some notes, that I will publish and comment when I get some time. Today I want to write down a list of agile methodologies and its connections, according to Martin´s lecture:
 
Crystal
of Alistair Cockburn
Cockburn is one of the more philosophical founders of the agile stuff. Crystal aims at small groups.
 
Feature Driven Development 
It aims to think the things on the basis of characteristic, it decompose a problem in features.
 
Adaptive Software Development 
It puts the emphasis in the short iteration.
 
Scrum
It is a methodology of control of projects that can accomodate any of the others ..... A people group said: “this is fantastic… agile is terrific…. but as it costs to put this in the head of the managers”. They generate products to calm that anxiety.
 
Agile Modeling 
Invention of Scott Ambler, he is a guy that models much, he dominates several subjects, and he invented this method: “I recognize that there is value in the UML layout, but all that becomes too heavy, we use it, but using paper and pencil, we remove the formal question”. Let us return to which really the diagram must contribute.   
 
Extreme Programming
Most well-known, Beck´s method.
 
Angel "Java" Lopez
 
01 agosto

Software as a Service

In these days I am working on this subject: Software as a Service, new “buzzword” that is had been spreading time in the last years.

We can see a definition of SaaS in the glossary of the Skycrapr

http://www.skyscrapr.net/archipedia/default.aspx/Archipedia/SoftwareAsAServiceGlossaryEntry.html

“The key characteristics of SaaS software, according to analyst IDC include:

1. Network Access to, and management of, commercially available (e.g., not custom) software

2. Activities that plows managed from central locations to rather than AT each customer's site, enabling customers to Access applications remotely via the Web

3. Application delivery that typically is to closer to to one-to-many model (single instance, multi-tenant architecture) than to to one-to-one model, including architecture, pricing, partnering, and management characteristics “

We can consult the Wikipedia

Software ace to Service - Wikipedia, the free encyclopedia

where we found:

“Software ace to Service (SaaS) is to model of software delivery where the software company prograpevines maintenance, daily technical operation, and support for the software provided to to their client. SaaS is to model of software delivery to rather than to market segment; software dog be delivered using this method to any market segment including home consumers, small business, medium and large business.”

Translating: SaaS is commercial applications, that are accessible by the network, and its use to customer offers, that do not need to install that software. The supplier of SaaS sells or rents its use, preinstalled in a server in the network. But it is not only “precanned” software in the network, but that allows the adaptation to the customer. The term multitenant emphasizes that a same application can serve several customers.

But the symbol is the idea to have the application available by network. That is what changes fundamentally with respect to the commercial software, ERP, CRM, or what they want. Emblematic example of this type to watch is SalesForce that offers what they denominates “on-demand Customer Relationship Management”. This company I discovered at the time of the bubble of Internet: its model seemed to me interesting, and of the things that there are been developing since then, aims much of some form to reproduce that model to arrive at a Enterprise Resource Planning, offered like service.

Those that has some memory, remembered that this is similar to the ASP concept: Application Service Provider, like which we found in

http://www.aspstreet.com/
http://www.aspnews.com
http://en.wikipedia.org/wiki/Application_service_provider

Visit those sites, and they will find renewed, discussing them to all steam on the concept of Software as to Service.

Here in my Argentina country, we found to Mirol, years ago, advocating by this concept:

http://www.mirol.com/modalidad-asp.asp

“Imagine to as much save resources in hardware, software, as well as in personnel of support and administration…

Imagine not to have to worry about updates and new versions of software, obsolete hardware, creation of new users… “

Several companies of computer science technology, have risen the train, like IBM and Microsoft. From the point of view of this company, he is interesting to read some articles, like

Architecture for Strategies Catching the Long Tail

classic of Fred a Chong and Gianpaolo Carraro. There they argue that, economically, the SaaS model aims at the great volume that is able to arrive at the clients from the “long tail tail”/“long” from:

Also they emphasize that the distribution of costs happens of:

to this distribution

But pay the attention, at the giant of Redmond, Ray Ozzie, heir of the position of Gates, is dedicated to the subject, like in

http://www.internetnews.com/ent-news/article.php/3623171

To follow the SaaS subject see the blogs of Chong and Carraro:

http://blogs.msdn.com/gianpaolo/
http://blogs.msdn.com/fred%5Fchong/

as well as the blog of the Great Woloski (he has decided to write its thesis on SaaS):

http://staff.southworks.net/blogs/matiaswoloski

The good one of Mattew wrote

SaaS: naming, paradigm shift, estimates
SaaS: Workflow in multitenant environment
SaaS: Realization of Metadata Services

The article is interesting on workflow of Woloski, because it raises subjects in which I am thinking from almost the last century, on which are “the variable” parts of an application. More on which I want to do, in the following paragraphs.

An interview to the good one of Gianpolo Carraro by Diego Dagum in

“Software ace to Service”: Char it Thoroughly With Gianpaolo Carraro

Points of view of Gianpaolo in:

SaaS Guidance: not only for ISVs
SaaS estimates proposition for to buyer
Simple SaaS Maturity Model
Multi-Tenancy, metadata driven everything and you plows my #1 to customer

He is an intelligent person, he reads the same books that I read…: -)… He reads

Blue Ocean Strategy and Architecture

It is interesting to begin to think how it would have to be a SaaS application from the technical point of view. I imagine that it would have to support to many companies, to somehow allow the formation of a community. This can be a competitive advantage of a SaaS supplier: applications can benefit from sinergia to work with other companies that use the same application, as a site of coorporativas purchases. A supplier will want to use the application that has greater amount of buying companies that use it, if this application allows that a company communicates with other tenant companies.

Back to technical discussion. I have some ideas in my mind. My brain is open to the SaaS concept. For years, I worked in generation of code, and the interpretation of metadata. In my tech spanish blog I already published some code to generate web pages dynamically Forms ASP.NET generated in execution, on the basis of metadata that describes a form. Somehow, it was thinking about an application ASP (to see for example, the germ of this in http://www.ajlopez.com/ajcontab). It seems to me that that one is the way to explore, in the subject of development of commercial applications.

A subject to study, is the organization of the data, a similar type of application is mentioned in the excellent article of Carraro, Chong and Wolter:

Multi-Tenant Data Architecture

How it could construct a test of concept of SaaS? I believe that I can begin to write some requirements and cases of business and vision, of a SaaS application. As a proof of concept, it would face an application that allows to the companies and users, to define its own organizations of data (that know my generator AjGenesis code know to what I aim), and to define, soon, of some form, a job stream with those data. I can imagine a name AjAga (Aj Another Generic Application…: -). A great decision is if that application should be implemented by generation of code or interpretation of metadata in execution. My idea, is to arrive at an application that, according to Carraro, is

Level 1: (Configurable)

AT level 1, the software for dog be tailored each tenant via configurations (not custom code), all the tenants uses the same code. However AT level 1, the architecture is still not multi-tenant, each to customer runs its own Copy (albeit the same). The separation dog be to either virtual (virtual machines on to same server) or physical (running on separate machines). Although much to better than previous level, the architecture allows customization through configuration (code bases is the same), the computing to power is not shared among the instances and therefore to provider cannot achieve economy of scale, putting it AT to competitive disadvantage versus. to multi-tenant solution.

 

and then, I could produce something like

Level 2: (Configurable, Multi tenant)

AT this level. the application architecture includes the multi tenancy concepts. Akin to level 1, the UI customizable dog be per tenant, under dog the business rules and the dates model. The customization to per tenant is fully performed through configuration and is performed through to self-service tool, getting around the need of to provider intervention. It is almost the SaaS “perfect marries”; the only big piece missing AT Level 2 is the capacity to scale out; the dates partitioning is such AT this level that growth dog only be achieved by scaling up.

(extracted of the mentioned article Simple SaaS Maturity Model)

I have left some additional resources on SaaS in

http://del.icio.us/ajlopez/saas
http://www.ajlopez.net/Busqueda.php?Filtro=saas

More delicious in

http://del.icio.us/tag/multi-tenant
http://del.icio.us/tag/saas

Angel “Java” Lopez
http://www.ajlopez.com/

20 julio

Stay hungry, stay foolish

Johnny Halife sent me the following excellent email, a Steve Jobs' lecture at Stanford, last year:
 

‘You’ve got to find what you love,’ Jobs says

This is the text of the Commencement address by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005.

I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I’ve ever gotten to a college graduation. Today I want to tell you three stories from my life. That’s it. No big deal. Just three stories.

The first story is about connecting the dots.
I dropped out of Reed College after the first 6 months, but then stayed around as a drop-in for another 18 months or so before I really quit. So why did I drop out?
It started before I was born. My biological mother was a young, unwed college graduate student, and she decided to put me up for adoption. She felt very strongly that I should be adopted by college graduates, so everything was all set for me to be adopted at birth by a lawyer and his wife. Except that when I popped out they decided at the last minute that they really wanted a girl. So my parents, who were on a waiting list, got a call in the middle of the night asking: “We have an unexpected baby boy; do you want him?” They said: “Of course.” My biological mother later found out that my mother had never graduated from college and that my father had never graduated from high school. She refused to sign the final adoption papers. She only relented a few months later when my parents promised that I would someday go to college.
And 17 years later I did go to college. But I naively chose a college that was almost as expensive as Stanford, and all of my working-class parents’ savings were being spent on my college tuition. After six months, I couldn’t see the value in it. I had no idea what I wanted to do with my life and no idea how college was going to help me figure it out. And here I was spending all of the money my parents had saved their entire life. So I decided to drop out and trust that it would all work out OK. It was pretty scary at the time, but looking back it was one of the best decisions I ever made. The minute I dropped out I could stop taking the required classes that didn’t interest me, and begin dropping in on the ones that looked interesting.
It wasn’t all romantic. I didn’t have a dorm room, so I slept on the floor in friends’ rooms, I returned coke bottles for the 5¢ deposits to buy food with, and I would walk the 7 miles across town every Sunday night to get one good meal a week at the Hare Krishna temple. I loved it. And much of what I stumbled into by following my curiosity and intuition turned out to be priceless later on. Let me give you one example:
Reed College at that time offered perhaps the best calligraphy instruction in the country. Throughout the campus every poster, every label on every drawer, was beautifully hand calligraphed. Because I had dropped out and didn’t have to take the normal classes, I decided to take a calligraphy class to learn how to do this. I learned about serif and san serif typefaces, about varying the amount of space between different letter combinations, about what makes great typography great. It was beautiful, historical, artistically subtle in a way that science can’t capture, and I found it fascinating.

None of this had even a hope of any practical application in my life. But ten years later, when we were designing the first Macintosh computer, it all came back to me. And we designed it all into the Mac. It was the first computer with beautiful typography. If I had never dropped in on that single course in college, the Mac would have never had multiple typefaces or proportionally spaced fonts. And since Windows just copied the Mac, its likely that no personal computer would have them. If I had never dropped out, I would have never dropped in on this calligraphy class, and personal computers might not have the wonderful typography that they do. Of course it was impossible to connect the dots looking forward when I was in college. But it was very, very clear looking backwards ten years later.

Again, you can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.

My second story is about love and loss.
I was lucky — I found what I loved to do early in life. Woz and I started Apple in my parents garage when I was 20. We worked hard, and in 10 years Apple had grown from just the two of us in a garage into a $2 billion company with over 4000 employees. We had just released our finest creation — the Macintosh — a year earlier, and I had just turned 30. And then I got fired. How can you get fired from a company you started? Well, as Apple grew we hired someone who I thought was very talented to run the company with me, and for the first year or so things went well. But then our visions of the future began to diverge and eventually we had a falling out. When we did, our Board of Directors sided with him. So at 30 I was out. And very publicly out. What had been the focus of my entire adult life was gone, and it was devastating.
I really didn’t know what to do for a few months. I felt that I had let the previous generation of entrepreneurs down - that I had dropped the baton as it was being passed to me. I met with David Packard and Bob Noyce and tried to apologize for screwing up so badly. I was a very public failure, and I even thought about running away from the valley. But something slowly began to dawn on me — I still loved what I did. The turn of events at Apple had not changed that one bit. I had been rejected, but I was still in love. And so I decided to start over.
I didn’t see it then, but it turned out that getting fired from Apple was the best thing that could have ever happened to me. The heaviness of being successful was replaced by the lightness of being a beginner again, less sure about everything. It freed me to enter one of the most creative periods of my life.

During the next five years, I started a company named NeXT, another company named Pixar, and fell in love with an amazing woman who would become my wife. Pixar went on to create the worlds first computer animated feature film, Toy Story, and is now the most successful animation studio in the world. In a remarkable turn of events, Apple bought NeXT, I retuned to Apple, and the technology we developed at NeXT is at the heart of Apple’s current renaissance. And Laurene and I have a wonderful family together.

I’m pretty sure none of this would have happened if I hadn’t been fired from Apple. It was awful tasting medicine, but I guess the patient needed it. Sometimes life hits you in the head with a brick. Don’t lose faith. I’m convinced that the only thing that kept me going was that I loved what I did. You’ve got to find what you love. And that is as true for your work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don’t settle.

My third story is about death.
When I was 17, I read a quote that went something like: “If you live each day as if it was your last, someday you’ll most certainly be right.” It made an impression on me, and since then, for the past 33 years, I have looked in the mirror every morning and asked myself: “If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been “No” for too many days in a row, I know I need to change something.
Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.

About a year ago I was diagnosed with cancer. I had a scan at 7:30 in the morning, and it clearly showed a tumor on my pancreas. I didn’t even know what a pancreas was. The doctors told me this was almost certainly a type of cancer that is incurable, and that I should expect to live no longer than three to six months. My doctor advised me to go home and get my affairs in order, which is doctor’s code for prepare to die. It means to try to tell your kids everything you thought you’d have the next 10 years to tell them in just a few months. It means to make sure everything is buttoned up so that it will be as easy as possible for your family. It means to say your goodbyes.

I lived with that diagnosis all day. Later that evening I had a biopsy, where they stuck an endoscope down my throat, through my stomach and into my intestines, put a needle into my pancreas and got a few cells from the tumor. I was sedated, but my wife, who was there, told me that when they viewed the cells under a microscope the doctors started crying because it turned out to be a very rare form of pancreatic cancer that is curable with surgery. I had the surgery and I’m fine now.

This was the closest I’ve been to facing death, and I hope its the closest I get for a few more decades. Having lived through it, I can now say this to you with a bit more certainty than when death was a useful but purely intellectual concept:
No one wants to die. Even people who want to go to heaven don’t want to die to get there. And yet death is the destination we all share. No one has ever escaped it. And that is as it should be, because Death is very likely the single best invention of Life. It is Life’s change agent. It clears out the old to make way for the new. Right now the new is you, but someday not too long from now, you will gradually become the old and be cleared away. Sorry to be so dramatic, but it is quite true.

Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

When I was young, there was an amazing publication called The Whole Earth Catalog, which was one of the bibles of my generation. It was created by a fellow named Stewart Brand not far from here in Menlo Park, and he brought it to life with his poetic touch. This was in the late 1960’s, before personal computers and desktop publishing, so it was all made with typewriters, scissors, and polaroid cameras. It was sort of like Google in paperback form, 35 years before Google came along: it was idealistic, and overflowing with neat tools and great notions.

Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its course, they put out a final issue. It was the mid-1970s, and I was your age. On the back cover of their final issue was a photograph of an early morning country road, the kind you might find yourself hitchhiking on if you were so adventurous. Beneath it were the words: “Stay Hungry. Stay Foolish.” It was their farewell message as they signed off. Stay Hungry. Stay Foolish. And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

Stay Hungry. Stay Foolish.

Thank you all very much.

 

------------------------

Great message!

 

Angel "Java" Lopez
http://www.ajlopez.com/

07 marzo

Presentation

Hi people!
My name is Angel "Java" Lopez. I'm from Argentina, where I'm living. This is my first blog in English. You can visit my web site (in Spanish)
 
 
and my Spanish blog
 
 
I'm a software developer, interested in many topics, like science, math, scifi, and books. English is not my mother tongue, but I'm studying hard. So, I apologize for any sintax, grammatical error in my posts.
 
Actually, I work in software development, training and mentoring, with PHP, .Net, and Java. In general, I write open source code that I publish on my web site, or in my courses. I love to program, and usually, I stand for hours in front of my notebook, everywhere, writing my own software.
 
I hope to post something interesting for you. Internet is a new wonderful world.
 
Angel "Java" Lopez