Archive for December, 2010

Grey Line

360Flex is the best technical event for Flex developers and our company is glad to contribute to the 2011 version of this event. Yesterday, I’ve submitted the following presentation proposal:

Case Study: Using Adobe AIR on Android for Sales Automation

In this case study you will learn how to port  a  traditional RIA/AIR application to Android platform – both Smart Phone and Tablet. You will learn how to separate the functionality of the large application depending on the target device and create cloud/ occasionally connected services available across platform. Finally, you will see how to apply simplified Mobile UI to your RIA/AIR applications and maintain a single code base for all target platforms.

My colleague Yakov Fain submitted two proposals:

1. What it takes to be an Enterprise Developer

2. Hands-on 4-hour crash-course style workshop on Java for Flex/Flash developers

At this point we don’t know which of these proposals will make it to Denver in April, but we are certanly looking forward for attending this event.

Anatole Tartakovsky

Comments off

 

Grey Line

We are on the verge of the the most interesting year in technology – most likely since ‘98 when the Internet revolution and browser war and moving to 3-tier changed landscape of the modern computing. The year 2011 will show even more drastic departure from the today’s technologies as we know it. Tablets and phones are getting to the tipping point to replace desktops and most of laptops today – replacing the way we acquire and use information along the way. Using voice, geolocation and gestures instead of typing and clicking changes the usability/UI and brings a different type of users/applications to the game.

Adobe can become THE leading force in this transformation. However, I think a major problem needs to be eliminated from the developers life to make them accept the platform – it’s the release policy. Traditional release policy won’t work even though Adobe is releasing AIR more often than in the past. However, with multitude of the devices coming out daily Adobe needs to offer daily builds and the bugs database in order to stay afloat.

AIR and Flash are VMs and they shield most of the new platform features. They have to be available to the developers as soon as they are available – not a second later – to stay competitive to native platforms. Getting the new AIR run-time via the Market application is way too late!

Developers need to start working on the new features months in advance before the public release – the new run-time has to come with new applications for the consumers. Emulators are nice when the development schedule is planned for years to come, but not for the golden rush scenario we are in now.

Essentially we need much faster way to get DEVICE SPECIFIC APKs for testing as soon as Adobe engineers compile it or at least the daily builds. Rather than finishing Android pre-release program they have to extend it to the labs.adobe.com the same way Flex framework is published so developers can see unreleased builds and verify them with their software/build upon them. Market is a nice idea for consumers but Adobe can be sure that anyone serious about Androis development has rooted devices and can install APKs any way they need to.

It takes months to go from prototype to development/sales cycle to the actual release for any tablet application. Starting late is not an option, but rather a  major problem for AIR on mobile devices.

Sincerely,
Anatole Tartakovsky

Temporary links if you are out of luck with locked Markets:

http://dl.dropbox.com/u/17096020/Adobe%20Flash%20Player%2010.1.120.1.apk

http://dl.dropbox.com/u/17096020/Runtime_Device_Froyo_20100930.apk

Comments off

 

Grey Line

There are many ways to have various software components to communicate in Java EE enterprise architecture.  The same is applicable for integrating rich Internet Applications written in Adobe Flex and Java EE systems. Let’s consider the following scenario:

An application A is being developed using Flex-BlazeDS-Java, and it needs to integrate with a third-party Java-based Web application B, where the users must register, otherwise they can’t continue using the application A.
Of course, to implement this scenario you can engage some of the business process management software packages that will allow you to describe and configure the workflow with minimum or no coding. But the less moving parts are used in the architecture the better. Here’s the pretty simple way to implement our scenario.

Step 1. When the user presses the button on Flex view, the code is being executed inside the virtual machine – Flash Player, which in turn is sitting inside HTML wrapper.    So the first goal is to make a call from inside the Flash Player to the outside world. Using the ActionScript class ExternalInterface you can map the internal function, say registerUserAS() to the wrapper’s JavaScript function registerUserJS(). You have to write both of these functions yourself.

Step 2. The JavaScript function registerUserJS() opens the URL of the application B in a separate Web browser window, where the user registers as required by the application B.

Step 3.  In the application A, develop and deploy Java servlet, say RegistrationCompleteServlet that can be called by the application B when the user successfully completed the registration. During this call, the application B will pass to the servlet a Data Transfer Object  RegistrationInfoDTO, with all required registration details.

Step 4.  The RegistrationCompleteServlet and BlazeDS are collocated in the same Java Servlet container(e..g. GlassFish, Tomcat, et al). The RegistrationCompleteServlet initiates a push of the RegistrationInfoDTO to the BlazeDS destination RegistrationDest with the routing to the proper client. How to push the data to the client over the AMF protocol is described in our book Enterprise Development with Flex.

Step 5. Almost forgot to mention that during the startup, our Flex application has created a Consumer subscribed to the messages from the destination RegistrationDest. As soon as the RegistrationInfoDTO is published to this destination, Flex client will receive it and let the user into the next view with a nice greeting, “Thank you, Yakov for registering. Your credit card information has been validated”.

That’s’ all there is to it. I’ve included “Part 1” in the title of this blog, because hoping that this will become a series of writeups on integrating Flex and Java EE.

Yakov Fain

Comments (1)

 

Grey Line

Earlier this year, I made a statement defending hacking in an interview for Oracle. Yesterday, I found a thread on theserverside.com where java developers were sharing their view on the subject. In this blog I’ll take the same two quotes there ignited some arguments and will try to explain my point of view.

1. “Recently, I’ve been running a seminar for a small group of Java developers. Several times they’ve asked me, ‘Is this code an example of MVC pattern?’ I got the impression that implementing MVC had become an end in itself. Using Design Patterns is not a dogma. Just write the code that makes sense. Not everything that makes sense has a named design pattern.”

2. “Abusing design patterns is not always the fault of Java developers. I find the approach used in the enterprise software shops similar to medicine in the US. In my opinion, lots of doctors here practice ‘protective medicine.’ They are trying to protect themselves from malpractice law suits. Enterprise managers and tech leads also try to minimize the risk introduced by lower-skilled developers who are part of every team. Yes, abiding to object-oriented principles definitely helps in making code readable, but this does not always translate into better performing applications. If hacked-up code produces great results, apply it without worrying whether another developer will have problems understanding it.”

I work for Farata Systems, a consulting company that makes a living by developing rich Internet applications utilizing Adobe Flex and AIR and Java EE. We are a small company (about 30 people). We do consulting as well as develop our own software (both commercial and open source).  The number 30 is important here. Many years ago, a respectful person taught me that until the company is under 30 people it’s efficient because there is no need to hire middlemen managers. The founders of the company can run the projects themselves, and there is no ballast.

After several years of running the company with two other geeks, I couldn’t agree more.  We can afford to cherry pick developers, which large company can’t.  I’ll tell you more – we can afford having people who don’t have to stick to design patterns just to ensure that Joe Smith who became a programmer after attending 6 months of vocational school will understand the code. We can afford to build teams not with code monkeys who were shoved into our throats “because XYZ is our offshore partner and we have to keep them busy”. We are also working with offshore developers, but only with those who can do the job and can read/write the code regardless if it belongs to M, V, or C tiers.

Design patterns were not created equal. It’s OK to bash Singletons.  They are easy to be blamed for being a replacement for global variables. But MVC is still considered to be good.  Unfortunately, it’s not about three tiers any longer. Java architects enjoy creating layers. They’ll be happy to explain anyone how these extra layers will make your application very configurable and flexible. Layers are best friends of consulting firms who have sharpened their skills in creating beautiful powerpoints with nice round-square rectangles filled with color gradients. Thick arrows going from left to right shows how “with our consulting company you’ll move from here to there in just a couple of years”. The arrows must leave no doubts in the minds of hiring managers that “these guys can do it”.

And most importantly, these multi-tiered diagrams will explain the hiring manager of a large corporation that it’s OK that Satish is weak on the front end and Boris never worked with the back end…if you know what I mean. This multi-tiered design can turn both Satish and Boris into code monkeys who will do nothing but inserting their business logic into easy to understand location and the framework will do the rest. Design patterns promote the lowest-denominator-skills software development.

You may be surprised, but even such a sacred cow as dependency injections is not a must. Believe it or not, pretty much any application can be created without DI. I’m not kidding. No XML configuration files to process. Popularity of dependency injection in the middle tier is based on the necessity of integration techniques to allow upgrades and replacement of large pieces of technology with their new implementations. To be fair, I need to praise Java EE 6 for smart and light implementation of DI that doesn’t make you drown in XML.

Applying DI in the front-end applications on top of the frameworks with well designed event model is an overkill on the desktops and suicidal on smart phones and tablets that need to be optimized for memory and speed. We see bigger consultancies still doing it because it is a proven and easy to sell solution. Unfortunately, starting a new Flex project with an analysis of which MVC framework to choose seems to become a habit in enterprises.

My interview statement that writing the code that works is the ultimate goal is applicable only in teams that can afford to employ skilled professionals. If for whatever reason you can’t, go with the flow and rely on injections that somehow will put the collection of Orders into your Customer object.

Finally, to make this blog even more thought provoking, I’ll touch upon yet another sensitive subject. Who do you need to write code for – humans or computers?  On one hand, the code must be readable, cause the same piece of code is being read a lot more often than being written/modified. On the other, the code must be efficient.  For example, in financial trading applications adhering to design patterns is a low priority item. Speed is the king there.
Recently, I showed one chapter of my new Java tutorial to a very experienced Java developer. He was surprised that I included an example of BitSet there. This is what he said – word for word, “Perhaps your experience is different than mine, but I don’t think I’ve ever seen this class used in practice. It really feels a bit old-fashioned, and C-like. In 2010 I’m not sure anyone writing code in Java really worries about this level of saving bits. Maybe it still relevant in some embedded systems, but do those systems actually run Java?”

Ten years ago I was working on developing an equity trading system for a Wall Street company.  It was a J2EE application with a heavy use of messaging. A trading order had to be sent to a queue, and this was an object with about 50 fields with yes/no values.  Using BitSet for sending a set of flags (bits that are set to 1 or 0) instead of text or numbers is the most economical way to do this. Did I care that a programmer who’d be reading my code a year from now won’t immediately understand that just a couple of bytes carried had tons of information about the order? I did not. This piece of code was not readable, but efficient.

IMO, in the ideal world of inhabited by skilled software engineers, the code has to be written for computers. But we don’t live in the perfect world. So I don’t insist.

Yakov Fain

Comments (1)

 

Grey Line

I spent a day today attending Adobe and RIM (producer of all-over-the-place Blackberry) seminar about developing software for the upcoming Playbook tablet.  If you haven’t heard about the Playbook yet, it’s a 7” dual-core 1Ghz machine with 1Gb of RAM, two video cameras, and multi-tasking.

I was there for a very practical reason trying to evaluate this hardware to be a platform for the mobile version of our software product – Licensing and Contracting for insurance agents. The desktop version of this product is a pretty advanced Adobe AIR application that automates processing of lots of PDF forms, engages OCR technologies, uses Web Services, et al.

While we are already working on creation of the Android of this product and have concrete plans for iPads,  it would be simply wrong to ignore the company that have already sold 115 millions of Blackberries and is about to release a tablet that will compliment their hugely popular smart phone.

Adobe and RIM work very closely on this device. All applications that come with Playbook are written in Adobe AIR. Flash Builder Burrito IDE streamlines creation of the mobile application s in general and for the Playbook tablet in particular.  Of course, the entire platform has a room to grow, but I have no doubts that next year AIR will feel at home on the Playbook’s OS called QNX.

The tablet looks likes a smaller version of iPad. The screen resolution is 1024×600. The 600 seems a bit low for the enterprise applications though.  The video rendering is really fast. Flash Player 10.1 is supported.

Based on the needs of our insurance application, we’ll have to wait and see, because today’s Playbook doesn’t support working with PDF, which is crucial for us. Next year this device will support Blackberry Java Development Environment.

Overall, it’s a nice device.  Currently there are no fees for joining  Blackberry Application World, where early adopters can get all required software for the creation of applications for Playbook. Adobe evangelists have already created a handful of applications demoing features of this new device.

I have one more concern related to development under MAC OS (based on my observations, 50% of developers who work with Adobe software are carrying MacBooks). The requirement to have a full version of VMWare Fusion will make development for Playbook not overly productive unless you have 8Gb or RAM.

The Spring of 2011 will be a very exiting time for those who already understand that tablets are the new trend. Variety of new devices are going to be released soon, and don’t forget about Apple engineers, who I’m sure, are working hard on a dual CPU successor of the iPad.

Next year, we’ll definitely release a new version of our application – an insurance agent will be selling you term life carrying a small tablet talking to a cloud in occasionally connected environment. The trucks full of paper forms will become history. We’ll just need to decide, which tablet will become our pilot.

Yakov Fain

Comments off

 

 

doxycycline dosage for lyme disease
viagra australia no prescription
manufacturer of lipitor
low dose doxycycline
viagra brand buy
order levitra online
how can i get viagra
doxycycline staph infection
what alternatives are there to viagra without a prescription?
amoxil pediatric dosing
5 mg propecia buy
alcohol flagyl
cipro overdose
lasix and alcohol
viagra orders
canadian propecia
how long does viagra last
dosage doxycycline
online pharmacy viagra canada
viagra cheap generic
female viagra pills
pfizer zithromax
generic levitra vardenafil
what is lipitor
how does lipitor work
synthroid diarrhea
doxycycline succinate
ingredients in synthroid
quality cialis soft tabs
herbal viagra offers
best price viagra
buy propecia 5mg
buy name brand viagra
c diff flagyl
cheap viagra fast
levitra sales from canada
cialis 5mg
fish doxycycline
is cipro an antibiotic
where can i get cialis
cipro hc
canadian pharmacy viagra legal
c diff flagyl
clomid 100mg twins
american made viagra
free viagra samples uk
doxycycline for bronchitis
buying clomid
natural lasix
viagra female
flagyl gel
doxycycline package insert
doxycycline brand name
cialis online for canadian
doxycycline photosensitivity
lasix edema
viagra deals
clomid weight loss
zithromax 250mg
buy lipitor online
cheapest viagra uk
lasix indications
free cialis
cheapest propecia
5mg cialis
lasix use
effectiveness of clomid
doxycycline and sun
cipro chlamydia
viagra prescription uk
alcohol and cipro
viagra sales uk
strep throat doxycycline
lipitor side affects
internet viagra
lasix cost
online cialis
clomid calculator
buy propecia online without prescription
viagra no prescription overnight
viagra buy uk
clomid dosing
lasix renal failure
100mg clomid twins
lipitor ingredients
american made viagra
50mg viagra retail price
alcohol and zithromax
viagra tablet no prescription needed
amoxil for dogs
propecia orders
propecia 5mg
cialis daily price
female viagra pills
canadian pharmacy discount code viagra
cipro uti dosage
tuna viagra
viagra us pharmacy
cialis buy
buy vardenafil get free viagra
chinese viagra herbal
synthroid interactions
cipro uti
buy viagra without prescription
doxycycline staph
propecia online pharmacy no prescription
propecia without a prescription
cheap cipro
accutane side effects for men
cialis online pharmacy
doxycycline for cats
flagyl for sale
epididymitis doxycycline
buy viagra online without a prescription
canadian pharmacy cialis generic
cialis soft pills
viagra female
propecia generic
flagyl coverage
synthroid headache
cialis brand name
propecia pills
cialis 20 mg 10 pills
doxycycline food
cipro dosing
doxycycline hyc 100mg
cialis dosage
ordering viagra overnight delivery
low price propecia
effects viagra
lasix sulfa allergy
cheap herbal viagra
where to buy propecia
viagra next day delivery uk
zithromax z-pak cost
viagra uk cheap purchase buy
viagra sildenafil citrate
lipitor patent expires
lipitor patent expiration date
uti antibiotics cipro
synthroid and breastfeeding
natural alternatives to viagra
doxycycline blepharitis
lipitor discount card program
how to buy cialis
budget cialis
buy cialis in canada
viagra side effects men
clomid pct
synthroid dosing
best prices on generic cialis
cheap amoxil
lipitor patent expires
flagyl nausea
cipro flagyl
clomid effects
doxycycline bacterial coverage
cost of doxycycline
order clomid online
cipro ophthalmic
viagra delivered one day
recommended sites for cialis in canada
viagra non prescription
discount canadian cialis
how to get viagra online
order levitra
buy cialis profes
doxycycline side affects
mexico viagra without prescription
doxycycline contraindications
where buy viagra
clomid serophene
clomid weight gain
viagra.com
cheap levitra online
buy viagra in australia
us viagra
cialis alternative
effects of lasix
side effects of viagra on men
buy viagra online without prescription
flagyl and cipro
get cialis fast
viagra pills uk
lipitor dangers
propecia sales canadian
uses for doxycycline
buy viagra cialis levitra
viagra fast delivery
synthroid t4
can i buy viagra over the counter in the uk
cipro lawsuit settlements
doxycycline in dogs
best prices for 20 mg levitra
cipro side effect
synthroid hypothyroidism
doxycycline doses
clomid pregnancy symptoms
viagra original
10 mg vardenafil online
clomid 50 mg
purchase viagra online
substitute for lipitor
mrsa doxycycline
zithromax in pregnancy
purchase synthroid
aus viagra
chlamydia zithromax
united states viagra
get viagra online without prescription
cipro otic drops
cheap cialis
lipitor blood pressure
lipitor prices
cialis for less 20 mg
lipitor discount card program
synthroid medication
lasix manufacturer
viagra generic
viagra buy uk 50mg
synthroid calcium
cialis 30 mg
cialis india
brand viagra medicine
accutane canada
viagra on line sale canada pharmacy
cipro back pain
shop online viagra
5 mg cialis
doxycycline 100mg acne
canine doxycycline
hyclate doxycycline
order online viagra
buy viagra and receive it in canada fast
viagra cialis levitra canada
clomid sale
doxycycline heartburn
does propecia work?
buy brand name viagra cost
side effects of flagyl antibiotic
synthroid hypothyroidism
canadian cialis uk
original cialis
generic cialis next day delivery
synthroid 50 mcg
doxycycline for prostatitis
viagra sale online
cipro rash
cheapest viagra prices
cipro travelers diarrhea
online generic viagra
cipro for travelers diarrhea
doxycycline use
nexium and pregnancy
cheap fast generic viagra
online lipitor
viagra online reviews
propecia best price no prescription
canadian pharmacy cialis 5 mg
propecia 5mg. online
lasix nursing considerations
kamagra generic viagra
tuna viagra
genuine cialis online
where can i get viagra
zithromax breastfeeding
buy cialis from canada
levitra sell
but viagra online with mastercard
doxycycline photosensitivity
what does doxycycline hyclate treat
viagra substitute
how to find reputable canadian cialis
viagra prescription uk
canadian pharmacy viagra cheap
lipitor cholesterol
viagra natural
doxycycline alcohol consumption
ordering real levitra