We ARE excited to be in San Francisco for SPTechCon. If nothing else road trips give us an opportunity to play with some of our devices. The last time I was in San Francisco I was using a a Nexus 7 and Adobe Photoshop Explorer to post process photos. The results can be found here and here. Six months later finds me back in San Francisco still using the Nexus 7 as a platform but using Adobe’s PS Touch and the Snapspeed App for post processing. My process to gets photos from The Nikon 7 to the Nexus has been simplified but is still unacceptable.
Getting The photos to the Nexus
Moving photos from the Nikon D50 to the Nexus’s file system is a pain. I could simplify this process by
buying a new camera and using the Raw Vision App and a cable; or
Using a Bluetooth enabled SD card; or
Upgrading me Nexus to something with a front facing camera.
I love my Nikon and am too cheap for the cost of the Bluetooth SD card so I went the hardware root. Here is the setup:
Nexus Media Installer App (~$3)
Nexus compatible To Go cable (~$3)
A USB SD card reader (~$2)
Step One: The Physical World
SD to card reader to To Go Cable to Nexus port
Our Topology: Cheapness Electronics, Cambridge Mass
Step Two: Copy the files from the card to your system
When the card is inserted into “the cable system” Nexus Media Installer App will start and attempt to read the SD card directory. I needed to be sure not to be running my file manager (File Manager HD App – free) at the same time. You can preview all photos on the card. No photo objects on the cards are available as documents. Select the objects you want to copy and hit the save icon. This will start a background job, one for each object, to transfer the photos to your file system into a “pictures” folder. Multiplexed and asynchronous request fulfillment . oh my. Nice software. This folder is visible to Gallery, PS Touch and Snapspeed. Other Apps my not make this folder accessible. But you can always move files around with a File Manager like File Manager HD.
Post Processing the Photos
All of the software I have seen on the Nexus allow only jpeg processing. Even Adobe PS Touch supports only JPEG. There is no RAW file type support available on the Nexus platform. I looked at post processing apps from three board groups:
Editors with Theme filters only
Editors with adjustable photo enhancement filters; and
Editors with spot adjustment filters and other features.
In my last blog post on this topic I was using Photoshop Express, a nice free editor with adjustable photo enhancement. I liked the results but the app can only process files in the camera’s DCIM folder (which requires us to do file copies of imported photos twice!)
San Francisco Bay – Photoshop Express
Feeling plush I spend $2.99 and bought the next step Photoshop App: PS Touch this provides a rich set of editing tools, layers (if you use Photoshop on a laptop you know what that means), a nice history stack and more. The results are fine but, the interface is difficult to work with but some of that may be that its UI is exposed using primarily Surface Touch \ Windows 8 conventions. This will flow much better on a ten inch, preferably a windows, device. (I am working on a 7 inched Nexus not a 10 inch anything). It’s not a lot of fun to use and it may be overkill unless you do photo post processing and you have no lap top or desk top version of Photoshop to use. But if your Surface or 10 inch iPad are your primary device this is a good choice. Not a fun or quick or easy, choice.
SPTechCon Speaker Andrew Connel – PS Touch
A nice free alternative to Photoshop Express is the very simple but effective Snapspeed. This is a lot of fun to use and combines theme filters and photo adjustment filters. I did a bunch of post processing with this app and was very happy with the results. Try it.
Art Gallery – Snapspeed
A Nexus Gallery (PS Touch and Snapspeed Post Processing On the Nexus 7)
(This last one has been processed using Photoshop C5 on a laptop)
I listen to the Grateful Dead every night for over an hour while I am on the treadmill. During January I was listening to Fillmore and Winterland concerts from 1970 (the era of Workingman’s Dead). The Dead were experimenting with a warm intimate sound during 1970. Many shows featured a mix of acoustical sets (the NRPS were often in attendance). This was the year I first saw the Dead live. Clearly, however, there were issues. The sound worked best in small halls, like the two Fillmores and just as clearly Bear’s abilities as a sound man had just about reached his (and the band’s) limit. Although the funk of Dancing In The Streets and Turn on Your Love light still worked, you can hear both Bob and Jerry breaking out on some songs (China Cat) to a stronger more pure ROCK approach. Johnny B. Goode and Not Fade Away both make tentative appearances during the year.
In 1971 the Band moved into a new and improved model, a new sound crew and new sound system were developed and the ability of the band to effectively play larger halls was perfected. This is the year which moved towards the Skulls and Roses release (recorded in March and April). The guitar sound is crisper (and louder). In addition to Johnny B. Goode (which would find it truest form in 1972), often moves into the closing spot, replacing TOYLL). Jerry is adding new songs (Wharf Rat, Loser, Bertha). Both Bob and Pig are adding stronger, more focused, vocals. This year’s version of the band snaps with energy.
This is a year which has been heavily documented with the live recording series from Dead.Net and include:
The Internet Archive has always been a great source for free concerts recordings of the Grateful Dead. The year 1971 is no exception. Probably no single individual has done more quality sound processing of concert tapes posted to the Internet Net then a the great Charlie Miller and 1971 is not exception. In this year alone, Charlie contributed 26 soundboard recording which he processed. No single contributor has better sound processing skills or better musical taste than Charlie. And we thank him for his contribution. You can find my blogs on the Grateful Dead recordings on the Internet Archive here, here, here and here.
The February run at the Capital Theater is outstanding. The performance is great and the sound system (and sound processing are terrific). Among these dates the February 18th date is freely available and features some breakout performances, including Bertha, Loser, It Hurts Me Too and Truckin’. Pride of place is the great sequence:
Mama Tried
Hard to Handle
Dark Star
Wharf Rat
Dark Star
Me And My Uncle
This is a nice long two set concert. The first set begins with Bertha and Truckin and ends with Casey Jones. The second set, not as strong as the first set, opens with a early short version of Playin’ In the Band and an eraly version of Sugar Magnolia (with Wah Wah). The second set concludes with a nice sequence of:
Not Fade Away
Goin’ Down The Road, Feeling Bad
Not Fade Away
Uncle John’s Band
Wow. Nice. Here is a link list into the set. Click on the date to jump to the Internet Archive’s player to hear the whole concert. Individual songs can be heard in modern browsers by clicking on the track title (free a track with a right click).
We are using Sharepoint 2013 RTM. We will be looking at Sharepoint Hosted Apps in this post and we will deal with provider hosted apps in a later blog post. Out bottom line on Development Environments is we are using a developer ‘environment in the cloud’ from CloudShare. Our specific goal is the use the new, and sparsely documented, Sp.WebProxy Javascript function to do cross domain calls into REST Endpoints which are external to Sharepoint. We will not be discussing the esotaric hidden IFrame solution discussed in Solving cross-domain problems in apps for SharePoint.
Forget about WCF and using Custom Restful Web Services like we used in Sharepoint 2010. Although this technic did work to add proxy access to external data sources, the process was poorly documented, highly technical and fragile. Are basic need is to use Sharepoint 2013 and to access data from other servers which we control which have our data. For important reasons these do not fit into the B?? model and must be accessed either through proxy methods (see Part I of this series) or with cross-domain AJAX calls from the client. When we transitioned to Sharepoint 2013 after our brief marriage to Sharepoint 2010 we were very excited about the whole App concept or thing or whatever it is. We decided to write some, just as soon as we could figure out what they are, how to write them and how to set up a development environment. Our bottom line on Sharepoint Apps. They come in three flavors: auto-hosted, Sharepoint Hosted and Provider Hosted.
Create a Development Environment
Wow. Look at those specifications! Eight Gig plus of RAM, 64 bit Quad Core Processor, Visual Studio 2013. Page after page of unclear and contradictory documentation; most it for the Preview not RTM. Where did I put that old propeller beany I used to wear in the 1990’s? Ok, looks like we might be able to try this with our desktop machines (they are monster machines), but just in case we also start looking at VMware to build these suckers on. The basic MSDN documents:
Well this looks really hard and we may need to set this up more than once (looks like we could trash the system more than once getting things right). This clearly is not a simple, focused product like SQL Server. So we started looking for more help and setup tips. Trashed my physical machine a couple of times, rebuild are taking a long time. Shift to Hyper-V as MS suggests, still can’t quite get a system setup and still have to deal with the corporate AD. Well, at least re-builds aren’t taking as long. One of my co-workers takes a (physical) class. When he returns he is pretty excited. They used a cloud based configuration of Sharepoint 2013 (Not Sharepoint Online or Office 365 or whatever the folks at Redmond are calling the AZURE based system today) and was pretty happy. We shift to using CloudShare. They have a three server template with fully licensed Sharepoint 2013, SQL Server 2013 and a separate AD server; plus all the Microsoft software you can shake a stick at (Visual Studio, Office 2013, etc. at no extra cost). Nice, not that expensive for a developer playpen and I can spin up an instance in about 4 minutes and can take snap shots of by way stations during any radical reconfigurations so I can drop back to a stable version in about 15 minutes. Access is via browser and for a development environment it all runs quickly. We are happy again.
Get The APP Documentation and Sample Code
Hmm again. A lot of the stuff on MSDN and Technet are dated July, 2012 and are based on the preview drop and/or for the Azure based system of Sharepoint. Not good. Hey, how about Plurasight? They seem to be jacked pretty directly into Microsoft. They have a whole bunch of Sharepoint courses, tons of Sharepoint 2010 courses, this must be helpful right, Sharepoint 2013 can’t be that big of a jump form 2010 can it? And where are those Sharepoint 2013 apps courses? Oh ok, here they are, all dated 2012-11-05:
Twelve hours of Sharepoint 2013….stuff. Part 6 is over three hours long. Ok lets do it. Installation courses are ok but they seem to be leaving a lot of stuff out (or perhaps we fell asleep at some point). The blogs for Sharepoint App development often have the same problem, based on the preview or on the cloud based Azure version of Sharepoint and often (this really gets me) just re-writes of the same base line documents from MSDN. Here are some basic papers we used (Don’t blame us for the poor capitalization of the titles):
The MSDN papers How to: Create a basic SharePoint-hosted app should be enough to get you up and running on a basic low functionality Sharepoint hosted App. Note this correction however. Replace the lines of code from the paper:
function sharePointReady() {
ctx = new SP.ClientContext.get_current(); $("#getListCount").click(function (event) {
getWebProperties();
event.preventDefault();
});
welcome();
}
With
$(document).ready(function () {
ctx = new SP.ClientContext.get_current();
$(“#getListCount”).click(function (event) {
getWebProperties();
event.preventDefault();
});
welcome();
});
Once you have a Sharepoint hosted app which will do ANYTHING(this may take a while), start a new project based on the papers:
I don’t care what lies you have been told before, you can make cross domain AJAX calls from within a Sharepoint hosted app, with javascript and they all involve calling directly or indirectly SP.WebProxy.invoke. In the romantic technical documentation of MSDN this is defined as:
[ScriptTypeAttribute("SP.WebProxy", ServerTypeId = "{656a77c4-1634-415c-bf85-c6c0cb286e0e}")] public static class
is defined as:[ScriptTypeAttribute("SP.WebRequestInfo", ValueObject = true, ServerTypeId = "{71aa825d-bc12-422d-a177-d2e63fe68cd9}")] public class WebRequestInfo : ClientValueObject
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Host: app-8520ffa3ec708b.sp2013apps.com
Content-Length: 719
Connection: Keep-Alive
Pragma: no-cache
Cookie: WSS_FullScreenMode=false
POST Body:
Notes:
This is a HTTP POST to _vti_bin/client.svc/ProcessQuery. Note the checksum in X-RequestDigest and the Accept and Content-Type headers refer to the call to ProcessQuery and not to our ultimate endpoint (…WebAPI005/api/values). The endpoint url and headers were packaged in WebRequestInfo and appear in the body of the POST in XML format. In this simple call we are only defining a Method (GET) Accept-Type (application/json) and an Url (http://…WebApi005/api/Values).
X-RequestDigest: 0x5ADEBB9D5BE8268193CA8B29902E1C16B1C11DC23CBD94B5FBD6E6A659D34D29765539025B8B34DFC3719279ED07B3306083414D88611E1D09000B30DACFDFB0,11 Feb 2013 18:13:55 -0000
X-FRAME-OPTIONS: SAMEORIGIN
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Content-Type-Options: nosniff
X-MS-InvokeApp: 1; RequireReadOnly
MicrosoftSharePointTeamServices: 15.0.0.4420
Date: Mon, 11 Feb 2013 18:13:56 GMT
Content-Length: 597
The body for our Restful Endpoint would look like:
The content-type response header specifies application/json and our data is also json. Note also that the content-type of the Body element is defined by the JSON response element ResponseBody[2].Headers.Content-Type. Note that the format of response body is dependent upon the sender. A response for a Sharepoint list will have a different format than the WebAPI sender we are using here. See How to: Query a remote service using the web proxy in SharePoint 2013 for an example of processing Sharepoint output.
Success and Error Routines
function successHandler() {
if (response.get_statusCode() == 200) {
var ResponseBody;
var thing1;
var thing2;
ResponseBody = JSON.parse(response.get_body());
thing1=ResponseBody[2].Body[0];
thing2=ResponseBody[2].Body[2];
//Do Your Thing with each value
}
}
else {
var httpCode;
var httpText;
httpCode = response.get_statusCode();
httpText = response.get_body();
//Do your thing with the error response
}
}
function errorHandler() {
var httpText2=response.get_body();
//Do your thing with the error response
}
Call Cross Domain Using JQuery AJAX to Call SP.WebProxy.invoke
Here is the same call but using JSON to call SP.WebProxy as an AJAX REST call:
Note: the authentication is handled on the fly with NTLM negotiation.
JSON Content
Note here the call body is in JSON, since this is a typical JSON AJAX call to the Sharepoint REST subsystem and is used to pass the url, headers and any optional parameter values to the target Url.
X-RequestDigest: 0xF7EEE4ED6914FDAD63C7C097117C21AEF182741021B51616C22A96D1CDD650A57C79D02D4C81F31B0EB2E956E6EC7254356CAB341E94F1B155F4E1C5A6AD1866,11 Feb 2013 19:22:33 -0000
X-FRAME-OPTIONS: SAMEORIGIN
Persistent-Auth: true
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Content-Type-Options: nosniff
X-MS-InvokeApp: 1; RequireReadOnly
MicrosoftSharePointTeamServices: 15.0.0.4420
Date: Mon, 11 Feb 2013 19:22:48 GMT
Content-Length: 1395
Response Body:
Note that here when called this way out response data is found as
responseBody.d.Invoke.Body[0]
responseBody.d.Invoke.Body[0]
Strange but true.
Note also that no matter how you call the cross-domain endpoint you are getting back two status codes. One status code of the SharePoint call itself and one status code, nested in the JSON response, from the cross-domain endpoint. I am still experimenting with this.
Next Steps
My next step with SP.WebProxy will be to include security information in the call and to process this information on the REST endpoint. See You Then.
I have written several blog about individual Grateful Dead show in the 1970. They can be found here. A hyperlist list of all 1970 concerts can be found here. All of my Grateful Dead blogs can be found here. I have never been attracted to the approach of locating the ‘best’ concert or the ‘best’ version of a particular Dead song. We all have our favorites. I often find myself playing a particular set of 1970 Grateful Dead concerts when I am the mode for Grateful Dead 1.0 (the Pigpen era). The Dead released two commercial albums during 1970 and Dead.Net has released at least six concert from this year alone. This is a very rich year for The Dead. The drums are kicking, Pig Pen’s organ is grinding, Bobby has finally learned how to play the guitar… There are a boat load of excellent concerts to listen to free on the Internet Archive even after those which are no longer available because they have been commercially released by Dead.Net. The concerts selected here are limited small San Francisco area venues (the exceptions are the Fillmore East & The Winterland). The listings here are of all Sound Board records. The best of these, IMHO, are the Fillmore shows (East and West) and the Winterland shows. For completeness I have included shows at the Matrix, The Euphoria Ballroom and at the Family Dog. There are several audience recording patches of individual songs and parts of song among several of the shows.
The Winterland In the 1970’s (Grateful Dead 2.0 on stage).
Why 1970 (and not 1969 or 1971)?
This is a great year for Dead version 1.0, they are capable of playing as a tight ensemble with a funk and bluesy feel. The psychedelic excesses of 1968 are (mostly) in the past and the power stadium rock band (Dead version 2.0 with the Godchaux’s ) is still in the future. The band presents a warm mix of (what was to become) folk-rock and funk based blues (The versions of Turn on Your Love Light played here could last over 25 minutes where often used as a second set closer). The jams feature great interactions between Jerry, Bobby and PigPen with a driven rhythm section of base and drums. And frankly these shows are what I have been listening to over the last few weeks.
Why Small California Halls?
The band often played their most intimate sets in small halls which were close to home. Indeed the Fillmore West was a second home, The Matrix was a small club attached to the Fillmore West, The Euphoria was right around the corner from their practice space in San Rafael, The Winterland, although much larger, was also a San Francisco club and also a Phil Graham venue. The Family Dog (on the Great Highway) was at one point owned by the Grateful Dead. The Fillmore East is obviously not a San Francisco club but the Dead have been playing there since 196X and it was also a Phil Graham venue. “There’s not place like home, Auntie ‘Em”. By listening to small venues over the year one can build up a better appreciation of how the Dead developed thematically during this crucial year.
Aren’t There Some Bad nights and poor sound board records in this Listing?
Yes, indeed. But not among the Fillmore and Winterland shows. But the great shows didn’t just happen. Think of the Euphoria and the Matrix sets as live rehersals in battle conditions and The Family Dog is, well, the Family Dog.
Click On The Date Column To jump to the Internet Archive For The Concert.
Click On the Track Column To Jump directly to the Song (To unlock and save the track locally: RIGHT CLICK the track.)
(Note the studio recording listed as 1970-01-01 manifestly did not take place on that date but it is the date placeholder used in the Internet Archive for this recording).
Type Column: S = Soundboard, Studio=Studio Recording, SC = Soundboard recording remixed by Charlie Miller.
A Note About Our Development Environment: We’re all Bozos on This Bus
After several frustrating attempts to construct a working Sharepoint 2013 RTM development environment locally on both physical and Hper-V hardware we finally got out our (corporate) credit cards are purchased virtual cloud environments from CloudShare. For a very reasonable fee, I have a three server reference implementation of Sharepoint 2013 RTM (Sharepoint Server, Windows 2012 server SQL Server and Windows 2012 Active Directory Server). All of which is fully re-configurable. Plus all the Microsoft products you can shake a stick at (Visual Studio 2012, Office 2013 and more at no extra cost. Make the pain go away. If you are developing now and are waiting for corporate to configure Sharepoint or struggling to configure Sharepoint on your own STOP – Go cloud based. Easy, fast, and fun.
SPProxyOperation Class How to Call into a Full Trust Assembly (Farm Solution) From a Sandbox Solution
The MSDN official documentation of the Full Trust Proxy Class is the rather terse:
public abstract class SPProxyOperation
public abstract Object Execute(
SPProxyOperationArgs args
)
public abstract class SPProxyOperationArgs()
public static Object ExecuteRegisteredProxyOperation(
string assemblyName,
string typeName,
SPProxyOperationArgs args
)
What more could you want? Start by reading base reference articles from MSDN:
You should review these papers before proceeding with this blog. I am attempting here to
correct some errors in those papers;
clarify some ambiguous points; and
provided some simplifications to development procedures.
You should refer to these papers for additional details and hand holding for sections of code development I am not going to discuss herein.
Step One Create a Full Trust Proxy.
Create a new Project as a Sharepoint 2013 – Empty Project and set the Sharepoint Server and select Farm Solution in the setup dialog box. Once the project is created open the property pages for the project. On the Application Tab:
Set Default Namespace: (for example) Contoso.SharePoint.UserCode
Set Assembly Name as Namespace.AssemblyName (for example) Contoso.SharePoint.UserCode.myProxyOp
On the Sharepoint Tab in the post-deployment step add this code:
net stop SPUsercodeV4
net start SPUsercodeV4
which will stop and restart the User Code module after deployment. Save The project and close the Property pages.
Open the AssemblyInfo.cs file in your project and add this line to the bottom of the file:
[assembly: AllowPartiallyTrustedCallers]
This will enable Sandbox solution web parts to call the assembly.
Now create a new item for your project: a class file. Here is a simple shell of the code you will need to write.
//using statements
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.UserCode;
namespace Contoso.SharePoint.UserCode
{
public class myProxyOp : SPProxyOperation
{
public override object Execute(SPProxyOperationArgs args)
{
if (args != null)
{
//Decode the arguments to your specific needs:
//See the two Serializable Classes below
MyProxyArguments myArgs = args as MyProxyArguments;
public MyProxyReturnDataStructure(string thing1, string thing2, string thing3)
{
Thing1 = thing1;
Thing2 = thing2;
Thing3 = thing3;
}
}
//Define the parameter class (Argument Class) to pass arguments into the proxy class
[Serializable]
public class MyProxyArgumentsClass : SPProxyOperationArgs
{
//Define Arguments
public string Thing1 { get; set; }
public string Thing2 { get; set; }
public string Thing3 { get; set; }
//Initialize Arguments (Optional)
public MyProxyArguments(string thing1, string thing2, string thing3)
{
Thing1 = thing1;
Thing2 = thing2;
Thing3 = thing3;
}
}
}
Add Registration Feature For your Full Trust Proxy
We must add an event receiver For Feature Activation and Deactivation. Why? Who Knows, just do it, its purely boiler plate code and we are only supplying the Class name of our class derived from SPProxyOperation. Please remember to set the Scope to FARM. See the Reference articles for details.
This adornment is both obscure and lead to errors when the proxy class was called by the Farm solution. We note that the abstract class definition as documented in MSDN has these attributes already so there loss from the user code seems to not be a problem.
One finalcode addition, open the feature xml file, it will look something like:
We have added the attribute and value given in RED above. This will allow you to retract and deploy this package multiple times without manually removing the registration feature each time.
Build and Deploy your project to your Sharepoint server. Ok, now we are ready to write a Farm solution to call the proxy.
Create A Sandbox solution to use the Full Trust Proxy Class
Get the public key of the Assembly which contains the Full Trust Proxy Class
Visual Studio command line utility called sn.exe. It can be used to extract the public key from a strongly named assembly.
Get the physical address of the assembly you created. You do not need to manually access the assembly in GAC. In my example above this path is
C:\Users\Administrator.AD2012\Documents\Visual Studio 2012\Projects\WebAdminInfoOp\myProxyOp\bin\Debug
use this and the SN utility to get the public key:
Create a new Visual Studio Project Sharepoint 2013 Empty Project and make it a SANDBOX solution. See the reference article for details.
Add a reference to your full trust assembly you developed above. You do not need to use the assembly in the GAC, use the physical project path you obtained above.
The guts of the Sandbox solution is the call to the Full Trust Proxy. Use a non-visual Web Part to implement the call. This critical code will look like this:
using Microsoft.SharePoint.Utilities;
using Contoso.SharePoint.UserCode;
//get the Assembly name, the class name and the assembly’s Public key into strings into strings
The New York Times often covered Aaron and now with his death they have continued this coverage. Here are some additional NYT links and Aaron in life and death:
Shall I go off and away to bright Andromeda?
Shall I sail my wooden ships to the sea?
Or stay in a cage of those in Amerika??
Or shall I be on the knee?
Wave goodbye to Amerika
Say hello to the garden.
Oct 21 1967: 70,000 demonstrators came to Washington, D.C. to “Confront the War Makers.” The biggest rally was held at the Lincoln Monument on the D.C. Mall. During the afternoon, people lined the reflecting pool and listened to speeches by Dave Dellinger and Dr. Benjamin Spock… The plan was for people to sing and chant until the Pentagon was levitated and turned orange, driving out the evil spirits and ending the war in Viet Nam. By the way, it was a year later that Abbie Hoffman was arrested in Washington DC for wearing a shirt that resembled the design of an American flag. “I wore the shirt because I was going before the un-American Activities Committee of the House of Representatives, and I don’t particularly consider that committee American, and I don’t consider that House of Representatives particularly representative. And I wore the shirt to show that we were in the tradition of the founding fathers of this country.”
Abbie later wrote:
No need to build a stage, it was all around us. Props would be simple and obvious. We would hurl ourselves across the canvas of society like streaks of splattered paint. Highly visual images would become news, and rumor-mongers would rush to spread the excited word. … For us, protest as theater came natural. We were already in costume. … Once we acknowledged the universe as theater and accepted the war of symbols, the rest was easy. All it took was a little elbow grease, a little hustle.
The first duty of a revolutionist is to get away with it. The second duty is to eat breakfast. I ain’t going.
Spoken to police immediately prior to his arrest at the Lincoln Hotel Restaurant in Chicago (August 1968), quoting himself in “Creating the Perfect Mess” (1 September 1968) in Revolution for the Hell of It (1968)
Abbie Hoffman was a founder with Jerry Rubin of the semi-fictional Youth International Party. Abbie described himself as “an orphan of America” and “a child of Woodstock Nation.” during testimony in the Chicago 8 trail. He was, perhaps, the most intriguing figure in Judge Hoffman’s courtroom. Hoffman believed that identity is defined by myth propagated through the media.
Hoffman was born in Worcester, Massachusetts on November 30, 1936. He graduated from Brandeis in 1959, then picked up a master’s degree at Berkeley. In the early 1960′s, he returned to Worcester to work as a psychologist in a state hospital. His career in political activism began with his work for the Student Nonviolent Coordinating Committee in the South. Hoffman was still relatively straight until 1966 when he turned onto drugs and began the loosely organized Yippie movement.
Hoffman went underwent plastic surgery and assumed the underground alias of “Barry Freed” in 1974 to avoid trial on charges of possessing cocaine. He stayed underground in upper New York state until 1980, when he surrendered to authorities. He was sentenced to a work-release program in 1981-82, then resumed his life of political activism. In 1987, Hoffman was arrested for the forty-second time while protesting CIA recruitment at the University of Massachusetts with Amy Carter and thirteen others.
At a 1988 reunion of the Chicago Seven, Hoffman described himself as “an American dissident. I don’t think my goals have changed since I was four and I fought schoolyard bullies.”
On April 12, 1989, Hoffman was found dead at his home in New Hope, Pennsylvania. The death was later ruled a suicide.
Cloud Atlas reminded me of another tale of the 1970′s (Perhaps an alternative history):
On the evening of November 13, 1974 Karen Silkwood, a 28‑year‑old laboratory assistant, left a union meeting near her work in an Oklahoma plutonium plant to make a 30‑mile drive to Oklahoma City. She was a skilled driver, travelling alone on an important mission ‑ to deliver to an official from her union’s national headquarters documented evidence of radiation leaks and other hazardous ‑ practices in her workplace: a plutonium recycling plant operated by the Kerr‑McGee Corporation. She had gathered the evidence secretly, but in an amateurish way which aroused the suspicion of her employers, and she was last seen minutes before she started on her journey, carrying a manila folder.
Karen never reached her destination. Unaccountably, her car veered off the lonely road and plunged into a deep culvert. She was killed instantly and the manila folder was never found. Police ruled her death accidental, but experts from her union who examined her battered car alleged that some of its damage was consistent with it having been rammed from behind by a heavier vehicle. A post‑mortem showed that Karen had low levels of alcohol and a tranquilising drug in her body, suggesting another possible cause of death.
Was she murdered or did she fall asleep at the wheel? And what happened to the documents which she was expected to hand over to the two men who were waiting for her in an Oklahoma City hotel ‑ the union official and a New York Times reporter? Did someone remove the folder from the car after the accident? Or did she make a last‑minute decision not to take it with her? And, if so, why hasn’t it shown up somewhere else?