Carcast #3: Summer Reading and Excitement in Programming

No, there is no reason to justify 2-3 hours in the car on commuting. I “m continuing finding a way to make this time productive by listening to podcasts, but here “s my third contribution to the movement “Commuters Unite! rdquo;

For this third carcast (listen to the MP3 here: yakov_carcast3_summer_read.mp3) I picked up the following topics:

1. Is there excitement in software development

2. Summer reading

a)Tuesdays with Morrie

b) Mythical man-month

c) Secret and Lies

d) Object-Oriented Analysis and Design With Applications, second edition

e) Eric Sink ndash; free eBook Business of Software

f) Java for Kids, Parents and Grandparents

g) Why Zebras do not get ulcer by Robert Sapolsky. Purchase used book at Amazon.com. For example, today after listening to the recorded lectures by Robert Sapolsky I “ve got this book there for one penny plus $3.99 for shipping and handling. Here “s the copy of my order:

Order #:058-8168771-5950736 Shipping Method: Standard Shipping Subtotal of Items:$0.01 Shipping amp; Handling:$3.99 – Total for this Order: $4.00

Shipping estimate for these items: July 2,2007

“Why Zebras Don ‘t Get Ulcers: An Updated Guide To Stress, Stress Related Diseases, and Coping ( “Scientific American ” Library) ”

Robert M. Sapolsky; Paperback; $0.01

3. Listen to Robert Sapolsky: http://www.wnyc.org/shows/radiolab/episodes/2007/07/01

4. UPS IT disappoints.

5. Leonard Cohen. If you haven not heard his music yet I envy you, cause I already did. These are the video clips with some of his great songs:

a) Dance me to the end of love

b) I “m your man

If you are over 30 and do not like this music, there is something wrong with you. Period.

Commuters, Unite! Let “s help each other. If you know of some interesting podcasts that can make commute less useless, please leave a comment to this carcast.

SOA, RIA and the Human Factor

While delivering a talk on SOA I ‘ve asked the audience the following question, “What do you think is the driving force for implementing any technology or architecture in a decent size Enterprise? rdquo; The answers were typical ndash; better code re-usability, accessibility hellip; But I was looking for a different answer that has nothing to with technical merits of any technology. Based on what I see in the real world enterprises, the main reason of implementing SOA (or any other IT initiative) are career goal of individuals working in this organization.

People want to become more visible and move up the career ladder. Implementing SOA across organization can make enough noise to move them to the next level.

SOA Ground Up

The SOA in your firm can evolve from the ground up. For example, an ambitious architect attends conferences, goes through training, reads white papers, and now he truly believes that SOA is a right way to go. He “s aggressive and influential and managed to convince the CTO or CIO to allocate funds for this.

If you are not an architect but just a software engineer, you may try to start convincing your application manager, but typically application managers don “t want SOA. They are busy with business as usual: do not forget to call into the change management meeting, fix yesterday “s production bug, deal with an offshore team, attend 5-6 meetings a day hellip; They are firefighters. Imagine a firefighter that is putting out a fire hellip;Here you come in a clean white suit offering to sell some new bells and whistles for a fire truck hellip;

The chances of a software engineer to start SOA movement are very slim, really.

SOA Top Down

Another reason for SOA is this: your CIO went to a conference and attended a presentation of an energetic speaker, which clearly explained benefits of SOA over any existing architecture. This is the worst case. Subordinates will not resist – they also have career goals hellip;

Your CIO will come up with an SOA project plan based on available funds and resources, which means that this project is doomed. The fact that your CIO will never admit that it was a mistake makes things even worse.

All application groups will roll up the sleeves, will work hard and meet the deadlines.

But let me remind you a quote from a must read book “The Mythical Man-Month rdquo;:

An omlette, promised in two minutes , may appear to be progressing nicely. But when it has not set for two minutes, the customer has two choices ndash; wait it or eat it raw. Software customers have had the same choices.

The cook has another choice; he can turn up the heat. The result is often an omlette nothing can save ndash; burned in one part, raw in another.

SOA as a burner

The third reason for implementing Enterprise SOA is to burn some cash: we (IT) have $2M ndash; let “s service-enable all of our applications by the end of this year. Why $2M? It “s elementary, Watson! Because you need to burn $2M this year, otherwise you won “t get funding next year. Get some high-price items. Who cares that no real feasibility study was made? Just go with a well known vendor and get expensive software/hardware – your developers will figure out how to plug in that Enterprise Service Bus into your SOA.

SOA Maturity

I work as a consultant, and sometimes I have to interview technical managers to figure out if SOA is a realistic solution for their company, and how the CUSTOMERS of this particular silo application will benefit from implementing SOA in the firm.

What do I see ndash; all these people are working hard to fulfill their current obligations, to make sure that their applications are up and running in production, that support calls are answered in a timely manner, the offshore team is delivering, and on and on and on. And her I come in a white suite asking all these smart questions:

rdquo;How do you run business today? rdquo;

“What parts of your application are the candidates for being converted into services? No, SOA is not the same as Web Services rdquo;.

And these polite but tired people are looking at me, listening to me, they “ve seen already other architects trying to change the way they do stuff in their organization. Several similar initiatives have failed before, and here we go again hellip;I can not forget one technical manager ndash; this lady was having hard times even finding time for meeting with me. During the appointment she was polite, but looked tired and worn out. She “s a professional and was trying to answer me questions anyway, but her phone rang off the hook, he right hand was moving the mouse over the MS Outlook screen. “I “m so sorry, I need to take this call hellip; rdquo; And I “m thinking to myself, rdquo;What am I doing there? Does she needs SOA? rdquo;

Is your organization ready for SOA? Does your company have the right skills, infrastructure, SLA, SDLC in place? What methodology are you planning to use to identify services?

Do you have lots of third-party shrink-wrapped applications?

You know how to wrap up your CICS application into a Web Service, but are your mainframe developers willing to get re-trained? What about the governance?

Some architects start with purchasing expensive software and hardware assuming that the main part of the SOA initiative is accomplished. No, you can “t buy SOA.

Someone has to do a feasibility study for your firm (preferably external vendor) ndash; but this has to be an honest opinion of a qualified group of people. This study has to be convincing, it has to show if implementing SOA is the right choice at this time for your firm.

SOA maturity assessment is extremely important.

Technical Benefits of SOA

If someone will create an inventory of all applications of a large organization and the data exchange between these applications, it may look scary.

An app A provides data to app B. It would be nice if the app A would be able to easily send the same information to applications C and D as well, but this would require some data transformation. Currently, your people would just create and deploy a new ETL (extract-transform-load) processes for A2C and A2D data exchange.

But SOA can offer you a more elegant way by implementing an Enterprise Service Bus that would take care of the data routing and transformation. Someone said that the main reason for implementing SOA is reusability? Let “s look at the before-after SOA diagram:

The second diagram looks much better than the first one, but how much it “s going to cost your firm to switch from the first diagram to a second one?

How much would a reusable service cost you comparing to just writing new ETL scripts for each new connected pair? Is it worth the money?

Why reusable components would be expensive? Let “s talk about infrastructure, which is an enterprise level group that owns shareable software and hardware.

ESB Infrastructure

ESB requires a centralized group with proper skills. How this group will be funded (a slice of each project “s budget, internal consulting, a hybrid)? SLA must be in place that would require this group accommodate every application team “s needs in a timely fashion. The quality of service has to be clearly defined (is it 24×7 or what “s the max time the service can be down).

Do not forget about service versioning, which is not the same as application versioning. Some service consumers may be happy with the version 3.2 and you “ll have to support both 3.2 and 3.3.

Coming back to the human factor – do you have good relations with the ESB group? Personal relation will always get you farther that any SLAs combined. By the way, Joe Smith who runs the ESB group has his own career objectives and ambitions

The ESB group has to accommodate application group “s needs in a timely fashion. You need to make sure that Joe find time in his busy schedule and allocate his resources to your project “s needs.

If you keep your ugly point-to-point ETL way of connecting silo applications, you do not need to create this infrastructure and introduce yet another moving part into your rather complex enterprise architecture. Again, human relations between you and Joe Smith become crucial for the success of your SOA project.

Now you need to get trained and spend some time preparing your data for the input into the ESB in the proper format, specify the right output format for every new application and document it according your firm “s SDLC process. How quickly the infrastructure team will write and test the conversion script for your recipient application?

Yes, every new connection between the applications that you introduce adds a bit more spaghetti to the diagram, but you could have done all this with your own resources in a controlled timely manner without missing deadlines and jeopardizing your career. By the way, Joe Smith from infrastructure has his own career objectives. If your project fails, your yearly review suffers, now you need to find common grounds in achieving yours and Joe “s personal goals.

To SOA or not to SOA

This does not mean at all, that I do not recommend you to implement SOA in your enterprise, it just means that you need to be prepared and armed when it comes to dealing with all these issues. SOA is definitely a way to go in green field situations when you start automation of your enterprise from scratch.

I wonder if you are familiar with this diagram:

This is Minard ‘s Diagram of Napoleon ‘s March on Moscow of 1812. The width of the line shows the size of the army on the way to Moscow and back.

Napoleon was expecting greetings from Moscow authorities, but entered the abandoned and burnt city with no supplies and food for his huge army. His retreat was also a deadly enterprise because of an extremely cold winter ( minus;36 deg; F ), no grass for horses (most of them were eaten by the French soldiers anyway). You can read more about it in Wikipedia.

My message to you is this: “Do not repeat Napoleon “s mistakes in your SOA journey. Do not start it unless you have the right expectations and your infrastructure will definitely be ready.

Making Business Users Happy

Oh man, I almost forgot about your business users! Will they happily greet you at the gates of their cities? How did you convince them that they should shell out a substantial chunk of money for implementing your SOA initiative? Do they actually know about this initiative or you managed to get funding because you play gulf with the CEO of your firm?

If this is the case, I have bad news for you ndash; you can “t avoid contacts with business user during immersing your enterprise into SOA waters.

Do they give a damn about what architecture you use to give them the data? Not really. They will definitely ask you a simple question, “OK, I “ll give you X amount of dollars and allocate resources for a year for your SOA project. Will I run business differently a year from now? Will you provide me more analytical data in a more convenient form? Will my customer-facing sales force become more productive which will translate to more sales? rdquo;

SOA+RIA

To make end users more productive, we need to shift gears a little bit and recall that user experience really matter.

Think of iPod. How many people know the name of its competitor? What do you prefer ndash; Apple “s iPod or Zune from Microsoft?

The Zune has a bit more functionality, but iPod looks nicer and the user interface is cleaner. InformationWeek has published an article listing 8 alternatives to iPod . Have you even heard of them?

Tomorrow, huge number of people hopes to get a hold of the new Apple “s widget called iPhone. They want it now. $600? Not a problem. They want it now. Let me stress, it “s still a phone with the ability to browse the Web and a modest disk space for storing music. From the services perspective is not a revolution, it “s the User Experience that make it stand out and this is the main reason why people want it.

You may ask, what all this has to do with SOA? People like nice looking gadgets, and they like nice looking program interfaces too! It “s easier to sell SOA to your business users if the SOA client applications are convenient and slick. Especially this is true for the customer facing applications. If you sales representative comes to a prospective client with a rich-looking application clearly showing your products, their job becomes a lot easier. If you offer your firm “s financial analysts rich GUI interface with live chart and graphs to easily compare performance of two mutual funds, analysts will really appreciate it. You still need to program the services that will go and get the data, but having great presentation layer is extremely important.

When you create or modernize your application, do not just think about powerful multi-processor servers, multithreading, and ESB. Start redesigning the users experience ndash; it has to be available everywhere (at home, on the road and in the office), it has to be responsive, and it has to look better than client server application written it was ten years ago in Visual Basic and PowerBuilder.

Ten years ago we were thinking screens not servers. And this was not a bad idea. When Java was born, the client programming became complex, besides, Sun Microsystems and IBM wanted to sell server licenses, which has moved most of the Java development to the server side.RIANow we can talk about the rich Internet applications (RIA) that can and should be used as consumers to the services. The RIA term was coined by Macromedia back in 2002. I “m not sure if there is a formal definition of this term, but you can think of RIA as desktop-quality applications delivered over the Web with no (or close to none) installation required. Let “s turn on the time machine and go 20 years back. Mainframe with their dumb terminals dominates. The client portion of the application is a black screen displaying green and red text. Then, in the early ninetieth client-server application came about. The clients were not dumb anymore, rich looking GUI that utilized the processing power of the PC.

In mid 90th, Internet became popular. Plain looking pages had an ability to get all kind of information from a plethora of remote servers. From the GUI perspective, it was a pushback. Mainframe had black background with green letters, while Web pages had colored backgrounds, static pictures and the same text fields, buttons and rudimentary HTML tables.

Now the rich GUI is coming back again in the form of RIA. These are not page-by-page typical Web site, but full-fledged applications with rich controls, audio and video, with state stored on the client. Now the user get this nice looking application delivered to their PC without the need to go through a complex install process.

Today, RIA can be created with Adobe Flex or AJAX. Microsoft “s Silverlight is coming out later this year, and Sun Microsystems will offer their JavaFX RIA solution in 2008. OpenLaszlo can also be used for creation of RIA. All these technologies can be used for creation of consumers of the services in your next SOA project. Leading enterprises started using professional designers for wire-framing next generation Web applications.

If you are an architect of an enterprise SOA project, do not just think servers, clusters, and grid computing. Think of your business users. Give them something nice, and they “ll be helping you with your SOA-SHMOA efforts and will enjoy the new system as they already enjoy iPods and upcoming iPhones. SOA must improve user experience of your business clients ndash; do not underestimate the human factor.

Whats the right price of software?

I decided to write this post after reading a blog called “Black Label from Adobe rdquo;. This post has a photo of a black brochure that (according to the author of the blog) Adobe mails to marketing agencies in Russia. The brochure is titled “What would you do without Adobe in your life? rdquo;

This post is written in Russian, but I “ll translate the important part for you:

“Imagine, what do we feel when Adobe products are being used illegally. Install only licensed Adobe products. Do not take a risk, protect yourself from legal consequences of using illegal software.

Try to imagine that hellip;

hellip;someone has stolen your ideas you “ve been working on your entire life, and offers them as his own and receives an award for this hellip;someone just fired you without paying for your work hellip;someone has used your good reputation to sell his own products or services of a lower quality hellip;and after doing all this tries not to be accountable for this stating, “What “s the big deal? There is nothing wrong with it, everybody does it rdquo; hellip;

How would you feel?

In my opinion, sending these kinds of letters won “t help in the countries with very low salaries, especially if purchasing software is not a habit. Imagine a situation when you are giving a plate full of food to a hungry person saying, “Please do not touch the food until you “ll find utensils. rdquo;

This post has lots of comments made by Russian software engineers, and some of them make comments that they “d love to purchase licensed versions of the software, but they could not afford to shell out half of their monthly salary for a program. Another person writes that Microsoft sells their products in Russia for half price while Adobe sells CS3 in the USA for $998 and for $1500 in Russia (the author is not sure though who adds this markup ndash; Adobe or resellers).

But having the right salary is not enough for starting purchasing software. Here in America, programmers can afford purchasing software, but not all of them do so. Usually employers purchase the software and employees are just using it for free. Lots of American programmers make illegal copies of the software and use it at home. People are getting cracked versions of software or ust download serial numbers of the products from the Web.

Recently, one of the senior software engineers wrote that he does not want to use any software that is not open sourced. It “s a pretty weird statement. I “m sure this guy did not try to create and sell his own software.

Our company has created an open sourced code generator called DaoFlex. This was a command-line program with minimal documentation. It was well received and we decided to create a more user-friendly version of this program as a plugin for Eclipse. We knew how to do it, invested time and resources to coding and documenting of this plugin. Since we invested into development of this plugin with our personal savings, we decided that this will be a commercial plugin that we “d sell. To make the story short, in about 6 months the plugin was ready. We ‘ve spent more money on creating the Web site (www.myflex.org ) to support sales. We “ve written a license management module and ensured that the license will get expired after the trial period.

The pricing was the next question. How much should we sell it for? On one hand we wanted it to be affordable. On the other hand it should not be dirt chip either, because more sales means more support calls and the need to hire an engineer just for the tech support. And lastly, we “d like to at least break even by selling this product.

Anyway, we set the price of $399 for this particular plugin. People started purchasing this product, , and all in all we believe that the this product is not overpriced given the huge time savings that this code generator brings to any enterprise Flex/Java shop.

Summary

1. If our software will be cracked, I won “t get upset because it proves that we really created something useful.

2. Investing serious money into software protection is useless ndash; hackers will break it anyway (if they care).

3. Our main perspective customers are corporations from developed countries, and they usually pay for licenses – this is a huge market for us.

4. We may switch to a dual licensing model and will give our software away for free to individual users, but we ‘ll charge our corporate clients for this software.

5. There is a small number of people that will pay for the software even if they can get it for free, but this is a minority, and it “ll stay this way for a while.

6. I believe that in 10-15 years most of the software will become available for free.

7. Fighting with software piracy is as useless as fighting with marijuana. A well known comedian M. Zhvanetsky put it, “This is not a fight and this is not a result rdquo;.

8. Instead of wasting money on mass mailing brochures asking wolves to become vegetarians, just spend these funds on lowering prices of your products.

Disclaimer. Last month I paid $20 USD for a shareware program that I use for podcast recording. One of the announced features did not work. I sent an email to the vendor ‘s tech support, but they never got back to me. Oh well, you get what you paid for.

Answer my question right and get a free book

Every morning I see the same progress bar for a 30 sec or so. Sometimes I see it twice a day. If you ‘ll guess right what progress bar I ‘m talking about, I ‘ll send you a free signed copy of my book “The Java Tutorial for the Real World “.

Please send your answers at yfain at sys-con.com.

Update: We ‘ve got the winner – Ryan Powers. He did not answer exactly what the progress bar was shown, but at least he named the device properly – a coffeemaker. We have this coffee machine in the pantry room that shows a progress bar while it makes the coffee. I know, it ‘s crazy to have a progress bar there, but hey, it ‘s 21 Century!

We are teaching a one-day Flex bootcamp in ten days

We are teaching yet another one-day Flex bootcamp on Sunday, June 24 as a part of the SOA World conference. No prior knowledge of Flex is required, but you should understand object-oriented programming and XML. This is pretty intensive hand-on learning (attendees bring and use their laptops), but at the end of the day you ‘ll have a pretty good understanding of what Flex is about, what are the challenges of developing enterprise applications in Flex. You ‘ll also get familiar with some Eclipse plugins that can turn your Flex/Java project into rapid application development environment.

We ‘ve taught this bootcamp earlier this year, and we ‘ll teach it again in several other cities across the USA later this year. If you ‘d like to join us, Sys-Con Media gave me a little something – just enter yakovspecial as the coupon code to get $50 discount.

If you have to jump-start a new Flex-Java project, this seminar will definitely help you.

Carcast #2: Joels new book, MVP scandal and Flex 3

This podcast is my selection of the recent online news not to be missed

1. Joel Spolsky publishes a book “Smart and getting things done rdquo;

2. Microsoft threaten to sue an MVP Jamie Cansdale :

3. Adobe Apollo is called Adobe Integrated Runtime goes to beta

4. Flex 3 goes to beta . Most important additions: smaller size SWF, new advanced datagrid component, Flex Component Kit for Flash CS3.

5. David Heinemeier Hansson: “You are not in a f..ng plane rdquo;, Sergey Brin: it sucks when you are on the plane and…

6. Hackers are cowards

7. More on Paris Hilton

8. The Sopranos show is over

Update: after listening to this podcast one of my colleagues was surprised that Sergey Brin ‘s plane does not have an Internet connection

Two sacred cows – Ajax and Paris Hilton

Last Monday I was participating in the rich Internet application panel that has been broadcasted live from Times Square. The recording of this session is available. Unfortunately, none of my comments on Ajax made it to the recording (they were mainly negative). So do not be surprised hearing Coach Wei answering my comments, which you ‘ve actually never heard. No big deal, you can hear my raw unedited comments on current rich internet application technologies in my podcast at this URL .

AJAX is one of the most searchable technical words today. One of the most popular searches in the non-technical world is the name Paris Hilton.

Forget Ajax, what really bothers me is the fact that Paris Hilton is prematurely out of jail “because of an unspecified medical problem “. Money talks in the USA. “Under the new agreement, Hilton would be confined to her home for 40 days “. This sucks big time!

Update: Paris is back in jail, and for more details on the “unspecified medical problem ” listen to the podcast #2.

Turning Your Flex/Java Application into a RAD Project

While using Adobe Flex for development of the front end portion of your J2EE applications slowly but surely become a reality, many enterprise managers are still waiting for development of Flex ecosystem that would include a pool of professional developers as well as third-party components making Flex-related projects more productive.

Short learning curve, variety of Flex technical conferences and training seminars quickly address shortage of professional Flex developers.

Last year, Adobe evangelists have created an online Flex component exchange where individuals and teams from all around the world started to offer their free and commercial components.

A new community site myflex.org is yet another step in further evolving Flex ecosystem.

This is a place that has been created to allow third party vendors offer their plugins and components for sale, and the first four components are ready to convert your Flex/Java application into a Rapid Application Development (RAD) project:

Clear Data Builder ndash; this Eclipse plugin is a commercial version of an open source DaoFlex code generator. It takes away complexity of writing Java code for communication with relational databases. All Java and Flex artifacts are created automatically based on your SQL Select statement. You do not have to know Java to create end-to-end Flex-Java-Database CRUD application in minutes.

Fx2Ant ndash; this Eclipse plugin instantly translates the settings of your existing Flex Projects into ANT build scripts, so that you can build your modules, libraries and applications outside of Eclipse and create larger builds integrated with J2EE projects. What takes weeks on even a mid-size project, can be done in seconds with Fx2Ant. While generating the build script, Fx2Ant applies additional size-optimizing techniques that help to modularize development and cut the download time of enterprise Flex applications.

Fx2Doc ndash;this plugin allows you quickly build and organize the documentation for your project. You can upload your documentation to the corporate or the community server, so that it becomes shared by other developers.

Log4Fx ndash; this component provides a number of configurable implementations of log targets and an interactive control panel. You can target your log information to Eclipse IDE, local or remote server and other destinations.

Given the time savings that these plugins bring to any project, their prices are nominal. You can download documentation and free trial versions of these components. A trial version of ClearBI, a very powerful but simple in use Web reporter is also available.

While development of the front-end for enterprise applications in Flex is faster than in Java, using these components is a step toward a serious reduction of time to market. The above plugins were written using Java, XML and XSLT, but no knowledge of these languages is required. On the other hand, advanced users can customize XSLT templates to ensure that these plugins generate code or build scripts as per specific project needs.

The Web site myflex.org has been developed in Flex so Flash Player is required. Note the buttons on the right that allow you to hide the Web site “s header and/or switch to a desktop mode. The latter allows this Web site to “break free rdquo; from the Web browser frame. This mode should remind the users that rich Internet applications can be treated as desktop applications delivered over the Web.

Carcast #1 – Tools for development of rich Internet applications

This is my first attempt to podcast. I did this recording while driving the car. After riding a bus for several years, I ‘ll have to drive the car to my current client for a while. To minimize waste of time I ‘ve been listening to other people ‘s podcasts for a while, and now I decided to record my own. If you hear a clicking sound somewhere on the background, this means that I ‘m either changing lanes or making turns.

The first podcast is about your software choices for developing rich Internet applications. These are some relevant links:

RIA: State of the Union

RAD components for Flex/Java development

If this podcast will be well received, I ‘ll continue recordings and will consider recording my conversations with other people who have/want something to say on enterprise software related subjects.

Here ‘s the MP3 file of the podcast (it ‘s about 30Mb and 30 min long). Any feedback is greatly appreciated, especially if it made your commute a little better.

Groovy and Grails deserve more attention from Java community

Yesterday, Princeton Java Group hosted two presentations -Real World Groovy and Getting Started with Grails by Andrew Glover and Jason Rudolph. Both are excellent and very enthusiastic speakers. The slides from the Grails part are available over here .

Groovy is good scripting language, which deserves a lot more attention from Java community. There were several presentations on Groovy and Grails at JavaOne and the rooms were packed, but I do not understand why Sun did not pick Groovy as a scripting language for rich Internet applications? Why not create a GUI framework of Groovy components from scratch (no Swing allowed) and marry it with the upcoming Consumer JRE (Groovy already runs on JRE)?

Grails was inspired by Ruby on Rails, and it also uses this smart principle of convention over configuration ndash; the project structure is always the same. Development of a basic Web CRUD application is a matter of minutes and you do not need to write these tedious methods that any DAO object has to have. It “s easily integrated with Spring. Grails has its own way of defining relations between classes (has many, belongs to) but it also supports Hibernate ORM framework.

Thank you No Fluff Just Stuff for sending these excellent speakers to Princeton, and if you live in the area, attend this symposium in August.