Archive for June, 2011

Grey Line

During the last 15 years I’ve presented at dozens of conferences and taught hundreds of training classes on various programming subjects. I’ve been attending or watching lots and lots of different technical presentations.   In this article I’ll give you my opinion of bad and good practices of speakers and presenters.

1. Show of Hands. This is popular but bad habit. Have you ever been to a presentation that starts with 3,4,5 questions like “Raise your hand if you are using so and so software for less than 1 year”.  “”Now, between 1 and 3 years?”  “Let me see a show of hands: who used this framework in a real project?” And on and on and on. Why wasting time of the audience on this BS? You’ve got only 45 minutes to make your point. Just get straight to the meat of your talk.  People in the audience are not idiots. They’ve read the description of your talk in the conference brochure, and decided that your talk has some value. They are sitting here for a reason. What if the show of hands reveals that 70% are mid-level developers and 30% are beginners? Will you ignore the interests of these 30% and cover the subject addressing only more experience crowd? This is dead wrong. This is a conference and not a private tutoring gig, where you can cater to the needs of the single person.  Include in the description of your talk the expected skill level of your audience and present.

2. Masturbation. The goal of your presentation is not to enjoy yourself and please your ego. People should get some satisfaction too. They came here to learn from you not because you’re God, but because you had a chance to research this particular subject better.  Showing your expertise is fine, but give people something they can use in their daily routines.

3. Timing. People prepare slides without bothering if they’ll have enough time to go through all of them during the available time slot. Recently I asked someone to give a 45-minute talk and send me his slides in advance. When he sent me a 30-slide deck, it was clear that he won’t make it in 45 minutes. I use a simple rule – you need two minutes per slide (I’m not talking about Steve Jobs type of slides containg just one word iPhone or iPad). Time your preso or you’ll end up with “How are we doing on time? Only 5 minutes left? OK, I’ll wrap up real fast. Anyone can grab me in the corridor. ” Yeah, right!

4. Visuals. Some presenters believe it’s cool to bash powerpoints and start their presos with statements like “This is a one slide show. I won’t waste your time flipping slides – we’ll get straight to coding!”  The crowd roars in joy – finally, the real geek is on stage. No fluff! The presentation went fine, the star is gone, and what are you left with? Nothing. Yes, he proved that he could do it. Now what? Can you repeat it at home without any visual materials supporting this talk? Most likely not. Prepare your slides and upload them to YOUR server BEFORE your talk regardless if the conference organizers promise to publish them after the event. Include the link to your slide deck on the first or last slide. And please, use the largest font size you can so people on the back can read it.

5.  The 2-Minute Rule. This pertains to a classroom situation, when one student can’t complete the exercise because he ignored some required configuration steps. You were trying to help him… 5, 7, 10 minutes passed, but it didn’t work anyway.  Other students start browsing Internet or check their emails.  Last week I was running a training class where students were supposed bring their laptops with installed Eclipse 3.6 for Java EE developers and Apache Tomcat 7.  But some students decided to do better. They’ve upgraded to Eclipse 3.7 that came out one day before the class. One guy had Eclipse for PHP developers. One person had Tomcat 5.5 installed 3 years ago. They started to have all sorts of errors.  In cases like this, if I can’t fix the issue within 2 minutes, I ask the students to re-install the software as per instructions. You can’t steal time from other students just because some early adopters ignored your instructions. Even if this issue is not caused by the student’s wrong doings,  move on with the class. Make an early break and help this person, but not at the expense of other people.

6. Ignore the Bosses. In the beginning of  a hands-on class, I always ask about the students’ expectations. Yes, 9 out of ten are software developers, and here’s their boss. No he’s not coding, but wanted to join the class to get a better understanding of what tool his people are using. Teach your class as if this big shot is not even there. This is a class for programmers, so keep it this way.  Offer the boss-student a 30-minute one-on-one session to give a 30000-feet view of the software, but don’t waste developers’ time just to give the boss a chance to catch up with a group.

7. Frequent Feedback. In hands-on trainings, ask the students every 20 minutes, “Anyone needs help?”  Some people are afraid to ask and prefer to struggle with issues alone, while you could have resolved them in a second.

I hope this quick writeup will help you preparing your next presentation. My next presentation is scheduled in New Your City at our annual symposium on software development. Come over and see if I follow these rules myself. If not, grab me in the corridor…

Yakov Fain

Comments off

 

Grey Line

Adobe AIR is the most productive tool for developing the UI for Android.  But as of today, AIR can’t access native Android API. By the end of this year Adobe plans to offer some integration/bridge to the native Android applications, but it’s not clear how it’s going to be implemented.
Traditionally, Farata Systems is trying to get into emerging and promising technologies as soon as possible and the first results are already achieved.  We taught AIR to talk to the native Android API. I mean it. You’ll see a demo, where a user talks to an AIR application, which communicate with the native Android voice API, which recognizes his commands and fills out the AIR UI form.
Without going into much details, we are using a different from Adobe approach – we put their BlaseDS server right inside the Android device. This opens endless opportunities, and we are trying to find the best use for this solution that goes under the working name “Server in your pocket”.
My colleague Victor works full time on integrating AIR and Android. He has recorded a short video that features him talking to the AIR application on the Xoom tablet, which communicates to the native Android voice recognition API and fills out the AIR form. Everything is happening inside the Xoom tablet. This addition to our Clear Toolkit has a working name Clear APK. See it for yourself.
We’ll present this demo live in August during our fourth annual symposium on enterprise software.

Yakov Fain

Comments (4)

 

Grey Line

If you are developing a distribute application, you can’t get by with any single technology. You’re using at least one programming language and one or more frameworks. I work in the world that requires Adobe Flex and Java EE knowledge.

To develop a front end I use, at a minimum, HTML, MXML, ActionScript, and Flex framework (add Eclipse with WTP and Flash Builder). The server side’s consists of a Java Servlet Container with installed BlazeDS Web application (throw in some XML configuration files) that talks to the business tier of your application, which ideally, has just Plain Old Java Obects (yeah, right!) that embed SQL queries talking to a DBMS using some JDBC driver. Almost forgotten about the ANT build tool.

Have I mentioned that this dozen of different pieces of software is a bare minimum? The client-server technology of early 90th with its 3-piece set (e.g. VB-SQL-Oracle) sounds like a toy these days.

Each of these pieces of software (a.k.a. moving part) can, potentially, give you some problems. That’s why I’m and always was against bringing into the architecture any additional tools or framework that require developers writing more code and make this card house more shaky and the finger-pointing game more likely.

That’s why I don’t like any Flex MVC framework that requires you to write extra code. That’s why I don’t like Object-Relational Mapping frameworks like Hibernate.
That’s why I don’t like Java Persistence API with its 500-page spec that, supposed to “make your life easier” comparing to elegant SQL.

To make the long story short, whenever I can, I use our own open source code generator Clear Data Builder that generates the basic CRUD application from requiring very little of manual coding. As for the communication with the database, there is a light-weight (no, really!) SQL mapping framework called MyBatis (formerly iBatis). It’s not an 800-pound gorilla Hibernate, but requires you to supply your own SQL as Java annotations and map it to Java DTOs. It’s a nice and easy process (see this tutorial).

My yesterday’s morning started as usual – CDB obediently generated CRUD, and started the program that was supposed to execute my SQL query and bring the data first the Java and then to Flex UI. MyBatis conveniently displays in Eclipse console the SQL it executes and the returned result set. Here’s my SQL, but there is no data ands no errors. Trying the same SQL in Oracle SQL Developer – the data’s there. The cleaning of the project didn’t help. Log files show no errors. Who would you blame next? MyBatis doesn’t generate any code – it just executes my SQL. I started to think of jdbc driver. When to Google – no one blames this Oracle JDBC driver in no reporting errors.

Here comes the BlazeDS little dirty secret. Its folder WEB-INF/classes has a little used by the Apache Commons Logging configuration file commons-logging.properties :

Here it is:
# suppress logging for 3rd-party libraries using commons-logging
# Flex logging is not configured here. It is configured through in the logging section of flex-config.xml
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog

This last option (NoOpLogs) means suppress errors! I was mad. I could understands if my fellow developer from the BlaseDS team wanted to minimize the output and temporarily change set this option. But the comment in the file explicitely states that the was done intentionally to “suppress logging for 3rd-party libraries”! Changing NoOpLog to Log4JLogger fixed the situation, and I started seeing a lot of output on the console. Sure enough, there was a run-time error returned by the Oracle driver that explain the problem…two hours later.

Hopefully, revealing this BlazeDS little dirty secret will same someone a little grief. But I’m still wondering, “Why the NoOpLog proudly made it into BlazeDS?”

For more little secrets, attend our 4th Annual Symposium in New York City in August.

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