Notes of a lifelong IT student

Have you ever attended software training? If yes, have you enrolled voluntarily or your employer required you to get re-trained to get extra points for your annual review? If so, was that class useful other than getting these points?

In my blog “Notes of a traveling contract trainer rdquo; I promised to write a sequel from the student “s point of view. You got it.

If you work for a large corporation, the chances are high that you are entitled for taking one or two training classes each year. In some cases you even get to choose which classes to attend. I mean off-sight training. But most likely, you are enrolling a class offered onsite by an invited instructor.

IT training classes can be divided into two main categories: five full consecutive days or two-three months long evening classes. The latter are for people who want to get fundamental training and have time to study and absorb the material.

If you are planning to learn new software by attending a five-day instructor-led class, the most efficient way is hellip; to learn it by yourself before the class. I “m not kidding. This way you “ll know what questions to ask the instructor during his/her short visit.

I “ll give you an example from my own career. Back in 1998, I was a client-server developer (PowerBuilder and Visual Basic) who wanted to switch to Java. Being an independent contractor, I had to switch gears fast to make sure that my billable rate won “t suffer. How can one quickly convert from PowerBuilder expert to a senior enterprise Java developer? J2EE was completely different comparing to any client-server technology.

Learning the syntax of yet another language is the easiest part, unless it “s an Objective-C. But understanding the architecture and the best practices of new environment is always a challenge. To make the story short, I went through a couple of Java books by myself, and then enrolled to a five-day class “Developing J2EE applications with BEA Web Logic rdquo;. I got lucky ndash; the instructor was good (he had the real-world experience). Five days and $2500 later, I was ready to work on real world Java projects. I still believe that attending an instructor-led class after self-studying is the best way to learn.

Computer-based training is usually boring. You can “t ask questions, but have to take computer-based tests. Multiple-choice SAT-like exams are equally stupid everywhere. They just prove that you are good at taking multiple choice exams.

Instructor-led training remains your best choice. In the class, use your own laptop to make this training efficient. Contact the instructor prior to class and ask what software has to be installed. These days, unless you are getting into SAP or CICS-like software, you can download and install evaluation copy to your laptop. It “s better than using a desktop provided in the classroom, because you take with you the software with training files after the class is over. It “s properly configured with the help of the instructor and all samples work. Add to this well written courseware (is it well written?) and you are armed and dangerous.

If you are not sure where to find a reputable instructor for the software you want to learn, find the conferences related to this software. Pretty often, one day intensive training is offered the day before or after the conference. Instructors that are approved to teach a class at a major conference are usually good. I “m not saying that you have enroll into this short class, but google the name of the instructor ndash; the chances are that s/he teaches longer classes as well.

Check the training catalogs of your local universities, where evening classes in schools of continuing education are often taught by practitioners.

While in class, try to get as much help from your instructor as possible. Most of the instructors enjoy helping students. Don “t be shy. There “s no such thing as stupid questions in the classroom.

At the end of the class, never forget to fill out evaluation sheets. Instructors have to present them to their managers. Be nice to them. Even if you didn “t like something in this training, leave your comments and submit your evaluation sheet.

In September-October of 2010, I “ll be wearing a student “s hat twice and be an presenter in one event. I “ve already registered into two conferences: Java One by Oracle and Adobe MAX, and I know exactly what I “m looking for besides networking. At JavaOne I “ll attend every technical session on the upcoming JDK 7 release, and at MAX, my main educational goal is getting good at development for Android platform. But first, I “ll be one of the presenters at the Third Annual Flex Symposium here in New York City. I like being in classrooms.

iPhone 4 or HTC?

Normal.dotm 0 0 1 605 3451 Farata 28 6 4238 12.0 0 false 18 pt 18 pt 0 0 false false false /* Style Definitions */ table.MsoNormalTable {mso-style-name:&”Table Normal&”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:&”&”; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:&”Times New Roman&”; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:&”Times New Roman&”; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin;} Sooner or later, every person reaches a point in life when s/he has to make a decision: iPhone or HTC. I “ve arrived to this destination, and the road forks. In early 21st Century people would just Google it up to find the facts, figures and comparison charts. Unfortunately, the noise-to-signal ratio is getting so high on Google, that it makes it pretty much useless in a decision-making situation. More advanced consumers discovered Amazon.com to be a great helper when it comes to make a purchase decision ndash; their rating systems and almost unbiased user comments will help you to decide faster.

The brightest and laziest minds like myself instead of visiting Amazon go to Youtube. We don “t like to read. We want to watch videos, where someone will show and tell what to do with any gadget.

My first search on Youtube produced this hilarious video that clearly explains why most of the population wants to purchase iPhone 4. You can “t beat the logic of this consumer ndash; she knows why iPhone 4 is better than HTC.

Software developers think differently. They don “t care about usability of a phone. They want to get deep under its skin. They are into multitasking, Linux and other masochist terms that can cause pain and suffering. The great illustration of their twisted minds is this video.

My colleague started development for Android and purchased a Google phone: the Nexus One. Being a smart person, he didn “t sign up for a new 2-year service plan with AT amp;T, but paid the full price for this HTC phone and simply inserted his SIM card from an old iPhone to the new device. It works great.

I like that it converts your phone into a turn-by-turn voice navigation system. Nexus One comes with the latest Android OS (FroYo) and supports tethering too. Now his laptop gets 1Mbps Internet connection anywhere where AT amp;T 3G signal is available. Unfortunately, in the tethering mode Nexus battery discharges faster than his MacBook “s USB port can charge it back. On the other hand, the Flash-only Web site of our firm gets loaded into HTC in a Flash and works great with Flash Player 10.1 proving that Steve Jobs mumbling about poor technical quality of Flash Player a joke.

So I was about to get Nexus One too, but Google “s CEO recently stated that they played with Nexus One, it worked well hellip; and will be discontinued. Well, he was using different wording though:

“The idea a year and a half ago was to do the Nexus One to try to move the phone platform hardware business forward. It clearly did. It was so successful, we didn ‘t have to do a second one. We would view that as positive but people criticized us heavily for that. I called up the board and said: ‘Ok, it worked. Congratulations – we ‘re stopping ‘. We like that flexibility, we think that flexibility is characteristic of nimbleness at our scale. ”

Google decided to stop with this particular device. Great. If us, developers, will invest time in creating applications for a particular Google smart phone, what are the chances that this device will be around a year from now? Will there be a demand in software developers who can create application for mobile devices if there are so many of them hellip; Is the skill set “Android Software Developer rdquo; is something to wish for? Will Android on the variety of devices become THE “Write once run anywhere rdquo; platform? Or maybe it “s better for software developers to get into a different state of mind “Write in Objective-C, run only on iPhone, but do it well rdquo;?

Eric Schmidt made yet another scary statement “We ‘ve talked about mobile for years and right now it ‘s finally taking off. This is our strategy let ‘s see if it works or not. ” What if two years from now they ‘ll come to a conclusion that it didn ‘t work, really. Let ‘s do something else… The chances are slim that Apple will do the same with their bread winning iOS.

Yes, Apple “s phones have tons of technical limitations comparing to HTC EVO and the likes, but they are so good looking hellip; Yes, Consumer Reports doesn ‘t recommend using iPhone 4 because of fading reception, but they are so good looking… Anyone knows how high subscription to Consumer Reports jumped after their publication about iPhone 4? Smart move, CR! Should I take the position of an uneducated consumer and simple say, “I don “t care, I want iPhone 4, and I want it now rdquo;?

Enterprise Development with Flex

It “s been almost four months since our book “Enterprise Development with Flex rdquo; been released in print by O “Reilly. Since day one, it remains in Amazon “s bestseller “s list in several IT categories. This fact gives me a great feeling given the fact that Amazon re-calculates their stats hourly.

I “d like to share with you some interesting facts that from the times when this book was in its proposal stage. If you carefully look at the book cover, you “ll notice a little logo and the text Adobe Developer Library. To earn the right to be included in this library our book proposal had to be approved by Adobe engineers. We made it, and are grateful to excellent software engineers from Adobe Flex team, who put their trust in our ability to write such a complex and advanced book.

After the approval process was done, O “Reilly sent us the Flex team members feedback without revealing the names of engineers who wrote them. Most of them were 100% positive. But our special thanks go to one unknown member of Flex team who wrote something like, “I don “t agree with many of the things that these authors write about Flex in their blogs and articles, and I “d rather not approve them, but I will because there are not many people in the industry who are capable of writing such a book. rdquo; We don “t know your name, but we consider this assessment to be the best compliment we “ve received so far.

Looking forward to meeting with the members of Adobe Flex team in October at MAX conference. The authors of this book are going to attend this event in LA in October.

Our praise goes to the O “Reilly cover designers who correctly visualized three authors of this book without ever meeting them in person.

If you bought this book, Farata “s team would really appreciate if you “d spend 10 minutes and publish your review of this book on Amazon. It doesn “t have to be long, but we are looking for getting your honest opinion about our work.

Notes of traveling contract trainer

Over the course of my career, I ‘ve been running lots and lots of training classes on software development. I still do. Teaching software takes 15 – 20% of what I do for a living – the rest is work on real-world projects. These days I mostly teach Java and Adobe Flex courses, but it ‘s like riding a bicycle – if you know how to do it, you can ride any bike, really. The last two months were unusually training-heavy and I ‘ve been on the road most of the time.

Training is the best way for marketing of the services that you or your company has to offer. other professional services. Usually, I run training for the clients of our company, but once in a while training firms need a contract trainer for a week, and I consider these gigs too – spending a week in the classroom with professional developer may bring you some development work in the future. Hence I usually don ‘t reject any training request if I know the subject and it fits my schedule. Below are some rules that I ‘ve learned during these travels. If you fill I missed something, please leave a comment to this blog.

1. Check the courseware – if you don ‘t like it – reject the training gig. You might make a quick buck, but damage your reputation. After you ‘re gone, people will be left with poorly written courseware and they wouldn ‘t remember that it ‘s not your fault.

2. Book your flights on well known air carriers – if a flight gets cancelled, they can put you on another flight. If a company runs only one flight to your destination, find another carrier. Cheaper ticket price can turn into late arrival for training.

3. While booking the seat on the plane, check with seatguru.com . They can give you misleading information about electric outlets on board, but can save yourself from selecting an inconvenient seat.

4. While people work on a hands-on assignment ask often, “Anyone needs help? ” Some people are too shy to ask and can waste time on struggling with a simple error.

5. Stick to the manual. You can and should share your real world experience, but still, people need to be able to use the manual after the superstar is gone.

6. Ask the lab. technician to do what it takes to have the software installed and ensure that licenses are not expired. Ideally, they should re-image all disks in the classroom and install fresh software. Have plan B if this hasn ‘t happened.

7. Don ‘t change the software used in the course just because the client uses different one. If the courseware was created for Tomcat server, don ‘t run the class on the client ‘s WebSphere server just because “Java runs the same everywhere “. Trying to be a nice guy may turn into a failed training and bad reviews. Custom training is possible, but it should cost a lot more and has to be prepared in advanced.

8. Don ‘t curse the courseware you are using. Use the rules we used with passed away people – either say good things about them or nothing at all. If you don ‘t see the analogy, I ‘l help you out – either nothing don ‘t use the courseware, or be nice to it. Instead of saying “I clearly see a bad practice example on page 231 ” say something like like “I understand why the authors of the courseware wrote it like this – they wanted to give you a quick and dirty example, but in the real-world I ‘d suggest to do it differently ”

9. Speak loudly. If you have a soft voice, purchase a voice amplifier – they have portable wristband ones.

10. In the beginning of the class ask about people ‘s background and expectations from the course. Typically, you ‘ll have a healthy mix of students who really want to learn the subject and vacationers. The latter just use this class as to get a way from their desks. Both categories have equal rights to be in the classroom and your goal is to make sure that they like your class and want you back in the future. I can ‘t give you a concrete advise on how to do it – you ‘ll have to figure it out on your own.

11. The chances are that on the introductory courses some people will state that they already use this software for a couple of months. Just ignore these statements and teach a class as if everyone is a beginner. Don ‘t be afraid that these couple of people will get bored. They enrolled into a 101-level class and have to find a way to enjoy the show.

12. Respect your students. They are fellow software developers that just happens to need a little help in a particular subject area. Remember, you are not a teacher, you are instructor.

Good luck!

Till the next blog titled “How to attend software training “.

Disappointed with Adobe

Was not planning to write this post. It was ignited by the “Disappointed with Flex rdquo; article posted by Valery Silaev, our lead Flex/Java developer. I “ve been working with Valery on a couple of projects. He “s good software developer. And when he says that he “s disappointed with Flex 4, you should listen.

I really value people who speak up freely and have something to say. Valery is disappointed with Flex 4, but I “d like to take it one step further. I “m disappointed with Adobe.

To put it simple, Adobe is sloooooow. I mean really slow, and I “m not sure what “s the reason. I know some people from Flex team. They are smart. They can deliver given the right support from top management and proper investment, which is definitely not there.

Let me build the case. Slowly.

Four years ago, when Adobe purchased Macromedia, I was looking for a decent tool for development of the enterprise Web applications. At that time I was disappointed with Java Swing. Wrong decisions at the top level of Sun Microsystems resulted in having 75% of the computers running Internet Explorer with hellip; ten years old Java run-time. Sun Microsystems won the lousy $10B law suit with Microsoft back in 1998, but lost the battle. Their runtime (yes, the JVM) is not installed at the consumers ” computers.

Four years ago, Adobe “s Flash Player (it “s a VM too) gave me some hope. The runtime was there, the library of rich components was there too, installing Flash Player was piece of cake. I started working with Flex.

This new for me Flex/Flash community was a bit unusual after Java. It was small. I had a feeling as if we are in a small country club chanting, “We are the best rdquo;. Flex developers knew each other by names. Adobe Flex technical evangelists were Gods. This was different from Java community of six million of professional developers.

But Adobe didn “t have competition in the area of enterprise rich Internet applications in 2006, 2007, 2008… Until the greatest “Me too rdquo; firm from Redmond, WA realized that RIA is the right place to be and IE is not the only browser people have. They started working on this Silverlight thingy. Two years ago they released the 1.0 version that could be ignored ndash; nothing but video streaming was there. At the same time Adobe released Flex 3, which had pretty much everything: 98% penetration of runtime, rich library of components, fast communication protocols, and the server-side component LCDS, that nobody but filthy rich Wall Street firms could afford.

Two years later, Microsoft released three more versions of Silverlight, and the only thing that stopped them from presenting a serious threat to Flex was low penetration of their runtime. Microsoft has tons of cash and excellent engineers. During the same period of time, Adobe has released Flex 4 in hard labor. It took Adobe two years to release the next incomplete version of Flex. Why?

Being a Java developer, I was watching closely the evolution of JavaFX, yet another wannabe player in RIA. I clearly a similar pattern there. Top-level management proclaims at every keynote that “We are the best rdquo; without giving enough juice for engineering teams that work hard developing a product.

The bad guy, Steve Jobs, doesn “t even know what Flex is. He “s not happy with Flash Player. Need to admit, he “s not playing by the rules trying to say that Flash Player is junk and a main reason that crashes the OS. He “s bad, but he “s not stupid. Adobe couldn “t offer a better response than “We love Apple rdquo;.

Yes, Flash Player is installed on 98% of desktops, as if we don “t know that not many consumers are using desktops today, and in five years they will become minority.

Steve Jobs, the bad guy, made Adobe moving just a little bit faster and they finally released Flash Player 10.1 in 18 months (!) after the 10.0 release.

Two years for the next and incomplete version of Flex. Eighteen months for 0.1 upgrade of Flash Player. Dumb pricing policy on LCDS that makes it unaffordable for even a small group of loyal customers. Not a Wall Street giant? Get out of here. Is this the way to treat customers?

Let “s get back to the tooling. This smart idea to bring together designers and developer gave birth to yet another prototyping tool called Flash Catalyst. Is it more than just a prototyping tool? Tell me why?

Here comes the Flash Builder (formerly Flex Builder). Flash developers (they haven “t seen any better) were so happy with Flex Builder 3 hellip; From the Java developer “s perspective, this was a mediocre and damn slow Eclipse plugin. Flash Builder 4 after two years of development was not a major improvement either. I “m not sure why JetBrains doesn “t want to invest a couple of rubles and add a WYSIWYG designer for Flex. As soon as they do it ndash; Flash Builder is brain dead.

The next target is Flex 4 SDK. The new Spark library of components with separating the functionality of components and their skinning implemented just half of the components comparing with Flex SDK 3. In two years they could have done better if they were a large company catering for developers. But they are not. Until Photoshop and PDF remain their main source of revenue, the tooling for software developers will be pushed aside.

Adobe was and remains a small company. They do what they can. And it doesn “t seem that they can do much more for us, developers.

Yakov Fain

P.S. This is my personal opinion. My employer may think differently.

Think twice before declaring a Java method as final

If you create classes that may be used by other developers, declaring methods as final will make them not overridable in the subclasses. While today, it may seem obvious to you that a particular method will never ever need to be overridden, you might not properly predict all use-patterns of this class. If this happens, some other developer will have to jump through the hoops to create another version of such a method in a subclass. If you don ‘t want to be cursed in the future, think twice if you really really want to declare this method as final. Do you see any benefits in using final methods?

We had to extend a third party library to improve their implementation of a certain networking protocol. As it usually happens, the code was poorly documented, so we had to read the code to find out which method to override in the subclass. Sure enough, that method was declared as final. We found a workaround and still replaced the call to the final method to the call to our own. So what the original developer achieved by using final? He made our work more difficult than it should have been.

Originally, Java compiler was optimizing (inlining) final methods. Today I ‘ve learned (thank you, Heinz) that Java compiler doesn ‘t do it anymore, and they are optimized by the Hotspot JVM:

http://www.javaspecialists.eu/archive/Issue157.html

http://www.javaspecialists.eu/archive/Issue158.html

Who are these guys we ‘re protecting from by using final? I also believe that the keyword protected is equally useless.

$55 Per Hour Software Developers

Last week, a US based Flex/Flash developer who IMO belongs to the top 20% Flash developers twitted that he was contacted by a recruiter offering a contract paying $55 per hour. While $55 per hour may sound a lot in some of the developing countries, the cost of living in the USA makes this rate a joke. And we are not talking about some rookie who learn Flex last week in a classroom. Pretty sad, isn “t it?

Next day, a manager of a large corporation asked me if our company can provide them with a senior Flex/Java consultant working onsite in a greater New York area. The rates were $60-$80 per hour plus this software developer would have to go through another consulting company that was on a preferred vendors list of this large corporation. This middleman would also need to get a cut from this rate. Let “s do some math together assuming that the corporate client is willing to pay $80 p/h for this developer.

The preferred vendor will shave off, say, eight bucks. Our company has bills to pay too, and let “s say we “ll take $12. This means that we can pay $60 per hour to a senior Flex/Java developer living in the USA. I can “t find a plumber in our geographical area who “d be willing to clean my toilet for $60 per hour. Last week I had to bring my car to a repair shop to replace worn out brake pads. They charged me $90 per hour for labor.

I deeply regret that I can “t outsource cleaning toilets and changing pads to one of the less expensive countries.

So what does it mean for Flex/Java development in the USA? These are the choices that the enterprise development managers will face:

1. Hire anyone who knows how to spell Binding, AMF, and Servlet and keep he fingers crossed that these guys won “t bring the project to a full stop.

2. Outsource the software development to another country where Flex senior developers started to lay eggs and breed.

3. Stop fooling around and offer reasonable rates in the USA to bring local talent to the project.

In the past, the Wall Street companies were known for selecting the last option. During the last two years their habits changed and they go number two.

Other industries do a number one. When a development manager smells troubles, s/he hits the Panic button and tries to switch gears to select number three, which may not be available cause the good spellers ate almost all the budget already.

Dear corporate hiring manager! Don “t fool yourself. There “s no free lunch. I know, the rules in your company changed, and the HR rats wrote the instructions that tie your hands down. Still, fight with them to make an exception that would allow you to bring a real talent on board. Your career is at stake here.

Upcoming public Flex training and New Jersey User Groups

1. Last year, the Princeton Java Users Group that I “m leading became homeless. We lost the host that was giving us a place to meet and pizza.

2. Last year, New Jersey Flex Users group ceased to exist ndash; not sure why. The Garden State, where every other person is in IT deserves better.

3. Being a proud Jersey resident, the next week will be the second time I “m presenting this year hellip; at Atlanta Flex User Group Atlanta. No, it “s not Atlantic City, NJ. It “s Georgia.

4. Flex and Java nicely compliment each other in lots and lots of real-world enterprise projects in the greater New York Area, which wouldn “t be able to run its IT operations without us, Jersey hero commuters who spent 3.5-4 hours a day getting through the tunnels and bridges to that famous island and back.

5. Recruiters have hard times finding developers with Flex/Java skills.

6. I “m ready to create and run a new Flex and Java Users Group in Central Jersey as soon as someone will offer a place to meet and pizza to eat. It has to be a meeting room that can feet at least 30 people. This is all I “m asking for. The hosting company will be entitled for opening 5 minutes of each meeting announcing their products, or job openings. And people who attend users groups are real developers! If interested, send me an email at yfain11 at yahoo.com.

7. My role is to bring qualified presenters and present myself on the subjects that interest enterprise Flex and Java Developers.

8. All of the above is a just part of my contribution to Flex and Java community.

9. Now let me take care of the bills. I “ll be running a week of live online introductory Flex 4 training on the week of July 12, 2010. You can attend without the need to travel. For details and registration visit this site.

10. The next one-day advanced public Flex workshop on modularization of Flex applications will take place in Lansdowne Resort, VA on July 27, a day before the CFUnited conference starts in the same venue ( this workshop is not affiliated with CFUnited). Here “s the registration page.

11. In August-September I ‘ll be running a week of online live Intro to Java class – stay tuned.

That “s all folks. See you in one of the meeting rooms.

A smarter than Adobes approach to iPhone development

Six months ago I started following Adobe ‘s advancements in the creation of a cross-platform solutions for smart mobile devices. In general, it ‘s nice that finally Adobe realized that it ‘s time to do something about the close to zero penetration of Flash Player in mobile space (I ‘m talking about the real thing, not Flash Lite). When you think about the lack of Flash on smart mobile devices, all of a sudden the statistics that claims 99% penetration of Flash Player on desktops becomes irrelevant. Especially given the fact that search-engine optimization for Flash-based Internet applications is nothing more than an urban myth. If Amazon would redesign their Web site in Flash, they ‘d be out of business pretty soon – people wouldn ‘t be find them on Google (Ichabod, the headless Flash Player proved once again that headless and brainless are synonyms).

The news about automatic code generation from CS5 to iPhone as well as other droid-shmoid gadgets sounded exciting. But there was one thing that bothered me a little: Adobe was offering a cross-platform solution. Been there. Didn ‘t work for Sun Microsystems that presented Java as “write once run anywhere ” fifteen years ago. But hey, maybe this time it ‘s going to work? Maybe Adobe will implement RIA with Flash smarter than Sun did with Java Swing? Adobe ‘s CEO ‘s mantra is “author once and get it across multiple devices “, which is to me the same as write once, run anywhere.

Steve Jobs doesn ‘t let Flash Player on iPhone? No biggies. Smart folks at Adobe came up with a workaround to let ActionScript developers write programs AS USUAL, and then with a click of a button turn it into a native iPhone application that can be offered via Apple ‘s App Store. How this would be happening? A special tool would be extracting the ActionScript bytecode (ABC) from the compiled SWF file that would be then fed to LLVM compiler that would turn it into another compiled code for the iPhone ‘s ARM processor.

Read about details of this solution here, and note the following statement, “If you have any experience developing applications with Adobe Flash Lite or other mobile platforms, you can use many of the same tricks and techniques… “. But what if you don ‘t have such experience like the vast majority of today ‘s ActionScript programmers? Then you ‘ll be developing a Flash application AS USUAL, but now it also can run on iPhone.

I like Apple products, I respect Steve Jobs a lot – both as an amazing businessman and a very strong personality (don ‘t forget that recently he healed on the verge of death and went through a liver transplant surgery). But a lot of his recent statements sounded crazy to me. You can ‘t deploy a program on iPhone if it ‘s not written in C, C++, Objective-C, or JavaScript. How crazy it is? One person on the Net compared it with not accepting an MP3 file to iTunes store, if it was not created in GarageBand application. This sounded as a valid analogy, and being Adobe ‘s fanboy I wrote a couple of blogs making fun of Steve. The problem is that I ‘m also an Apple fanboy. I use MacBook Pro, iPhone, and iPad daily. I can appreciate the quality of these devices and extremely friendly and intuitive user interface. iPhone OS is probably the first operational system that any trucker from Alabama can figure out without going through any special training.

When I spent more time thinking about crazy Steve, some of his unreasonable requirements become reasonable. No, I don ‘t buy most of his accusations in the recent WSJ article on Flash. The very fact that he wrote this article tells me that he ‘s feeling pressure from AAPL stakeholders, and it only get worse next year when Android based devices will started competing with iPhone. Hopefully, Adobe will deliver an Android solution that will be well performing and feel native (no cross-platform, please). But I can hear that besides having business reasons to not letting Flash on iPhone, he does want to guarantee a ultimate user experience on his devices.

Is it even possible to generate code from ActionScript that will feel native on iPhone? Three months ago I learned about a product called Elipse Studio 3 by OpenPlug. These guys are also working on a cross-platform solution, but their approach is different, and IMO, better than Adobe ‘s CS5 code generators. The difference is that Elipse Studio 3 generates the C++ source code from a Flex application as opposed to extracting the code from SWF to be recompiled by LLVM as CS5 does. When the C++ code is generated, developers can MANUALLY change it and use the real native API offered by Apple to create components that not are native, not just feel like ones.

The OpenPlug folks don ‘t believe that infamous 3.3.1 amendment to the iPhone constitution will affect them as their applications will have C++ code at some point, and Flex developers will have a chance to use native API to create iPhone experience. But I don ‘t think that they sleep well at night – there ‘s no protection from Act of Steve.

I didn ‘t use Eipse Studio 3 and can ‘t endorse it yet, but it seems that they outsmarted Adobe at least in their approach. My only question to OpenPlug folks is this, “If you let me manually edit C++ code and use native API, you assume that I know C++, and if this is the case, why do I need to write code in Flex/ActionScript in the first place? ” Expected answer, “Developing in Flex is a lot more productive than in C++, and you don ‘t have to really know C++ that well, you just have to learn how to insert and manipulate objects from iPhone libraries “. And then I ‘d go, “If people don ‘t want to learn C++ well, they won ‘t be able to create the real iPhone user experience and Mr. Jobs will be angry again “. Maybe not. Nobody knows.

IT consultants shouldnt lie to their pimps

In on of my No BS IT podcasts, I ‘ve compared relations between IT consultants and agents with how whores and pimps operate. Last week I was wearing the pimp ‘s hat, and here ‘s the story.

A group of consultants from our company works for a very reputable customer. You may not know, but it takes a lot of work and repeated performance for a small company to establish and maintain good relations with multi-billion dollar giants. We respect the rules, and whenever new job requirement comes in, we spend time finding a really good candidate before submitting the resume.

This time our client needed a strong Java consultant. None of our consultants was sitting on the bench (read standing on the corner), and we ‘ve asked a partner company if they may have someone who meets the requirements. They sent us the resume of Puneet Pagi, and it was good – there were lots of Java EE technologies and great projects, which looked real.

Real-shmeal…I interviewed Puneet to check if his technical level matches the resume. He was real.

Submitted the resume to the client, and they liked it too, politely asking what would be the convenient time for Puneet to come for a face to face interview. I passed this request to Punnet, and he sounded excited. This was ten days ago.

Five days passed, no word from Puneet. The client sending me emails asking why I haven ‘t responded. I knew that there was something fishy with this candidate. OK, picking up the phone.

“Puneet, I ‘m been waiting for your response for five days… ”

“This week was very busy for me, and I wouldn ‘t be able to go for an interview. ”

“I never asked you to go there this week, I just asked what would be a convenient time for you. Listen, I understand that people may be considering multiple opportunities, there is nothing wrong with this. Just tell me, so I ‘ll present to our client the right way. ”

“No, it ‘s nothing like that. It ‘s been a busy week, but I can go there on Monday or any other day next week. ”

“Are you sure? ”

“Yes ”

I made arrangements with the client, three people were involved to get Puneet a visitor ‘s pass, three client ‘s developers were assigned to meet with Puneet on Monday. Everything ‘s ready. The only thing that financial giant forgot to do was to roll out a red carpet.

On Thursday night, the HR person from our partner company called saying that Puneet notified them that he ‘s got an offer from another company. Basically, he lied to me.

Our consulting partner sent us an email with apologies. I apologized to our client. They understood. I still have some bitter aftertaste in my mouth. I ‘m sure our client has it too. Now we need to rehabilitate our reputation by sending them best of the best. We will.

Puneet didn ‘t bother apologizing. Remember, he had a busy week building his career.

Dear whores, pimps are your friends. Team up with them – it ‘ll be beneficial for everyone. I know, you are not happy that pimps are getting their cut from your hourly rate, but they don ‘t get it for nothing.

This game with the resumes exaggerating everyone ‘s skills is not perfect. I know that people make up “real-world ” projects to get their first jobs. But why in the world can ‘t you stop lying at some point?

Good luck, Puneet with your career. I wish people will always treat you the same way. What goes around comes around.