Resurrecting an Epson Stylus Pro 9600 large format printer

» This is Part 1 of 3 part series. Be sure to check out Part 2 and Part 3.

Epson9600

In NYC we keep our large format printers in the kitchen.

So, what started as a simple desire to enlarge some of my photos ended up with me on Craigslist and ultimately hauling a six foot wide, 100+ lb printer from South Jersey into my one bedroom NYC apartment. Go big or go home, right?

Is it Y2k compliant?

The Epson Stylus Pro 9600 with Ultrachrome ink is a bit of a throwback (mine was manufactured in 2004) but, from what I’ve read, it is still the workhorse of many print shops and photographers. However, the biggest con of buying antiquated (and used) hardware is digging up all the manuals and software necessary to get things running. In my ongoing effort to give back to the internet, I’m documenting my experience and trying to centralize some of the information I’ve found thus far.

One of the more interesting things I’ve noticed is that given that this printer was first introduced over a decade ago, some of the web pages devoted to it (like here and here) look like something you’d find on the Wayback Machine; lots of pixelated gifs and centered white text on black backgrounds, if you catch my drift.

My Mac OS X 10.8.x didn’t recognize the 9600 when I first plugged in the USB. So, my first stop was the Official Epson 9600 product page. Luckily they have drivers compatible with the latest versions of Mac OS X. Not as much luck with the utilities, ICC profiles, and firmware, however.

On the Drivers and Downloads page, there is a link to a set of ICC profiles produced by Bill Atkinson, which are purportedly better than those that come with the standard printer driver. Unfortunately, the files available for Mac’s all have a .SEA.HQX extension which is an ancient compression format (Mac 9 or earlier). You’ll be able to use the standard Archive Utility app to extract the .SEA file from the .HQX archive, but the resulting .SEA file is an executable archive can’t be opened in newer versions of Mac OS (Leopard, Snow Leopard, Lion, Mountain Lion, Maverick). If you don’t understand what all that meant, ignore it, and just know that using some Technomancery©, I was able to extract the profiles and a link to a Mac OS X-compatible file containing all the Bill Atkinson 9600/7600 icc profiles is available below. All you need to do is double click the zip file and copy the .ICC files to Macintosh HD > Library > ColorSync > Profiles. You’ll be prompted for your password to copy files into this directory.

Once you’ve loaded the profiles they will appear in the list of the Printer Profiles when you print from Photoshop.

Icc Profile

Moment of Truth

From the previous owner I learned that the printer had been sitting idle for a few months (at least). The first thing I did was to print off a standard test file on a sheet of 8.5’x11″ Epson Premium Photo Glossy paper to see where things stood. First results were promising. No noise from the printer that would imply any worrisome mechanical issues and the print itself was fairly sharp. I was so pleased I even went ahead and shot off a 36″x44″ print using a roll of Epson Premium luster paper.

A second test with Epson Enhanced Matte Paper showed some fairly significant horizontal banding. A post to the Epson Wide Format Yahoo Group told me that this could be resolved by running through the Head Alignment utility on the control panel (details in the Epson Stylus Pro 7600/9600 Printer Guide, page 57). After a few runs, I was able to get rid of the banding. Thanks, jrstewart8.

Getting under the hood

Now you think I’d leave well enough alone, but dealing with the head alignment issue got me thinking about getting ahead any other potential maintenance issues. One of the most common issues cited on the forums was the printer head clogging. First stop, Nozzle Check. Result, not so good. There were very noticeable gaps in the Magenta and Yellow sections.

From a few of the resources below, I understood that I needed to get some windex and clean the printer head, capping station, flushing box, and wiper blade. This page from Northlight Images has a nice set of instructions on how to do this. This video shows how to get the head free and use a saturated paper towel to clean it. This video gives you a slight out-of-focus view into cleaning the wiper and capping station, albeit on a Epson 4600 (I think). The previous videos in conjunction with the repair manual from American Inkjet Systems should help illustrate the process for you (see Figs 2-15 & 2-15 on pgs. 12-13).

When I opened up the front cover, moved the head, and first inspected the station, I was not completely surprised to see tons (probably years worth) of dust and dried ink all over. I saturated a strip of paper towel with Windex and put it behind the head and let that sit while I worked on the rest. Now the AIS manual shows how to take of the whole side to get at the cleaning station, but I thought that would be tempting the Gods. (The Gods and I have have some history when it comes to electronics repair.) So, I left the screwdriver in the toolbox and worked on what I could access from the small opening. I had a syringe that I used to set up the continuous ink system on my Epson 2200 which gave me the reach I needed to saturate the capping station and flushing box. The wiper was a bit more difficult. I was able to reach it with some q-tips but wasn’t able to clean it as thoroughly as I would have liked. I ran through the steps three times with a standard clean (press the control panel button for 3 seconds) and nozzle check after each. (Hint; use plain cheap printer paper for the nozzle checks) It got worse before it got better. At the end however, I still had one tiny gap in the Magenta that would not go away.

I ran a power clean but that didn’t help and only succeeded in killing my Photo Black cartridge. Luckily, I had an extra. That’s the worse thing about using the clean cycles; they consume ink across the board -not just for the nozzle you’re trying to clear — and a lot if it. That gave me an idea (sure enough some others have come to the same conclusion before me) to just print a page of only that color to simulate a clean. An additional suggestion was to use as high a resolution as possible to do this, so I sacrificed a sheet of photo glossy to the cause and printed out a single sheet of magenta. Well, it was a nice idea in theory but in the end I still had that small gap.

I probably could waste more ink, paper, and time on this but, perfection is the enemy of done. So, I decided to let it go and move on. Given some of the severe head clogging posts I’ve read, I’m in good shape and probably approaching the point to diminishing returns. If I ever want to revisit this, it looks like the next option is to purchase cartridges filled with cleaning solution and run that (AbsoluteInkjet, Inksupply , and Amazon have them). Unfortunately, that’s a expensive investment and people seem to have mixed experiences with it.

Future-proofing

I believe the 9600 isn’t officially supported by Epson anymore. If it is, I have to imagine it’s soon approaching end-of-life status. So, if they’re going to stop making parts for it, I wanted to see where things stood with the consumables and hardware. I’ll probably want to stock up on some items now rather than when they become scarce and presumably more expensive. The Printer Status page (see page 131 in the EPSON 7600/9600 Quick Reference Guide) told me that the two motors and head were in great condition (5 stars). Great news given how expensive and difficult to replace those parts are. The automatic paper cutter blade was good (4 stars) but the Cleaner (2 stars) and Maintenance Tank (1 star) less so.

From what I’ve read the paper cutter blade (part # C12C815291) can’t be sharpened, so the only option is to lay down ~$100 for a replacement. Might be worth stocking up on one of these. Though, since this same part is used in the newer 9800, I’m not as worried about future availability. Also, I’ve been know to wield an X-Acto with some degree of skill.

An extra Maintenance Tank came with the printer when I bought it. Even then, this is where are the extra ink is dumped during ink cartridge changes and cleans, which happen frequently. It’s just a plastic tank with some absorbant material to catch the excess ink that somehow costs ~$25-$30. I read more than one forum that suggested reseting the maintenance tank chip and just replacing the absorbant material with .. *ahem* … tampons. For those men wanting to save themselves the awkwardness of buying feminine pads at CVS, you can use the chip resetter that came with the InkOwl Refillable Cartridges I ended up buying. When it gets full, I dump out the contents, pack it with 2 boxes of 2×2 Cotton Squares, and reset the chip.

I had no idea what “Cleaner” meant. Maybe it referred to the cleaner head (a.k.a wiper, part # 1113691) or the flushing box (part # 1112239) or cap assembly (part # 1091110), all of which I had tried to clean earlier. Wipers were hard to find. AIS and Ebay had them for $6 – $20. The other items are even harder to find. The few that google showed where in Europe and more than I spent on the printer itself. This might require more research.

Really though, the biggest concern is the ink cartridges. OEM inks range from $87 – $138. That’s likely to increase if Epson stops producing them. I bought a Continuous Ink System for my Stylus Pro 2200 for exactly the same reason. There are a number of refillable cartridges available at Ink2Image, InkOwl, Inksupply, InkPro2Day, InkJetMall, and of course Ebay. Though, I’m less concerned with the cartridge than I am with the quality of the ink. ConeColor seems to have well-regarded ink that allows people to use the standard Epson ICC profiles, which goes a long way in simplifying my digital workflow. After all this, I’m not investing in printer profiling hardware. (Edit: I ended up buying the InkOwl Refillable Cartridges on Amazon and eventually getting profiling hardware. Read more.)

I’ll follow up with another post when I’ve decided a course of action of these last items. Until then, here are some resources I found very helpful.

Files:

Useful Links:

Advertisements

Too Legit to Quit

Developerforce_logo
I've maintained this blog for a few years now, posting Salesforce related items on and off (admittedly more off than on). Recently, however, I was asked to kick it up a notch and become an offical blogger at Salesforce.com's DeveloperForce for both the Blog and Wiki. I know, right?

My first effort was to co-author the article Apex Design Patterns along with two other top experts at Salesforce.com; Dennis Thong and Manu Erwin. To give credit where credit is due, the article is based on a presentation Dennis delivered back at Dreamforce 2012. So, my contribution was a bit more Ctrl-C/Crtl-V than coming up with original content. Though, now that I've been given the keys to the kingdom I'm feeling a bit more motivated to take on some off my personal blog posts that have been languishing in draft mode. Stay tuned.

Just in Time Provisioning for Salesforce Portal Users

Just in Time (JIT) Provisioning allows you to create new standard and portal user records in Salesforce when a user first logs in via an IDP (Identity Provider). So, how is this useful for managing large portals? If you are running a high volume Customer Portal in Salesforce, you may not want to create all the user records for each of your customers right from the onset since each user counts towards your license total. JIT provisioning allows you to create those user records when the customer first logs in so, you're only giving a license to those customers that are actually active in your portal. 

There are three possible scenarios for which you could use JIT Provisioning for Portal Users;  

  1. Match existing contact and account, create new user record.
  2. Match existing account, create new contact and user records.
  3. Create new account, contact, and user records.

The Axiom SSO Tool hosted on Heroku is a very useful app for testing your SSO configuration in Salesforce. This tool allows you to test your Salesforce configuration and make sure things are working as expected, irrespective of your IDP settings. (I will not be covering setting up your IDP here.) 

So let's go thorugh the steps for configuring Single Sign-On in Salesforce and testing Just in Time Provisioning for those portal users. 

1. Create a Customer Portal - I'm going to assume you already have a portal set up. If not, follow the instructions from the Salesforce documentation – Setting Up your Customer Portal.

2. Get Your Customer Portal Id – Setup >> App Setup >> Customize >> Customer Portal >> Settings. Click on the portal name to see the detail page below. 

Portal id

Copy the portal id to a text document for use in future steps

3. Get the Organization id - Setup >> Administrative Setup >> Company Profile >> Company Information

Org id

4. Download the Identity Provider Certificate - Go to http://axiomsso.herokuapp.com . (Use a different browser so that when testing the SSO login you won't  get logged out of your Salesforce session.) Click the link for SAML Identity Provider & Tester. Then, download the Identity Provider Certificate

5. Configure Single Sign-on in Salesforce – Go back to your Salesforce session and go to Setup >> Administrative Setup >> Security Controls >> Single Sign-On Settings

Configure sso

NOTE: Enabling user provisioning requires that the SAML User ID Type be "Assertion contains the Federation ID from the User Object"
  • SAML Enabled: True
  • SAML Version: Default is 1.1. If you know the version your IDP uses, use that. Otherwise, select 2.0.
  • User Provisioning Enabled: True
  • Issuer: Axiom
  • Identity Provider Certificate: Upload the Axiom certificate from the previous step
  • SAML User ID Type: Assertion contains the Federation Id from the User object
  • SAML User ID Location: User ID is in the NameIdentifier of the Subject Statement

NOTE: Later when you're ready to test your production IDP, you can change the Issuer name and upload a new certificate. 

SSO settings

Click Save and copy the Issuer name and Login Url to a text document for use in the next step

6. Generate a SAML Response - In your other bowser, go back to the Axiom SAML Identity Provider & Tester, and click the link for Generate a SAML Response. Fill in the fields as follows; 

 
Axiom settings

  • SAML Version: Needs to match version selected in Salesforce SSO settings.
  • Username OR Federated ID: This is a unique identifier for the portal user and used to locate an existing user. This value will be stored on the user record (User.FederationIdentifier) when a new user is provisioned. For testing creation of a new user, just enter whatever string value you want. 
  • User ID Location: Subject
  • Issuer: Needs to match issuer name specified in Salesforce SSO settings.
  • Recipient URL: This Salesforce.com Login Url displayed when you save the SSO settings. 
  • Entity ID: https://saml.salesforce.com (default value)
  • SSO Start Pagehttp://axiomsso.herokuapp.com/RequestSamlResponse.action (default value)
  • Start URL / Relay State
  • Logout URL:
  • User Type: Portal (default is Standard)
  • Organization Id: Org Id from Step 3
  • Portal Id: Portal Id from Step 2

7. Enter JIT Provisioning Attributes - Just-in-Time provisioning requires the creation of a SAML assertion. The attributes in this assertion are critical details in matching/creating the records.

Here's the process as I understand it;

  1. Salesforce attempts to match the Federated ID in the subject of the SAML assertion (e.g. 12345) to the FederationIdentifier field of a existing user record. 
  2. If a matching user record is found, JIT provisioning uses the attributes to Update the fields specified in the attributes. 
  3. If a user with a matching user record isn't found, then Salesforce searches the contacts under the specified Account Id for a match based on LastName and Email. 
  4. If a matching contact record is found, JIT provisioning uses the attributes to Update the contact fields specified in the attributes and then Inserts the new User record
  5. If a matching contact record isn't found, then Salesforce searches for the Accounts for a match based on Contact.Account or AccountNumber and Account Name.
  6. If a matching account record is found, JIT provision Inserts a new contact record and Inserts a new User record based on the attributes provided.
  7. If a matching account record isn't found,  JIT provision Inserts a new account record, Inserts a new contact record, and Inserts a new User record based on the attributes provided.

Got it? If this seems really confusing then lets look at some more examples and their results in different scenarios.

Example 1: 

User record exists: Contact fields (eg LastName, Email) and User fields (eg Email, LastName, etc) are updated

User record does not exist, but contact record does: SFDC matches contact based on LastName and Email.New user record inserted.

User record and contact record do not exist: New contact and user records are inserted.

Contact.Account=00130000011Qx7i;
Contact.LastName=PortalUser;
Contact.Email=testPortal1@test.com;
User.ProfileId=00e30000000wAhX;
User.PortalRole=Worker;
User.Username=testPortal1@test.com;
User.Email=testPortal1@test.com;
User.LastName=PortalUser;

In the above example, we can create new portal users and contacts given a hardcoded Account id. So, what if you don't know the id for the Account? Then you can search for it using the Account's Name and Account Number.

Example 2:

User record exists: Account fields (eg Name, Owner), Contact fields (eg LastName, Email), and User fields (eg Email, LastName, etc) are updated

User record does not exist, but contact record does: SFDC matches contact based on LastName and Email. Account fields (eg Name, Owner) are updated. New user record inserted.

User record and contact record do not exist: SFDC matches account based on AccountNumber and Name. New contact and user records are inserted.

User record, contact record, and account record do not exist: New account, contact, and user records are inserted.

Account.AccountNumber=9999;
Account.Name=TestCompany;
Account.Owner=005J0000000yvS0;
Contact.LastName=PortalUser2;
Contact.Email=testPortal2@test.com;
User.ProfileId=00eU0000000ZLQe; User.PortalRole=Worker; User.Username=testPortal2@test.com;
User.Email=testPortal2@test.com;
User.LastName=PortalUser2;

Note that in the above example, an owner Id is required to create a new account record.

Now what if you don't want JIT provisioning to create new account records or you don't have Account details in your IDP. Then you can leave out the account attributes altogether.

Example 3:

User record exists: Contact fields (eg LastName, Email), and User fields (eg Email, LastName, etc) are updated

User record does not exist, but contact record does: SFDC matches contact based on LastName and Email. New user record inserted.

User record and contact record do not exist: SFDC matches account based on AccountNumber and Name. New contact and user records are inserted.

User record, contact record, and account record do not exist: Process does not insert any new records because an account is needed to create a contact and portal user record.

 

Contact.LastName=PortalUser3;
Contact.Email=testPortal3@test.com;
User.ProfileId=00e30000000wAhX;
User.PortalRole=Worker;
User.Username=testPortal3@test.com;
User.Email=testPortal3@test.com;
User.LastName=PortalUser3;

The examples above show only the minimum attributes required. However, you can include additional attributes which correspond to standard fields on the User, Contact, and Account records. You can even include custom fields though only if they are a text field. You can get a full list of standard user attributes here and contact/account attributes here.

Example 4:

User record exists: Contact fields (eg Phone, CustomField__c, etc), and User fields (eg Title, CustomField__c, etc) are updated

User record does not exist, but contact record does: SFDC matches contact based on LastName and Email. Account fields (eg Description, CustomField__c, etc) are updated. New user record inserted.

User record and contact record do not exist: SFDC matches account based on AccountNumber and Name. New contact and user records are inserted.

User record, contact record, and account record do not exist: New account, contact, and user records are inserted.

Account.AccountNumber=9999;
Account.Name=TestCompany;
Account.Owner=005J0000000yvS0;
Account.Description=Created by JIT Provisioning;
Account.CustomField__c=String Value Here;
Contact.LastName=PortalUser2;
Contact.Email=testPortal2@test.com;
Contact.Phone=212 555-1212;
Contact.CustomField__c=Hello World;
User.ProfileId=00eU0000000ZLQe; User.PortalRole=Worker; User.Username=testPortal2@test.com;
User.Email=testPortal2@test.com;
User.LastName=PortalUser2;
User.Title=CEO;
User.CustomField__c=All your user are belong to us;

8. Generate the SAML Assertion – Click the Request SAML Response button.

Generate response

9. Login – If everything has been configured correctly and login is successful, you should be directed to the Customer Portal's home page. If some error has occurred, you'll be redirected to the Custom Error URL you defined in the Salesforce SSO settings. Check the URL for error codes that might help you troubleshoot.

10. Confirm – Back in Salesforce verify the records have been created successfully.

 

Troubleshooting

Here are answers to a few common errors;

  • INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY – Translation: you probably used an invalid id for either the User.ProfileId, Contact.Account or some other id field.
  • CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY – Check the error description to see if this refers to the contact or the account. Check for validation rules that might be preventing record creation.

Another helpful tool is the SAML Assertion Validator (Setup >> Administrative Setup >> Security Controls >> Single Sign-On Settings). To use this tool, copy the Plain Text SAML Response from Step 8 and paste into the validation tool. It will run through the generated assertion and check for any errors.

Saml validator

 

Related Resources:

About Just-in-Time Provisioning for SAML

Just-in-Time Provisioning for Portals

Just-in-Time Provisioning Requirements

Just-in-Time Provisioning Error

Salesforce Workbench extension for Firefox and Chrome

WorkbenchToolsForGoogleChromeScreenshotA few months back, I converted from Firefox to Chrome because it was much faster loading javascript intensive sites like Salesforce.com and Workbench. Plus, it supports a bunch of helpful extensions (like these) that make my job easier.

A colleague recently informed me that Workbench has released extensions for both Firefox and Chrome. In Chrome it puts a Workbench icon on the right side of the location bar when you’re logged into a Salesforce production or sandbox site. Clicking on the icon logs you into Workbench for that instance in one easy step. As a bonus, it uses your local ip address so that you can get around any issues you may encounter with restricted IP ranges on your profile (ie the error message; Invalid_grant: ip restricted or invalid login hours).

Installing the Chrome extension was a bit tricky because Chrome has changed to only allow extensions installed from the Web Store which doesn’t have this extension available (yet?). You can get around this by downloading the extension from the project site. Then in Chrome, go to Window >> Extensions and drag and drop the extension onto the page. This will allow you to install it manually. Reboot Chrome and you’re ready to go.

Come stalk me at Dreamforce 2012

*Updated 9/14*
DreamForce 2012 is only a few weeks away. You can still register or sign up for a free pass that gets you access to only the keynote addresses and campground. Free is nice, but you don't get access to all the sessions and trainings and more importantly … the Red Hot Chili Peppers concert.
As this will be my sixth (or seventh?) DreamForce, I've already started preparing by getting some new Dr. Scholls and loading up on Vitamin C, since I'll be on my feet talking away most of the time I'm there. If you want to come see me in action, sign up for one of the following;

The code consultations have got to be the most valuable and under-utilized session. (NOTE: You'll have to have a valid Dreamforce registration and login to use the session links above.) Essentially, you sign up for a half-hour one-on-one with a Salesforce expert; usually a senior level developer or Technical Architect (like myself) from Strategic Services (ie Salesforce's consulting division). Given what our hourly rate is, that half hour alone could cover your registration. I can't tell you how many people sign up and then cancel last minute. The people who have come with very specific, detailed, thought-out questions have sometimes walked away with fully coded solution. (Safe Harbor!) So, if you've hit the wall on some code or can't figure out some integration issue, sign up for a consultation today. Even you you can't pre-register, try swinging by the Developer Zone information desk and asking about cancellations. Odds are you can find a free chair. Maybe you'll even find me.

See you soon.

 

Addendum Sept 5 2012 6PM EST- Apparently the Red Hot Chili Peppers are not the only attraction as Dreamforce will host a free music festival the entire week! Check out the details here. Check out this cool video from The Limousines who will be playing Tues 18 at 6:15. Be there or … don't. I will, though.

Make Your Own Backcountry Emergency Kit

DSC_01462007-07-01_16-16-50It's not all coding and Jui-Jitsu for me. I'll be spending the first two weeks of June traveling around Alaska. The plan is for a few days exploring Seward and the Kenai peninsula, then 4 days camping in the backcountry of Denali National Park. Thankfully, this will be one of my first trips unrelated to work in some time. So, packing will be limited to essential gear only.

Given that the Denali backcountry is unmarked, remote, and full of wildlife that can eat you, I'm preparing a little more than I have for previous treks where I've relied on blazed trails, guides, and being the biggest carnivore in the area. (The picture on the left is from the Salkantay Pass at 4,600 meters/15,000 feet on route to Macchu Picchu.)

My daypack kit (a.k.a go bag, ready bag, emergency kit, survival kit, etc.) was already based on the assumption that every day hike can become an unplanned overnight. (I learned that lesson the hard way during my younger days in the Boy Scouts.) To that end, it carried (most of) the Ten Essentials. However upon reviewing my kit, I noticed that my first aid kit had picked clean over the years (only a few band-aids, alcohol wipes, and some Benedryl left), I almost never carried extra food, and — most importantly — I only carried one. Generally, I hike with my wife. So, sharing a single (and deficiently supplied) kit between us may not be the best idea if we where to get separated. 

So, based on experience, some research (listed below), and a few of the ready-made kits available through REI, EMS and a few other suppliers, I've complied a list of items for my DIY Backcountry Emergency Kit. It's probably cheaper to buy a ready made kit and add to it. However, building from individual components let me control the quantities and quality of each component and, in some cases, was more cost effective since some items came in packages of two already. Plus, the majority of items are non-perishable and can be used for refills. Really, it's not a big deal if you end up with extra band-aids around the house, is it?

Here's what I came up with. Collectively, it weighs between 1.8 – 2 pounds so, it's a bit on the heavy side for a day hike. I tried figuring out what could be removed without comprimise, but I really couldn't. If you have suggestions, please add comments below.

  • Emergency
  • First Aid
    • Antibiotic Ointment – CVS sells a box of one-time use packets
    • Ibuprofen tablets (10) – look for travel size containers)
    • Antihistamine tablets (6) – i.e. Benedryl
    • Anti-Diarrhea tablets (4) – i.e. Imodium AD
    • Hand salve
    • Antiseptic towelettes (10)
    • Wound Closure Strips (6) – aka Butterfly bandages
    • Moleskin
    • Band-aids (15)
    • 2" gauze pads (5) 
    • 3" gauze pads (5)
    • 2" roller bandage
    • 4" roller bandage
    • Ace Bandage
    • Bandana – can be a tourniquet, sling, water filter (for silt only), sun protection.
    • Athletic tape
    • Hemostatic Agent/Sponge – QuickClot
    • SAM splint
    • Latex gloves
    • Safety Pins (4)
    • Needle and thread
    • Tweezers
  • Optional
    • Fresnel Magnifier
    • Fishing kit – 4 hooks, bobber, 2 sinkers
    • Brass Wire (22 gauge) 8 ft. – for snares, repairs, etc.
    • Camp Stove – this Esbit pocket stove with solid fuel is really small and light

This list assumes you're also carrying

  • Topographic map
  • Sun Protection – Sunscreen/Sunglasses
  • Extra clothing (assume coldest weather for your area, water resistant) 
  • Water ( 2 liters per person per day)

To this, I will have to add Bear Spray which I apparently can't get in New York though I doubt the TSA would let me on a plane with it anyway. Not if they're patting down Henry Kissinger

Hopefully, you find this useful. Again, if you have any question or suggestions, please add to the comments below. 

Resources:

Salesforce Technical Architect Certification; Part 2 – Review Board

Continued from Salesforce Technical Architect Certification; Part 1 Multiple Choice Exam

BruceleeI’ve just finished the second part of the Salesforce Technical Architect Certification, the live Review Board, and I must say it’s a bit draining. Imagine something like the picture on the left with the questions coming fast and hard. SSO for desktop app!? Oauth! *Hewah!* Improve queries in large data volumes!? Indexing! *Kapow!* Cloud based platform for Ruby!? *Herokuuuu!!!!* Fortunately, my session was held at Salesforce HQ in San Francisco and not Han’s Island, so we were limited to verbal sparring only.

If you’t don’t already know the format, here’s the deal. You have to prepare a presentation – a Case Study, if you will – on a project that you’ve done in the past. This has to be sent to the Certification team at least one week prior to your scheduled appearance before the board. (You’ll get an email with all the details.) On the day of the review, upon arrival you’ll get handed a 4-page written hypothetical case that outlines a company and their requirements for a Salesforce solution. You have 75 minutes to read that and put together your solution. You then present that solution to a board of technical architects for up to 30 minutes followed by 30 minutes of questions. If you take less than 30 minutes to present, that time gets added to the questions portion of the hour. Following a 15 minute break, you’ll get another thirty minutes to present your Case Study followed by 45 minutes of Q&A. Same rule applies. If you use less time to present, you get more time on the hot seat. Finally, the whole thing doesn’t end until you pin the host. I’m not entirely sure about that last part, since by that point I was a bit punchy. You may want to add some extra pushups to your preparation regimin just in case.

In preparation for the board, I had two practice runs with hypothetical cases over the phone and one with my client case in front of a live audience. Based on my experience, my prep, and conversations with people who have completed the certification, here are a few bits of advice that you might find helpful.

Try scheduling your multiple choice exam board just a few weeks prior to the review board. I wish I had signed up for the review board that was held in March, only three weeks after I passed the multiple choice exam (see my previous post). Everything was still fresh in my mind, then. Instead, I opted for the May board thinking I didn’t have enough time to prep my project case. With all the time that passed I ended up having to study up on some key areas all over again. In retrospect, I should have done the case study in parallel with studying for the multiple choice exam and then three weeks would have been sufficient time to do some mock runs.

The mock cases I’ve seen have ranged from 3-5 pages in length and have a lot of detail about the company, requirements, desired process flows, security, and more. There is far more detail than I think is reasonable to read and respond to in the time you are given. This is where I had my epiphany – you are not meant to. In fact, expect that a lot of the Q&A portion will be focused on those areas you weren’t able to cover because that is by design. The board members need to have something to ask you about. It would be really awkward if your 30 minutes of presenting was met with 30 minutes of crickets chirping. So, instead of trying to provide a complete highly detailed solution for each requirement, concentrate your efforts on puling out the major requirements and putting a high level solution overview together. You can’t prepare a powerpoint in advance for this (which had been my original plan). They give you a blank powerpoint template that you can use with a few generic tables and diagrams in the appendix. They also handed me a Windows laptop to use, which given my four year mac conversion, presented other challenges. In my first mock run, which was via GoToMeeting, I spent far too much time trying to get my powerpoint slides together and couldn’t get everything down. Don’t make that mistake. It’s much quicker to use the provided paper to mock up your landscape diagram and ERD’s. For the review board case, I put together only ten slides some of which only had a title and most of which had only 3-4 bullets. My strategy was to use the powerpoint to set my agenda and keep me on track. On the blank slides, I knew to talk to my solution while transfering my drawings from paper to the whiteboard. I put a minimum of text on the other slides knowing that I could take as much or as little time as needed to expand on the bullets. There will be a timer counting down and visible to you and the board members. Keeping my total slide count to ten helped me know exactly where I should be by the 10 minute mark, 20 minute mark, etc.

I found the Q&A much easier, but I know that not everyone does. Just remember to take your time. When you get a question, process what you’re being asked and why, mull over a solution in your head, and speak once you’ve got a thought out answer. If you rush ahead to answer you’re just increasing the number of questions you’ll get. During some answers, I went back to the whiteboard and expanded on previous drawings or diagrammed something completely new. Take the time to answer the question as completely as necessary, but be sure not to ramble on. Once I saw heads nod, I wrapped it up.

The case presentation was much easier because it’s prepared and practiced in advance. My powerpoint was about 20 slides long and was structured as follows;

  • Overview slides; a client description and a project description
  • Systems Landscape diagrams; one before and one after
  • Solution Highlights – pulled three discreet solutions from the overall project and gave two slides to each; one with bullets and one with an supporting diagram
  • Project Reflections – this can include technical challenges or project management issues, lessons learned and maybe decisions that would be made differently in retrospect

The project I selected spanned the last year and a half of my life (and continues to do so). So, given that scope, it was important to pull out only a few ‘highlights’ rather than trying to cover everything the project entailed. I didn’t have anything related to testing and change management in my deck and got a lot of questions on that afterwards. So, it may be helpful to include that somewhere in the mix.

The second Q&A is longer by 15 minutes and it feels even longer since you’ve been talking for an hour and a half by this point. (Remember to bring a water bottle.) It was interesting that not all of the questions focused on the technical aspects of the project. A good number, as I said, were focused on testing and change management. Quite a few others were on coordinating the development team and overall project management.

In all, I think the review board part of the certification does a good job in eliciting those qualities required by a Technical Architect. Being able to present to an audience and field questions with confidence definitely separates a developer from an architect. Both can have the technical expertise, but the role of a TA in the project is more than that. Its one thing to be able to envision a solution. It’s quite another to be able to get people to buy into it. Make sure you’re comfortable on both ends of that spectrum as you prepare.

Hopefully, you find this useful. Good luck!

Update June 26, 2012 – Got the official notice that I passed the certification today. Thanks to everyone that helped make that possible.