Outstanding starts at seven

My car’s manufacturer sent me a survey after I paid them a visit to service my vehicle. The service was good, they did what I’ve asked for. End of story. Nothing out of the ordinary. Nothing bad either.  Now take a look at this part of the survey:

Well, the service was good. It was not outstanding though. Does six mean Good now? Digits also depreciate over time?

-Evaluate your skills in Java programming on the scale of 1 to 10.
-Seven
-Wow, your Java knowledge must be outstanding! Unfortunately, you’re overqualified for our job opening.

Have you ever watched the CBS’s series “How I met your mother”?  Remember the phrase “I sleep with sixes?”  Did he sleep with almost outstanding women?

I’m not going to finish this survey until the vendor of my car will fix this.

E-Commerce with Hybris

People are accustomed to buying goods online. If a company sells products to individuals, we call it B2C for Business To Consumers. If a business sells to other businesses – it’s B2B. Having an online store allows to sell around the clock regardless of the consumer’s location (at least within the country) as long as he or she is connected to the Internet. People spend some substantial time online and sellers are trying to reach their clients via all possible channels and devices being that a regular HTML Web page, a social network, a mobile application on any device with embedded browser. Still, some people aren’t Internet savvy and business will continue using more traditional channels like printed mail order catalogs. This is what the multi-channel marketing is about. Ideally, a business should be able to combine marketing the products with selling them right there. If you’ve seen the product commercial on Facebook or your mobile phone the storefront should be there too.

Ingredients of an online store

If I’d ask you to give me an example of an e-commerce site, most likely you’d answer Amazon or eBay. Agree. But what’s needed for building an e-commerce system? Let’s come up with a list of building blocks and solutions that Joe Smith, a CIO of the Best Stuff, Inc. would need to create an e-commerce portal:

– A shopping cart
– A catalog
– Integration with several payment systems
– Order management system
– Full text search
– High-load solutions
– Selling through social networks
– Ability to create UI supporting variety of desktop and handheld devices
– Integration with warehousing software
– Data feeds from external systems
– Consumers reviews, locator services, Web analytics
– Live video chats with customer supports

This list is not complete. Starting developing such a complex system from scratch would be insane unless you have unlimited budget and no deadlines to meet. On the other hand, trying to find a Swiss army knife solution usually translates into purchasing super expensive software with 80% of the functionality that you’ll never use. The truth is somewhere in the middle, especially in the age of Software-As-A-Service (SaaS) where you can subscribe to only what you need.

Hybris ingredients

Our company, Farata Systems has an e-commerce team that works with the Hybris software suite. For detailed comparison reviews of the e-commerce solutions refer to Gartner or Forrester. I can just offer you a Hybris review based on our real-world experience.

When we were offered to work on our first Hybris project we had to google this name up. Still, we were hired because of our solid expertise in enterprise development using Java and Spring framework, which are pre-requisites for developing software with Hybris Multi-Channel Suite.

Hybris is a well designed modularized software built on top of Apache and SpringSource components, containers and servers. We’ve been given login credentials to be able to access product Wiki and rolled up our sleeves. The software comes with an installer that includes modified Apache Tomcat servlet container, Spring modules and a home-made ORM framework for data persistence.

Finding goods

Finding goods in your online store has to be easier than in a brick and mortar one. Say you want to buy an engagement ring, but not sure if it has to be made of a white gold with diamonds or something more modest. Writing strict SQL queries is not overly flexible, but the full text search (FTS) technique allows examine all words in each document in your database rather then specifying the column names in the database table. The FTS feature give lots of flexibility in creating stores which allow to quickly find the products that closely match your customer’s needs (e.g. diamonds of certain shape, size, price range etc.) Hybris ships with the FTS module based on the fast search engine Apache SOLR (a Lucene extension). The system periodically (say, every minute) runs the data indexing process. You write queries not in SQL, but in a special query language.

Customization

This tightly integrated software allows you to create and release in production a simple online store in less than a month. But a typical store or an auction requires implementation of lots of custom solutions. For example, let’s take order fulfillment. Hybris offers off the box the basic solutions supporting order management and consignment. But in our projects we had to implement fulfillment algorithm that would take into account the distance between the warehouse and the consumer and minimize the number of shipments. For example, the customer wants to purchase twenty large screen TVs. The system has found six TV’s in one of your stores and four in the other. Since we need another ten TV’s our custom algorithm sends a request to a warehouse to order these additional TV sets. As a result – the customer will get a shipment of all twenty items shipped in a least expensive way.

Such customized business logic is implemented in Java as beans of Spring framework, which is literally a fabric of the entire Hybris software. Your code always has access to Spring context object. By adding custom extensions you create the child context object with your Spring bean containing custom logic to place a distributed order of 20 TVs.

From the software architect perspective, the ease of extending existing Hybris entities is very appealing. For example, if you need to add customer reviews features, just add a couple of fields to the Product entity, create a new entity for ProductReview and link them together. Then add a row of those yellow stars to the storefront UI and you’re set.

User Interface

With Hybris you have a complete freedom of selecting the UI platform for your online store. So far we’ve been using HTML, JavaScript and JQuery framework. But we could have used Java, Flex, or Silverlight for the UI if this would meet our needs. Hybris uses Spring MVC that can present the data as JSP pages or send the raw data as XML or JSON to the UI tier – just parse the data and display them any way you like. If you prefer an easily customizable solution, Hybris includes a CMS module, which allows you to specify the Web page layout and change it dynamically during the run-time.

Product Maintenance

Yet another interesting Hybris module is called Cockpit, which becomes quite handy in environments where the information changes quickly and the customers need to see the latest product information. We even customized Cockpit for building our own administration tool for the online auction project.

Launching Server

The launch of your Hybris server can be configured to load only those modules that are needed for your store. Our fully loaded server starts within 2 minutes, which is not bad at all. The initial install of the Hybris server comes with the in-memory HSQLDB, which is fast, but not suitable for the real-world applications. We started with MySql Server and then switched to Oracle with very minimal manual tuning.

Payment processing

Integration with the payment gateway is probably the most critical component of any online store or auction. Hybris has its own payment module, but we’ve been asked to integration with another payment processing engine – Litle.com using XML as the data exchange format. Little accepts all kinds of credit cards, PayPal, eCheck, mobile payments, and bill-me-later option. Introducing another provider in your payment workflow can make a lot of business sense, but be prepare to find yourself in the middle of the finger pointing game until you finish the payment integration. Add some more cushion there if you are making project estimates.

Scalability

Hybris comes with a clustering solution from the box. Each node of your cluster can be configured to include only those Hybris extensions that it needs. For example, you can configure a cluster with one more for the administration module, three nodes for the store UI, and one node for the data indexing.

In March of 2012 Adobe has announced its partnership with Hybris. Adobe’s CQ5 will help in creating multi-channel digital marketing campaigns and building strong brands for online stores created by Hybris.

Room for improvements

Although our overall impression after using Hybris on a couple of projects is very positive, this software has room for improvements. I’m sure, Hybris management has their reasons for keeping its community closed, but it may hurt the adoption of the software. The product documentation is not too detailed and up to date. Hybris technical experts have to pay more attention to the developer’s forum. In many cases we’ve been using the source code de-compilers to find the answers to our questions. Since Hybris is built on top of Java EE, I’d like the future versions to include a JPA-based solution that would allow using the data persistence solution of our choice rather than a proprietary ORM.

Conclusion

While finding solutions in developing software with Hybris was difficult at time, we never hit the wall, which can be credited to the engineering team. Overall, it’s a solid platform for creating modern online stores and auctions.

When we started our first e-commerce projects with Hybris, we couldn’t find any publicly available online materials about this software written by people in the trenches. I really hope that this article will help anyone who’s still in the process of selecting the right e-commerce software package for their next generation online store.

Learning from Marriott

This morning I’ve received the following twit by @gregsramblings “The Marriott TV system is having issues. The attached screenshot made me laugh. 14yr old OS!”

The screenshot was showing the Windows 98 logo with a message that it’s shutting down.
It does look funny that a major hotel chain is using a 15-year old OS to support their TV broadcasting. But give it a second thought – is there a compelling reason to upgrade the Windows OS? For Marriott, this would translate into a multi-million project with questionable outcome?

Most likely, their guests would not even notice the change. I can only guess that the CIO of Marriott was not able (or haven’t even tried) to sell the OS upgrade to his higher ups.

Is the “Ain’t Broke Don’t Fix” policy always a smart strategy? It depends on how often Windows 98 gives troubles to Marriott’s TV system. Most likely, Microsoft charges premium to support outdated Window 98 software. But is there a need to support it?

I’m receiving offers to upgrade the software on my MacBook daily. Unless it’s a fix for a security hole, I just ignore it. Apple has released their Mac OS X Lion 18 months ago. I have not upgraded my OS as of yet and lived happily thereafter. Modern software requires more powerful hardware. I guess, Apple was not able to sell me the need for the upgrade from Snow Leopard to Lion.

Half of the enterprises are still using Internet Explorer 6. Attend any HTML5 presentation at any conference. The speaker will never forget to mention that certain features are supported by every Web browser except IE 6. The audience laughs. But people who run IT operations in any decent size enterprise seems to have bad sense of humor. They often can’t fund money for doing an enterprise-wide upgrade of Web browsers. Besides, creators of JavaScript frameworks advertise support of their features on any browser including IE6. Why bother?

When you live in a house, the kitchen or bathroom upgrades increase the reselling value of the house. But replacing carpet with hardwood floors or digging a pool in the backyard does not increase the value of the house (at least in the USA).

So should Marriott upgrade their Windows 98 to Windows 7? I’m not so sure. Unless the upgrade will offer some new TV services to their guests, I wouldn’t bother.

Adobe or HTML5?

I know, some people will say it’s apples to oranges. Some people will say Adobe is also pushing for HTML5. But I’m writing this for people who read the title of this blog correctly: Flex or JavaScript.

Disclaimer 1. I do both.

Disclaimer 2. I don’t care about game programming. I work for a company that does enterprise development.

In the enterprise IT circles Adobe is a whipping boy of 2012. Adobe has accepted this award, and only their cleaning ladies and janitors didn’t apologize for what their CTO and CEO did last November hiding behind the wide back of Danny Winokur. But let’s put emotions behind and get real.

Today, there are two types of the enterprise CIO’s: those who don’t care about developing for mobile and those who do. CIO’s who don’t care about mobile can be divided into two groups: smart and typical.
Smarts will start new Web projects selecting a technology that would allow them to easily go mobile if the life will force them to do so. And not so smart will just go HTML5 because this buzzword is an easy sell to CEO’s.

Let’s continue splitting hairs. Enterprise Web projects can be divided into two categories – Web pages and Web applications. Web pages can be divided into (you guessed it right) two categories – those don’t have to be blazing fast (just show them that Donate or Pay button), and those that must be blazing fast.
Further splits would involve Intranet vs Internet, and by reliability requirements.

Now the most important question, “Who do you care about the most?” As the saying goes, men who shave in the evening love their wives, and those who shave in the morning love their work. Who can you afford to love more – developers or the users?

Seven years ago the most popular examples of successful AJAX applications were Google’s gmail and maps. Most of the people were drawn into this Google state of mind forgetting that their own teams had less skillful developers and more modest budget than Google’s.

Today, people are choosing the technology to go mobile. In a meeting with a prospective client I’d start drawing on the white board. You have two choices… I’m not going to do it here, but learn from the past – don’t assume that what the big guys do is affordable to you too.

I’ve learned from a Facebook engineer presentation that their users login from 2500 different mobile devices. On the other hand, this article states that Facebook has bad experience with their HTML5 mobile application and they are creating an iPhone version in Objective-C. Sounds great. What about people carrying 2499 other mobile devices.

Do you have to make such choices? Do you have skillful teams of Objective-C, C++, and Java programmers or prefer to have the same code base in HTML5? How many concurrent users do you have? Do you have enough money to cater to all possible devices your users carry?

It’s up to you to decide. But for most of the enterprise mobile Web applications the choice comes down to selecting between Adobe AIR and JavaScript. If you select AIR, it’ll cover all your today’s intranet desktop needs and the same team will be able to port this app to iOS, Android and Blackberry devices. If you are ready to dive into JavaScript, just double the time allocated to the development cycle of your project. But you may save time in the long run cause your Web application will already work on lots of mobile devices, especially if you’ve been using responsive design principles.

As to myself, my typical week is split between Adobe AIR and JavaScript. And yours?

JavaScript’s Sharp

While JavaScript’s popularity grows daily, it’s not obvious if enterprise developers spoiled by predictable languages like Java or C# will fill comfortable with it. If they won’t – the cost of the JavaScript-based projects will remain high.

Just take a look at this code snippet on the right – I’ve been using Firebug,the Firefox add-on to run it. The code is on the right, and the result of invoking the function doIt() is on the left.

Yes, it outputs 10 on the console. If you don’t know why it did so, get ready do allocate a substantial time for doing a really thorough testing of your HTML-JavaScript application.

People say that if you cut your finger don’t blame the knife. True. Should we even use sharp knives? Yes, if we are very careful and responsible adults. But we shouldn’t give sharp knives to kids. And majority of today’s enterprise developers are kids playing with legos, a.k.a. frameworks. Unfortunately, you can’t get away with creating an enterprise Web application without programming in a raw language. This is when the fun begins. Let’s embrace it, but be careful.

P.S. If you want to know why the code above printed 10 and not 5, read an excellent blog by Angus Croll where I picked this code sample from.

An Elevator Pitch for Modernizr

Say, you’re creating a new startup. What’s one of the most important things you need badly? Money. But how do you convince someone to give you some cash? An elevator pitch. You need to think hard and produce 2-3 (not 20-30!) sentences that clearly explain what’s your product is about and why it’s better than tons of similar others.

This elevator pitch technique of being brief and up to the point is extremely important even if you’re not in the startup business. You always sell something even if there is no money involved. Let me stop beating around the bush.

There is a great little library that JavaScript developers must use – it’s called Modernizr. Now I challenge everyone who doesn’t know what it’s about to look at modernizr.com and try to figure it out from it’s main page.

Still have no clue after reading all this text? I don’t blame you. These guys created a great library, but they didn’t bother to sell it to you. It’s free – why bother selling, right? Wrong! If you like your product, spend some time trying to come up with an elevator pitch.
Have you read the section “Why use Modernizr?” Was it convincing enough? Do you feel the need to start using it? Actually, there are two important words buried in there: “feature detection”. This is it. This is the holly grail.

How to fix the text? I’d removed all the text from this page except the links and replaced it with just one statement:

Modernizr is a tiny JavaScript library that allows your JavaScript to detect if the latest HTML5 features are supported in the user’s browser. On the Web page load, it creates an object with dozens of properties indicating if particular features (e.g. canvas or audio) are supported so you can branch out your JavaScript program accordingly.

Having said that, I want to take my hat off to the creators of this little gem Modernizr.

Good bye, Google Chrome!

I’ve been using Firefox on my MAC as my default system browser for years until I got really irritated with the need to kill it once in a while after it became non-responsive. Switched to Google Chrome, but was still running Firefox for testing of my HTML/JavaScript code with the great add-on Firebug.

It looks like its time to say good bye to Google Chrome. Periodically, it just start rendering Web pages blank. I found a cure that works sometimes – grab the corner of the window and start slowly resizing it. You might get lucky and find the size that Chrome likes and start rendering the content again. Being an enterprise developer I can’t imagine releasing an application into production that once in a while shows a blank screen to the users. I have no idea how Google can get away with it.

You may suggest that I should file a bug. But what do I write in there? It doesn’t render the content once in a while? Steps to reproduce: just freaking run Chrome for a couple of days with a dozen of opened tabs.

What’s next? Safari. Let’s see what the future holds. Keeping my fingers crossed. If you know of any Safari surprises, please let me know. I’ll still be using great Developers Tools of Chrome though – it’s a great tool.

Time to Write a new Book: Enterprise HTML5 and Going Mobile

Yesterday, I was talking to my business partners (and former co-authors) about writing a new book. So far, the working title of the book is “Enterprise HTML5 and Going Mobile”. In this book we’ll explain different approaches to creating desktop and mobile Web sites and applications while developing  various versions of a sample Web site “Save the Children”. Below is the current version of TOC:

Enterprise HTML5 and Going Mobile

Part 1. HTML5 On The Desktop

Chapter 1. What’s HTML5?
Chapter 2. The Web Site “Save The Children”: UI Design and Specification
Chapter 3. JavaScript Basics
Chapter 4. JavaScript Objects and Functions
Chapter 5. JavaScript in the Browser
Chapter 6. JSON
Chapter 7. AJAX
Chapter 8. Websockets
Chapter 9. Intro to JQuery Framework
Chapter 10. Intro to Ext JS Framework
Chapter 11. Test-Driven Development with JavaScript
Chapter 12. Save The Children: Working with the Data on the server
Chapter 13. Securing Web Applications

Part 2. Going Mobile

Chapter 14. Responsive Design: One Site Fits All
Chapter 15. Intro to JQuery Mobile framework
Chapter 16. Save The Children. Take 1.
Chapter 17. Intro to Sencha Touch framework
Chapter 18. Save The Children. Take 2.
Chapter 19. Accessing Native API with PhoneGap

We may include another chapter on going cloud. Did we miss any subjects useful for the enterprise developers? Your feedback is appreciated.

Attending QCon, a Smart Conference

The last three days I spent participating in the QCon conference in New York City. This is one of the small group of conferences catering to software developers. Running a 100-speakers conference around the world is a hugely expensive project, and I hope the organizers broke even, which is very difficult in New York. Long story short – I like this conference. Speakers are well prepared, the crowd is eager to learn, the food is good, and the Wi-Fi works (I kid you not – 20Mbps up and down).

There were six parallel tracks  at the event, which were changing each day. This is unusual, but smart. Every morning would start in the main auditorium, where the track chairs would introduce every presentation from their track. This is also something I’ve never seen before at any conference, and I can confess that these short intros changed my personal selection of the talks.The third thing that impressed me were presentation evaluation sheets. This is how they looked like:

The KISS principle in action! Instead of forcing people to fill out these annoying questionnaires from traditional evaluation sheets, the attendees were asked to pick a sheet of the appropriate color and drop it in the bowl. Green, if you like the preso, yellow means the presentation deserved to be a part of the event, and red if it sucked. If you wanted to add some comments, pens were right there – just write whatever you want on this little piece of paper. Smart. Keep it simple stupid.

During these three days I’ve attended a bunch of quality presentations:

Security weaknesses in Java was very practical, and I can apply the new knowledge to one of the projects I’m involved with.

Learning how NASA uses cloud computing to process information from Mars rovers is another fact that may finally push me into the cloud space.

I was surprised to learn that Node.js, a server-side JavaScript framework, can process 695K transaction per second. It’s really impressive even though Java did 3.5M TPS in a similar setup.

I like presentations by Cameron Purdy. This time he was talking about HTML5, Mobile, and compared the roles of Java’s and C++ in today’s IT. He’s well spoken and always add lots of appropriate jokes to his talks.  Cameron listed a couple of reasons of why Java didn’t supplant C++. But IMO, didn’t mention the most importan ones:
1. Apple’s iOS has no Java
2. Microsoft didn’t upgrade JRE in Internet Explorer since ’98 (remember that infamous Sun-Microsoft las suite?)

Arun Gupta from Oracle is an excellent speaker, and it was interesting to see his first presentation showing how Java EE moves toward HTML5 clients (JavaScript – JSON-WebSockets-JavaEE).

I like FireFox’s add-on FireBug – the HTML/DOM/CSS/Network/JavaScript inspector/debugger. Now I know that it’s safe to install Firefox nightly builds to enjoy the latest greatness of this popular browser.

Peter Bell was showing how to use Spring Data with No SQL databases. While he was talking about a hierarchical databases, I felt like déjà vu. Seasoned (a.k.a. old) software developers knew about how great the hierarchical databases were since the last century. But working with them was not for the faint of hearts. SQL looked simpler, so programmers embraced relational DBMS. The years went by, and an average programmer became a little dumber, and SQL became a tough language to learn. This resulted in the flourishing of the Object-Relational Mapping frameworks. You know Java, but don’t know SQL? Not a problem. You’ll survive on our project – just write Java and XML. It’s going to be long, painful and non-performing, but ORM will allow us to bring juniors on board. Now, it seems that Spring Data can hide the complexities of dealing with hierarchical databases and even juniors will be able to work with them. Good luck, guys!

Charlie Hunt did a great job explaining the internals of Java garbage collector. Check out his recent book “Java Performance”.

Steve Souders is THE web performance guy. This time he was talking about performance of high performance in the mobile. Not sure if you are thinking about moving your application or a Web site to mobile, but you definitely should be.

Yesterday, I went to hear the presentation by Adobe’s evangelist Christophe Coenraets. I have a rule – if Christophe present at the conference I attend – it’s a must see. No matter what he’s talking about, his presentations are clear, well prepared and up to the point. In the past he was covering various Flex-related topics, but after Adobe decided to kill Flex, he’s working in the HTML5 field. Christophe’s presentation was about using JavaScript on mobile highlighting access to the native APIs via the PhoneGap library. IMO, this is a right way to go and I enjoyed this talk.

Adobe Flex framework remains a touchy-feely subject for me regardless of my own principle “Don’t fall in love with the Phillips screwdriver”. Any tool is just a tool, but I really enjoyed working with this framework. I understand that corporations exists to make profits. I understand that if a software product doesn’t bring money to the firm, one of the solutions is to nuke it. But it shouldn’t be done in such a cynical way. Last year, at Adobe MAX conference they said that the future of Flex is rosy, a month later they announced, “We donate Flex to Apache Foundation” explaining that Adobe’s changing the direction. That’s fine. A month later, they applied a hit man technique – an additional shot in the forehead – to make sure the body is dead for real. Adobe said that the Flash Player, the runtime required for Flex won’t go to Apache, and they won’t support new versions of Apache Flex. It’s as if Oracle would donate Java to open source, but the future version of JVM wouldn’t support future version of Java. I doubt Oracle would ever do something like this. Adobe won’t run the MAX conference in 2012 – are they ashamed of themselves?

I’ve attended two sessions on the agile methodologies, and have to admit that I’m still not sold. Sure enough, if a prospective client will ask if our company runs the project in agile mode, I’ll answer, “Sure thing!” And, most likely, what we do is agile. But we don’t do it as a religion with all paraphernalia that comes with agile methodologies. We work in a highly virtualized world. A bunch of VMs runs on our servers. But let alone VM’s – in some cases our developers are virtualized. They work from different countries and some of them never saw each other. Yeah, yeah, yeah…You put and shuffle the stickers on the board daily. Stand up meetings? I don’t care if our developers work in horizontal or vertical position, if they work in the morning, evening, or after midnights. As long as they get the work done, have good communication skills, speak English, and don’t behave as prima donnas, they are super agile. Please don’t show this blog to any of our customers or we can loose the project.

Finally, I’ve attended a great inspirational talk by Mike Lee, an American software developer living in Amsterdam (as he put it, the city that San Francisco wants to be). Now I’m also thinking of spending three-four weeks living and working from Amsterdam. I never been in this city, but plan to run  JavaScript training there.

My QCon participation was not just about attending sessions. QCon organizers were kind enough to offer a meeting room to the members of the Java NYSIG – a huge users group lead by Frank Greco. I delivered the presentation “JavaScript for Java Developers” on Tuesday evening. This presentation was videotaped by the QCon’s crew and should appear at InfoQ  soon.

You might have noticed that the most frequently used word in this post was JavaScript. Yes, as of today, this is my language of choice for developing the client portion of Web and mobile applications. If you want to hear more about it, attend our fifth annual symposium on software development  in New York City. Rephrasing the well known statement about the water, “You can’t stop JavaScript – you can only redirect it”.

Good luck QCon! Hope to see you next year.

New MacBook Pro Anyone? Not Me, Thanks.

When I was a teenager, my dream was to get so called Hi-Fi audio system.  I knew that some audio systems could generate sounds in the frequency range 20-20000Khz.  To have something like this would be like money from home, but those audio systems were too expensive. No, they were unreachable. These days any pair of $10-headphones at Wallmart plays 20-20000Khz.  Today, I can afford expensive speakers that deliver crystal clear sound, but there is a little  problem: I can’t hear those high-frequency notes any more. Not sure if I ever could.

What all this has to do with today’s Apple announcements of thew new MacBook Pro with the retina display? I won’t feel the difference between the screen quality of my last-year model MacBook Pro and the new one. I’m pretty sure of this because last week I had to buy a new iPad for my wife – her original one broke (half of its screen is permanently pitch black).   The new iPad has this retina display and I don’t see much of a difference. But at least the new iPad costs the same as an old one, which is not the case with the new MaBook Pros.

I love Apple’s products. I really do. Each member of my family owns a MacBook Pro and other mobile devices from this great company. But I’m not going to shell out another thousand bucks just to demonstrate my loyalty to Apple.

Can Apple make me exited in the future? Yes they can, and this is what I want:

1. I’d really appreciate if the body temperature of my MacBook Pro would be as close to the temperature of my body as possible. Today, I could cook fry eggs on it.

2. It would be nice if the battery on my MacBook Pro would last during entire the flight from New York to Europe or California. I know, Apple has achieved 7-hour battery life in  their labs  under certain conditions, where the screen was dimmed, the wifi was off, and they were watching black-and-white silent movies. But I need real 7 hours of work when my quad-core processor is busy.

3. If they’ll manage to fix the temperature, the fans won’t be too loud and during my Skype conversations I’ll be able to use the internal mike without people asking me if I’m sitting in the airplane.

That’s all for now.  Am I asking for too much? What MacBook improvements would make you happy?

If you want to see what’s inside of the new MacBook Pro, follow this link at iFixit.com.