Steve Jobs in his own words

This is sad news, but it is something expected given the history of events around Steve.

Steve Jobs in his own words
By Tim Stevens posted October 5th 2011 9:00PM

RIP Steve Jobs

I’ll always stay connected with Apple. I hope that throughout my life I’ll sort of have the thread of my life and the thread of Apple weave in and out of each other, like a tapestry. There may be a few years when I’m not there, but I’ll always come back

– Steve Jobs, 1985

That’s a quote from a Playboy interview Steve Jobs gave back in 1985. February of 1985, to be specific, right before Steve would be ousted from the company that he co-founded with Steve Wozniak and Ronald Wayne in 1976. Apple of course famously grew out of a garage, the brains of Woz, the drive of Jobs building the company over the next nine years into a powerhouse in the burgeoning home computer market.

Join us for a look back at the life of Steve Jobs.

Steve has always had his own way of doing things, a famous temper that left many engineers crying. When things were going well, he was worshipped. But, when things started turning sour, that unique way didn’t earn him so many fans. In May of 1985 Jobs was effectively fired by John Sculley, who’d joined Apple from Pepsi as CEO. Steve Jobs was free to do his own thing.

The heaviness of being successful was replaced by the lightness of being a beginner again, less sure about everything. It freed me to enter one of the most creative periods of my life.

– Steve Jobs, 2005

Steve went on to found NeXT Computer, a highly advanced (and highly expensive) desktop computer that won favor among developers for its object-oriented foundations. But, it never found financial success. His other main diversion, however, would find plenty.

There are downsides to everything; there are unintended consequences to everything. The most corrosive piece of technology that I’ve ever seen is called television – but then, again, television, at its best, is magnificent.

– Steve Jobs, 2003

In 1986 Jobs bought a company called Graphics Group, a small firm that was responsible for visuals like the Genesis effect in Star Wars II. Jobs paid $5 million for the company. In 2006, 20 years after Jobs acquired it, Disney purchased that company (now called Pixar) for $7.4 billion.

A lot of times, people don’t know what they want until you show it to them.

– Steve Jobs, 1998

Apple acquired Steve’s NeXT in 1996, bringing the man back into the fold and, before long, bumping him back up to the CEO position. From here, Steve went on a spree of killing off unsuccessful projects (like Newton) before ushering in many of the changes that would, ultimately, turn Apple into the company we know today.

When you first start off trying to solve a problem, the first solutions you come up with are very complex, and most people stop there. But if you keep going, and live with the problem and peel more layers of the onion off, you can often times arrive at some very elegant and simple solutions.

– Steve Jobs, 2006

Steve would come up with many, many elegant solutions to problems that many people didn’t know they had over his next 15 years at Apple. The iMac would be released in 1998 under his watch, a device that he said marries “the excitement of the internet with the simplicity of Macintosh.” But, in 2001, Apple would really hit its stride.

Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while.

– Steve Jobs

It would be in 2001 that Apple really turned into the company that we know today. It re-invented the Mac operating system with OS X (built from NeXT foundations), launched its own retail chain of Apple stores, and launched both the iPod and the accompanying iTunes. At first, these were curiosities. They’d soon become unshakable industry behemoths.

We’re just enthusiastic about what we do.

– Steve Jobs, 1985

From here Apple would launch the iPhone in 2007, the App Store in 2008, and the iPad in 2010. All three launched as curiosities, all three having their doubters, and all three following the (ever-expanding) iPod line to heights that nobody could have foreseen — surely even Jobs himself. People may have been a little disappointed with the iPhone 4S recently, but that’s only because Apple has impressed everyone so much in the past.

I’m sorry, it’s true. Having children really changes your view on these things. We’re born, we live for a brief instant, and we die. It’s been happening for a long time.

– Steve Jobs, 1993

Steve Jobs has had a remarkable effect on the industry as a whole. His impact on the progression of personal electronics cannot be overstated and his swift departure leaves a hole none could fill, but he has built a legacy that few could ever hope rival. Apple computer now stands firmly as a leader in consumer electronics, and for many it will always be known as The House that Steve Built.

Salesforce.com JAX-WS Partner API using Netbeans Howto Part 1

Brief Introduction

Salesforce.com is a hosting-based CRM solution for small businesses to large enterprises. It caught my interest last year when one of my clients wanted me to create a solution to sync up their Salesforce.com contacts with their MS Exchange server for all their sales team members in a centralized way, without installing Outlook plugin. I created the solution for the client using Salesforce Enterprise WSDL and MS Exchange WSDL. It was a really fun project for me since I learned a great deal about Salesforce.com Web Service API and the solution saved my client a lot of manual process time, about 80%. That’s a win-win. Before I created the solution for my client using Salesforce Enterprise API, I took a look at the Partner API realizing it is better than Enterprise API because my client will not need to rebuild the solution when they change their fields or metadata in their Salesforce. On the other hand, there is a time constraint so Enterprise API is used to save time.

Goals for this Adventure 

Now that I have sometime to revisit the solution I have created, I want to understand a few things related to Salesforce.com Partner API.

  1. Time and effort to setup my development environment (Netbeans 6.9.1) for using Salesforce Partner API
  2. Integration effort to make use of class library generated by the Partner WSDL
  3. Determine and compare the implementation differences between Salesforce.com Enterprise and Partner API
  4. Share what I have learned so others can avoid some of the frustrations I went through
  5. Look for feedback from others who may want to share some of their experiences and insights

Salesforce.com provides extensive documentation and small set of examples on coding with Partner API. However, they are gears toward using Axis. I personally prefer JAX-WS to Axis since it seems more active in term of  development by the open source community. I haven’t tried the Axis2 yet, so this is just my personal preference. There are also many postings regarding Partner API tutorials, and I think these tutorials are pretty good as well. You may want to check them out.

Setting Up Netbeans project using Partner API

There are many ways to create application project (desktop or web-based) in Netbeans, for this tutorial I am going to use desktop application. To create a desktop application, I go to File > New Project > Java > Java Desktop Application, click “Next”, and then click “Next” again. I named my application as SFPartnerWSDLApp with application class sfpartnerwsdlapp.SFPartnerWSDLApp. I choose Basic Application as the application shell and then click “Finish”. Netbeans takes care of the rest and create all the needed directory structures for the project.

Since I have already signed up for developer account in Salesforce.com and logged in, I go to Setup > Develop > API and download the Partner API WSDL. To download the Partner WSDL, I right mouse click on the link “Generate Partner WSDL” and save it to a folder, named wsdl, under the desktop application project directory I have just created. It should be in XML format. I named it partner.wsdl. If you have not already sign up as developer on Salesforce.com, you can go here and sign up before proceeding to the next step.

Next I create a new web service client in my desktop application project. To create a web service client, I right mouse click on my project, SFPartnerWSDLApp, in Netbeans, select New > “Web Services” > “Web Services Client” and click “Next”. Select “Local File” under “Specify the WSDL file for the Web Service” and then click “Browse…”. Select the partner.wsdl we have just downloaded. I provided a package name, com.salesforce.ws.partner, for the web services I am going to setup. Select JAX-WS for “Client Style” and checked the option for “Generate Dispatch Code”. Then click “Finish”.

At this point, I am getting an error due to name conflict from the generated stub code for the WSDL. To resolve conflict in generated stub code, I need to customize the JAXB binding by creating JAXB binding file with the following content. I named this file, sf-jaxb-binding.xml, and saved it under the wsdl folder I created earlier.

<?xml version="1.0" encoding="UTF-8"?>
<bindings
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://java.sun.com/xml/ns/jaxws">
  <bindings
    node="//xsd:schema[@targetNamespace='urn:partner.soap.sforce.com']">
    <jaxb:globalBindings
      underscoreBinding="asCharInWord" />
    <jaxb:schemaBindings>
      <jaxb:nameXmlTransform>
        <jaxb:typeName
          suffix="Type" />
      </jaxb:nameXmlTransform>
    </jaxb:schemaBindings>
  </bindings>
  <enableWrapperStyle>false</enableWrapperStyle>
  <enableAsyncMapping>false</enableAsyncMapping>
</bindings>

To specify the external JAXB binding file in the web service client I have defined earlier, I went to my Netbeans project, expanded “Web Service References”, selected “partner” and right mouse clicked to select “Edit Web Service Attributes”. In the popup dialog, I selected “WSDL Customization” tab, scrolled all the way down to the bottom of the list, expanded “External Binding Files” and clicked “Add”. In the file dialog box, I navigated to and selected the JAXB binding file I have just created. Then I clicked “OK”.

At this point, Netbeans refreshes the generated stub source code using the external JAXB binding file. Everything is build without error. This concludes our part 1 of this tutorial. Nice, clean and easy. No need to tinker with Ant script and wsimport script. In my next tutorial, I am going to share with you on how to make use of this Salesforce.com Partner API library. Stay tune.