text:
- Page |
- View source |
- History
Getting Started with the Mobile SDK for Android
The Mobile SDK is targeted at developers looking to create mobile applications that interact with Salesforce.com, Force.com, or Database.com. Currently, the SDK supports building two types of mobile applications—native and hybrid.
- Native applications are specific to a given mobile platform (e.g., iOS, Android, Blackberry) using the development tools and language that the respective platform supports (e.g., Xcode and Objective-C with iOS, Eclipse and Java with Android). The Mobile SDK provides libraries for Android and iOS developers looking to develop natively on these two platforms.
- Hybrid applications, on the other hand, primarily use standard web technologies—typically HTML5, JavaScript and CSS. This write-once-run-anywhere approach to mobile development creates cross-platform mobile applications that work on multiple devices and platforms. While developers can create sophisticated apps with HTML5 and JavaScript alone, some vital limitations remain at the time of this writing, specifically session management, access to native device functionality like the camera, calendar and address book, etc. The hybrid version of the Mobile SDK (based on the industry leading PhoneGap implementation) makes it possible to embed HTML5 apps inside a thin native container, producing a hybrid application.
This article covers the use of the Mobile SDK to develop native Android applications. It does not demonstrate how to create hybrid mobile apps. To understand how you can use the SDK to develop a native iOS application, please refer to this article.
The Mobile SDK only supports Android 2.2 and above. The Mobile SDK requires that you set up the target computer with the basic Android development environment. Specifically, the SDK requires:
- Eclipse
- Android SDK (r14 or above)
- Android Development Tools (ADT) plugin for Eclipse (r14 or above)
- Git (not required if you only want to use the SDK binaries)
This article also assumes that you have basic knowledge of developing native Android applications (e.g., concepts like Activity, Intent). You can refer to the Android Developer Guide for further details.
The Mobile SDK is an open source library—the entire codebase for the SDK is available on GitHub. You can download the Android half of the SDK from this GitHub repository. You can either clone the repository into your local development environment by runninggit clone https://github.com/forcedotcom/SalesforceMobileSDK-Android.gitfrom the command line, or if you're not familiar with Git and GitHub, you can simply download the SDK as a zip or tar file and extract the contents.
After downloading the SalesforceMobileSDK-Android project from Github, run the install script from the command line:
cd SalesforceMobileSDK-Android $./install.sh
Windows users can run cscript install.vbs from the command line instead.
- Note: The GitHub project for the Android SDK contains both the native and hybrid bits. Because this article only focuses on native Android development, you will only use the native and dist sub-directories in the project.
Once you have downloaded and installed the Android SDK on your local machine, you have two options for using the SDK in your own Android project/application:
- You can choose to import the entire code-base for the SDK into Eclipse and then link your Android project to it.
- Import the SDK project into Eclipse by going to File → Import → General → Existing Projects into Workspace.
- Point to the /SalesforceMobileSDK-Android/native/SalesforceSDK directory.
- Link the SDK to your own Android project.
- In Eclipse, select your Android project and then go to Project → Properties → Android, and click Add... in the Library section to add a reference to the SalesforceSDK library project that you imported earlier.
- The previous option is ideal if you wish to peruse the actual SDK code as you're developing your Android application. If you'd rather just use the SDK binaries, you can simply copy the latest SDK jar file (currently 'SalesforceSDK-1.0.1.jar') from the SalesforceMobileSDK-Android/dist directory into the 'libs' folder of your project.
Getting Started
There are a couple of different ways to start a new Android project that uses the Mobile SDK. You could choose to start with a brand new Android project, include the SDK in it (using either of the two methods that the previous section describes) and then add the necessary scaffolding to use the SDK.
A quicker and easier option is to import a simple template project that the Mobile SDK includes and then add your application specific implementation. With this approach, you don't have to worry about how to include the SDK in your project or putting together the scaffolding from scratch—the template project takes care of all that. You can simply import that project into Eclipse, make some minor updates, and then start adding your application logic.
To import the template project, go to File → Import → General → Existing Projects into Workspace, and then point to the /SalesforceMobileSDK-Android/native/TemplateApp directory. This should import the project into Eclipse. Next, make the following updates to the template project to customize it to your specific application requirements.
- Open the AndroidManifest.xml file by right-clicking on it and selecting Open With → Android Manifest Editor.
- At the top of the first tab, you'll see the Package field. This contains a unique identifier to use out on the Android Market to differentiate your app's code and resources. To make this identifier unique to your application, change the value to something unique (e.g com.mycompany.myappp), then save the file. In the following dialog asking if you want to change launch configurations, click Yes.
- Next, in order to fix all the new build errors that you now see in Eclipse, expand the src/ folder in the project. Right click the package name (currently com.salesforce.samples.templateapp) and select Refactor → Rename. You will be prompted to give a new name. Change this value to something unique like com.mycompany.myappp, and click OK.
- You will be presented with a warning that this package already exists in the gen/ folder. Click Continue. Your build errors should disappear.
- Finally, expand the res/values/ folder, and open rest.xml. Change com.salesforce.samples.templateapp.login to your unique package name (e.g. com.mycompany.myappp).
- The Mobile SDK uses OAuth 2.0 for authenticating with Salesforce.com. Therefore, you need to create a new Remote Access Application in Salesforce.com (Setup → Develop → Remote Access). Next. in the same rest.xml file, update the value of oauth_callback_url to the callback URL that you registered in the Salesforce.com Remote Access application (you can use something like 'sfdc://success'). Next, update the value of oauth_client_id to the Consumer Key that was assigned to your Remote Access application in Salesforce.com.
- Next, If you click over to the Application tab of the AndroidManifest.xml document, you should see the Label field set to @string/app_name. This is how your app will be labelled on the device. In order to update your application name, expand the res/values folder of the project. Right-click on strings.xml and select Open With → Android Resource Editor. Click on the app_name row of the left pane. In the right-hand pane, change the value from TemplateAppt to your unique application name, and save the file.
That's it! You are now ready to start adding your application logic. The template project assumes MainActivity.java to be the main Activity of the application (i.e., it is the first screen that users see once they login to Salesforce.com) and so you can start by adding your application specific code to that class.
Components of the Template project
Let's briefly look at some of the scaffolding that the template project includes and that you'll use with the SDK. If you choose to create a new Android project from scratch (instead of modifying the template project), you'll need to include these components in your project.
Each Android project that uses the Mobile SDK must provide an implementation of the SalesforceR.java interface (which is what SalesforceRImpl.java does). This is a way for your application to give the Mobile SDK references to some of the resources that the SDK requires at run-time (e.g., the layout to use for displaying the main Login Activity). In most cases, you don't have to modify the default SalesforceRImpl.java class that the template project includes. You should only ever have to modify the SalesforceRImpl.java class if you need to override some default behavior of the SDK (e.g., to customize the error message that displays when a Salesforce authentication fails).
Every Android project that uses the Mobile SDK also must provide an Application class that extends the abstract com.salesforce.androidsdk.app.ForceApp class — in the template project, you do this with the TemplateApp.java class. The most important method in TemplateApp.java, and one that you may have to modify, is the getMainActivityClass() method. You should return the Activity class that you'd like to display when the user first logs into your Android application (the template project defaults to MainActivity.java).
One of the most important files in an Android project is the Manifest file. The Manifest file specifies things such as the user permissions, Activities, and Services that your application uses. The Mobile SDK requires certain updates to the Manifest file (e.g., specific user permissions and Services). The Manifest file for the template project includes all these updates, so if you choose to simply import the template project and modify it as in Getting Started, you should not have to make any additional updates.
The Android Mobile SDK includes two principle components—an OAuth 2.0 implementation for authenticating and authorizing with Salesforce.com, and simple wrappers for the Force.com REST API that allow easy CRUD access to data in Salesforce.com.
The following code from the onResume method of the MainActivity.java class illustrates how to authenticate the user using the SDK.
@Override public void onResume() { super.onResume(); // Hide everything until we are logged in findViewById(R.id.root).setVisibility(View.INVISIBLE); // Login options String accountType = ForceApp.APP.getAccountType(); LoginOptions loginOptions = new LoginOptions( null, // login host is chosen by user through the server picker ForceApp.APP.getPasscodeHash(), getString(R.string.oauth_callback_url), getString(R.string.oauth_client_id), new String[] {"api"}); // Get a rest client new ClientManager(this, accountType, loginOptions).getRestClient(this, new RestClientCallback() { @Override public void authenticatedRestClient(RestClient client) { .... // Show everything findViewById(R.id.root).setVisibility(View.VISIBLE); //User is authenticated, insert Application logic here ..... } }); }
Instead of invoking an explicit login method or Activity, you invoke authentication by instantiating a new ClientManager object (line 18) and invoking the getRestClient method. The SDK automatically detects if the user is already logged in, and if not, it initiates the OAuth authentication flow by redirecting the user to the Salesfore.com login page. One of the parameters passed to the ClientManager is LoginOptions. This is the class where you specify authentication parameters like the login server (Production vs Sandbox), the OAuth callback URL and Consumer Key, etc. Because the SDK implements the entire OAuth flow internally, all that your application must do is register a RestClientCallback object to receive an asynchronous callback once the user has successfully authenticated with Salesforce.com.
This asynchronous nature of receiving a callback from the SDK is essential if your app requests authentication from the main UI thread, as in the example above. Considering that Android does not allow blocking operations like HTTP requests from the main UI thread to ensure application responsiveness, your app must call the asynchronous getRestClient method when using the SDK from the context of a UI Activity. If your app needs to access RestClient from a non-UI context (e.g., from a ContentProvider or BroadcastReceiver), your app can use the synchronous peekRestClient method instead.
Note that calls to the getRestClient or peekRestClient methods result in a login challenge only when the user hasn't already logged in once. The SDK keeps track of the user's login status internally and abstracts away these details from the application developer completely.
Internally, the Mobile SDK uses the Android AccountManager to store the access tokens associated with a given user's Salesforce.com login. Users can view and delete this account information by going to 'Settings → Accounts & sync' on their Android device.
Refresh Token Flow (aka Remember Me)
Though it may not be evident from the code snippet above, the Android Mobile SDK implements the OAuth 2.0 Refresh Token Flow internally. In other words, if the access token granted as part of the OAuth flow expires, the SDK automatically and seamlessly rehydrates the access token using the refresh token. Internally, the SDK encrypts and stores the access and refresh tokens related to the OAuth flow, thus maintaining maximum security. All of these implementation details are completely transparent to you, the app developer. And once a user logs into your application, they shouldn't ever have to re-authenticate with Salesforce.com when they open the application in the future.
Note that users can revoke refresh tokens from the Salesforce.com console (Setup → My Personal Information → Personal Information → Remote Access). In this case, the user would see a username/password prompt when they open the Android application.
Passcode Activity
Most applications can benefit from the SDK's Remember Me feature that the section above describes. However, letting users access your application without having to login every time has important security implications. The SDK supports an additional security layer that you can optionally add to your application to make it more secure. You can require that users enter a passcode every time that they access your application after a certain period of inactivity. You can do so by adding the following lines of code before instantiating the ClientManager object (i.e., insert this on Line 7 of the code snippet in Authentication).
ForceApp.APP.getPasscodeManager().lockIfNeeded(this, true); // Do nothing - when the app gets unlocked we will be back here if (ForceApp.APP.getPasscodeManager().isLocked()) { return; }
With those additional lines of code, your users will see the following screen to setup a passcode when they first launch your application. They will also be prompted to enter the same passcode when they launch your application after a period of inactivity.
You can control the inactivity time interval for your application by returning a non-zero value in the getLockTimeoutMinutes() method of the class that extends the ForceApp base class (TemplateApp.java in the template project).
Logging Out
You can invoke the following to logout the user from your application and delete all associated access and refresh tokens from the device.
Basic CRUD Operations
In addition to the OAuth 2.0 authentication, the Mobile SDK also provides simple REST API wrappers to query and update data in Salesforce.com. The following code snippets show how you can use the SDK to perform basic CRUD operations.
- Note: The SDK ships with a sample RestExplorer application (SalesforceMobileSDK-Android\native\RestExplorer) that demonstrates the use of the SDK in making various REST API calls (query, search, update, insert etc.). You can import this application into Eclipse and look at the source code (ExplorerActivity.java) for further details.
Here is a small code snippet of how you can query Account records using the SDK.
RestClient client; ... String soql = "select id, name from Account limit 10"; RestRequest request = RestRequest.getRequestForQuery(apiVersion, soql); sendRequest(request); ..... public void sendRequest(RestRequest request){ client.sendAsync(request, new AsyncRequestCallback() { @Override public void onSuccess(RestResponse response) { try { /*REST API call was successful. Add business logic. For e.g. to process the query results... if (response == null || response.asJSONObject() == null) return; JSONArray records = response.asJSONObject().getJSONArray("records"); if (records.length() == 0) return; for (int i = 0; i < records.length(); i++){ JSONObject account = (JSONObject)records.get(i); String acctName = account.getString("Name"); }*/ EventsObservable.get().notifyEvent(EventType.RenditionComplete); } catch (Exception e) { e.printStackTrace(); displayError(e.getMessage()); } } @Override public void onError(Exception exception) { displayError(exception.getMessage()); EventsObservable.get().notifyEvent(EventType.RenditionComplete); } }); }
There is a consistent pattern for making any REST API call with the SDK.
- First, obtain an authenticated RestClient object from the SDK (see Authentication for details).
- Next, construct a RestRequest object by invoking the getRequestForXXX static method that corresponds to the REST API call that you want to invoke (e.g., getRequestForQuery to run a SOQL query, getRequestForUpsert to upsert a record). All getRequestForXXX methods require an API version parameter and may require additional parameters depending on the type of operation (e.g., the SOQL string in the case of a query).
- Finally, invoke the sendAsync method to initiate an asynchronous REST API request. The method requires a AsyncRequestCallback parameter which the SDK asynchronously calls once the REST API call completes. Specifically, if the REST API call is successful, the SDK passess back the response as the RestResponse parameter of the onSuccess method. Conversely, if the REST API call fails, the SDK calls the onError method.
As noted earlier, Android does not allow synchronous HTTP callouts from the main UI thread. Therefore, the use of the sendAsync method is required when making REST API calls from a UI/Activity context. RestClient also has a sendSync method, but your app can call that method from outside the main UI thread (e.g., from a ContentProvider or BroadcastReceiver).
In each of the following code snippets, the sendRequest method from the previous query example encapsulates the logic to invoke the respective REST API call.
String objectType = "Account"; Map<String, Object> fields = new Map<String, Object>(); fields.put("Name","Test Account"); try { RestRequest request = RestRequest.getRequestForCreate(apiVersion, objectType, fields); sendRequest(request); } catch (Exception e) { .... }
String objectType = "Account"; String objectId = "001C000000oh4ga"; Map<String, Object> fields = new Map<String, Object>(); fields.put("Name","Test Account 2"); try { RestRequest request = RestRequest.getRequestForUpdate(apiVersion, objectType, objectId, fields); sendRequest(request); } catch (Exception e) { .... }
String objectType = "Account"; String externalIdField = "Custom_ExtId_Field__c"; String externalId = "123"; Map<String, Object> fields = new Map<String, Object>(); fields.put("Name","Test Account 2"); try { RestRequest request = RestRequest.getRequestForUpsert(apiVersion, objectType, externalIdField, externalId, fields); sendRequest(request); } catch (Exception e) { .... }
String objectType = "Account"; String objectId = "001C000000oh4ga"; try { RestRequest request = RestRequest.getRequestForDelete(apiVersion, objectType, objectId); sendRequest(request); } catch (Exception e) { .... }
Error Handling
As explained in query, if a REST API call fails, the SDK calls the onError method of the AsyncRequestCallback callback object. It is your responsibility to implement appropriate error handling in this method (e.g., by displaying a message to the user).
In the context of error handling, it is important to understand exactly what the SDK considers to be an error. The SDK treats a network level I/O exception (e.g., an HTTP timeout when trying to connect to the Salesforce.com REST API endpoint) as an error, resulting in a call to the onError method. With all other REST API exceptions (e.g., when the app passes an invalid SOQL query to the query call), the SDK calls the onSuccess method. Therefore, it is a good practice to check the RestResponse in the onSuccess method for any REST API exceptions. For example:
@Override public void onSuccess(RestResponse response) { try { if (!response.isSuccess()) { String errorCode = response.asJSONObject().getString("errorCode"); String errorMsg = response.asJSONObject().getString("message"); displayError(errorCode, errorMsg); return; } //No error, continue processing response ..... } catch (Exception e) { e.printStackTrace(); displayError(e.getMessage()); } }
Advanced Topics
This article explains the basics of how to develop native Android applications using the Mobile SDK. Nonetheless, the SDK is extremely customizable and it is possible to implement more advanced features, including:
- implementing a custom layout for the Salesforce.com login screen
- returning a notification when a user deletes his/her Salesforce.com account from the Account Manager
- and much more
AppExchange Mobile
Congratulations! You've built your mobile app and now you are ready to get it into the hands of customers. But how? You're only two steps away from getting your app to market. First, list your app on the Android Market. This is a great way to market your app and connect with millions of customers. Second, list on AppExchange Mobile. AppExchange Mobile is Salesforce.com's destination for mobile business apps and is part of the AppExchange—the leading business apps marketplace. As a Force.com mobile app developer, you have a unique opportunity to list on AppExchange Mobile, connecting you with a dedicated set of existing Salesforce customers who are waiting for great business apps like yours.
Learn more about listing on the AppExchange.
The Mobile SDK lets you develop native and hybrid iOS and Android applications that source data from Salesforce.com, Force.com, or Database.com. In this article, you learned how to use of the SDK to develop native Android applications. You can also check the Mobile SDK Workbook for additional articles and tutorials on using the Mobile SDK. The detailed Java Doc documentation for the Android Mobile SDK is also available for further reference.
Remember also that the Mobile SDK is an open source project and you can help us enhance and improve the SDK by contributing to the project. You can also use GitHub's issue tracking feature to file bug/enhancement requests. Better yet, you can fix the issue and submit a Pull Request!
About the Author
Sandeep Bhanot is a Senior Developer Evangelist at Salesforce.com. He likes long walks on the beach, a well made caipirinha and developing Android applications. You can follow his exploits on Twitter and the Developerforce blog.


text:
Featured Stories
[Review] Rozen Maiden Series 1 & 2 Collection
08 April 2011 12:00 PM | No CommentsMVM, the anime distributor that got hit hard by the bad economy, has recently risen from the grave to deliver all sorts of anime goodness to the living. Among these...
Read More -
Shadow of the Colossus, Amazing Anime Fan Poster
22 March 2011 12:40 PM | No CommentsHere is an amazing mockup for a Shadow of the Colossus anime by artist MetalHanzo, based from the classic PS2 game, which is soon to get a HD reboot alongside...
Read More -
[Anime Review] Durarara: Part One
13 January 2011 11:49 PM | 4 CommentsDurarara, this years smash hit anime by Brains Base, hits UK shores earlier than expected in the form of sub only DVDs, split into 3 parts. The first 2 disc...
Read More -
Happy Holidays!
25 December 2010 10:24 PM | 3 CommentsTis the season of giving, and rather than sitting on my backside all day eating chocolate and watching old episodes of Gundam Wing, I'm gonna share a little something with...
Read More -
A few words on the Tokyo Anime/Manga ban
15 December 2010 3:00 PM | 4 CommentsFor those who don't know, Tokyo's ruling governing body, the LDP, have recently written into a law which will ban any anime or manga that harms Japan's youth. This will come into...
Read More
Follow me on Twitter!
- Get your paws on TunnelBear Android https://t.co/RoYrENzaxq experience the internet like you were living in another country @thetunnelbear 03:57:54 PM April 18, 2013 from Twitter for Android ReplyRetweetFavorite
- I wrote a thing, 'an open letter to AKB48'. You should read it or something- http://t.co/huk5W9Ly 01:33:20 AM February 02, 2013 from Plume for Android ReplyRetweetFavorite
- I just felt a great disturbance in the force... http://t.co/4DiX2rDe 04:35:12 PM October 31, 2012 from Plume for Android ReplyRetweetFavorite
- RT @Kyoraki: Remember, for every used panty vending machine, Japan has a billion of these- http://t.co/GlwY2SXM (via @dannychoo) 10:10:45 AM June 18, 2012 from TweetDeck ReplyRetweetFavorite
- http://t.co/A4D4zDbt YESYESYES 12:04:35 AM May 25, 2012 from TweetDeck ReplyRetweetFavorite
- Actually, thinking of expanding blogu to include Japanese vidya gaem stuff, for reasons of a 'there's sod all to write about' nature. 11:29:00 AM April 16, 2012 from TweetDeck ReplyRetweetFavorite
- Wut. Just heard Picard voice clips from ST:TNG in the Cowboy Bebop OST. 'Chicken Bone', to be specific. 12:25:46 AM March 23, 2012 from TweetDeck ReplyRetweetFavorite
- RT @dannychoo: Worlds best Twitter avatar ever is owned by → @migelfutosi ← 世界一のTwitterアイコン 12:24:17 PM March 12, 2012 from TweetDeck ReplyRetweetFavorite
- Welp, might be looking into alternative hosting / domains if this keeps up. How's http://t.co/lxZVIJ41 sound? 01:58:41 PM March 01, 2012 from TweetDeck ReplyRetweetFavorite
Recent Comments
- ex-sell69 on Porn in Public is a Bad Idea Morons
- Kyoraki on Porn in Public is a Bad Idea Morons
- Gunther on Porn in Public is a Bad Idea Morons
- Kyoraki on [Anime Review] Durarara: Part One
- TsundereSausage on [Anime Review] Durarara: Part One
Culture Japan / Danny Choo
Tech Archive
Apple iBooks may be getting digital Manga
Posted on December 17, 2010 | No CommentsIt's a possibility, at least. The latest update for Apple's iBooks app provides some added functionality that may allow publishers the opportunity to bring their titles to the iBookstore. In...

subset: commoncrawl


text:
It is possible to run rsync over ssh as a non-root user with the built-in sshd. Several people have asked about this, but I haven't seen an answer, so I thought it would be useful to post what worked for me. Note that due to the way that synology has hacked their version of openssh, it is not possible to get a fully tty-enabled shell session, but it is possible to run rsync (for those who might be interested, if you have the GPL sources, take a look at openssh-4.2p1/session.c). If you want to do more than rsync, you'll have to go the ipkg route to install your own ssh, etc.
Disclaimer: I am using a DS207+ with the 0518, so this may not work for other models, or may not work for you at all. I take no responsibility for any data loss or other damage to your NAS.
These steps assume some basic UNIX knowledge.
0) If you have not already done so, add a user via the web interface, and, of course, install the "Enable ssh" patch.
1) Log in as root over ssh.
2) Create a directory somewhere on your NAS volume(s) to be used as a home directory for the desired user. Let's call the username "joe". Change the owner of this directory to be joe, and make sure joe has rwx permissions.
3) Edit /etc/passwd. Find the entry for joe and change the the home directory field (the string between the second-to-last and last colon characters on joe's entry) to match the directory you created in 2. Change the shell field (the string after the last colon) to be the path to a shell that exists on your NAS. On my NAS that's either /bin/sh or /bin/ash. Save the file. [ NOTE: One pitfall you might run into: I've found if you modify this user via the web interface, e.g. change its password, these edits will revert to the default values, so you might need to do this edit again sometime if you forget about this ]
4) Try executing the command "su - joe" (substituting your username for joe, of course). If you've done everything right so far, you should start a new shell without errors, fully logged in as joe. The result of "pwd" should be joe's home directory, and the result of 'id' should return joe's uid and gid. If not, try again. If you're going to create RSA/DSA keys as I recommend in the next step, it will be easier to get the ownership and permissions of the keys right if you're logged in as joe. You can create a .profile for joe with environment settings you like, but be sure to keep /usr/syno/bin in your path, which is where the rsync binary is located. Due to the aforementioned ssh hack, rync's --rsync-path flag will not work. Once you're done with editing joe's files, you can type "exit" to return to your root shell.
5) I recommend installing RSA/DSA keys at this point in joe's home directory - search for "ssh-keygen" on the web to learn more about this. I'm not using password auth myself, so I have not tested this thoroughly, but if you really want to use password authentication, you should be able to do so by creating an entry in /etc/rsyncd.secrets for joe consisting of joe:password. The password can be in cleartext. The entry for root contains two passwords separated by a pipe character. The first is just a cleartext password (really - try it - I really hope that it is different for each system!), and the second is your admin password in obfuscated form (not really encrypted). The cleartext password should work on its own, and the obfuscation method really doesn't provide any greater security.
6) That's it - try rsyncing something to your NAS as joe. If you have trouble, it might help to pass the -v flag to ssh so that you can get an idea where the process is failing. You might also want to use rsync's --dry-run flag until you have all the kinks worked out. Good luck!


text:
Third dog approved after city considers appeal
She doesn't have a third dog yet, but Tosha Moen will soon, and with the city's blessing.
Moen was at council on Feb. 19 to ask for permission to purchase a third dog, one more than allowed under city bylaws.
It's the second time the Elm Avenue resident has comeforward with the request.
Last year, council denied her request for a three-dog variance but, on appeal, agreed to put Moen's request out to the public.
Moen said she wants a third dog because her oldest animal's health is starting to fail and she feels unsafe hiking and skiing in the backcountry.
Council passed the variance without discussion.


text:
Juan Manuel de Rosas
This article has multiple issues. Please help improve it or discuss these issues on the talk page.
Juan Manuel de Rosas | |
Juan Manuel de Rosas around age 47, c.1840. Oil painting by Cayetano Descalzi | |
17th Governor of Buenos Aires Province | |
In office 7 March 1835 – 3 February 1852 |
Preceded by | Manuel Vicente Maza |
Succeeded by | Vicente López y Planes |
13th Governor of Buenos Aires Province | |
In office 8 December 1829 – 17 December 1832 |
Preceded by | Juan José Viamonte |
Succeeded by | Juan Ramón Balcarce |
Personal details | |
Born | Juan Manuel José Domingo Ortiz de Rosas 30 March 1793 Buenos Aires, Viceroyalty of the Río de la Plata |
Died | March 14, 1877 Southampton, United Kingdom |
(aged 83)
Nationality | Argentine |
Political party | Federal Party |
Spouse(s) | Encarnación Ezcurra |
Religion | Catholicism |
Signature | |
Military service | |
Nickname(s) | El Restaurador (The Restorer) |
Allegiance | Viceroyalty of the Río de la Plata, Argentine Confederation |
Rank | Brigadier |
Unit | Regiment of Migueletes |
Commands | Militias of Buenos Aires |
Battles/wars | British invasions of the Rio de la Plata Battle of Márquez Bridge |
Juan Manuel de Rosas (March 30, 1793 – March 14, 1877), was an Argentine caudillo who served as governor of the Buenos Aires province and Supreme Chief of the Argentine Confederation. He was born to a wealthy family in the Viceroyalty of the Río de la Plata, but became a successful cattle ranching businessman by his own determination. A controversial figure, Rosas' support for both democracy and authoritarianism has baffled critics and historians, who to this day hold opposing views of the caudillo.[citation needed]
The political career of Juan Manuel de Rosas began in 1820, amidst the Argentine Civil Wars. In Buenos Aires, Rosas became leader of an effective armed resistance which propelled him to the governorship in 1829. Later, as leader of the Federal Pact, Rosas fought the Unitarian League, defeating it in 1831. His remaining term as governor oversaw economic and political stability through the formation of the Argentine Confederation, a federation of states modeled after the United States of America. After his term ended in 1832, Rosas refused to run again despite overwhelming popular support.[citation needed]
Returning to the Pampas, Rosas' focus shifted to securing the frontier from Amerindian malones (raiding bands) who attacked Argentine settlements. After securing alliances with friendly indigenous groups, he waged the 1832 First Conquest of the Desert against the Ranquel and Mapuche. The triumphant campaign greatly increased Buenos Aires' territory and pacified the Amerindians.
In 1835, continuing political instability and the controversial murder of Facundo Quiroga paved the way for Rosas' return to the governorship of Buenos Aires. He was elected by popular vote and given the sum of public power.[citation needed] Rosas' second term was marked by a strict social order lauded by his supporters and criticized for its brutality by his opponents. Although slavery was not abolished during his rule, Rosas sponsored liberal policies allowing them greater liberties.[original research?][citation needed]
Rosas' second term also dealt with a conflict against the Peru–Bolivian Confederation, as well as maritime blockades imposed by France and the United Kingdom, continuing problems with the Unitarians, and a belligerent Uruguay led by the Colorado Party. Ultimately, in the later stages of the Guerra Grande, Justo José de Urquiza (governor of Entre Ríos) united Rosas' political opponents and Brazil to decisively defeat Rosas in the 1852 Battle of Caseros. Deposed from power, Juan Manuel de Rosas spent the rest of his life exiled in Southampton, United Kingdom.
Early life
Juan Manuel José Domingo Ortiz de Rosas was born on 30 March 1793, in his family's town house in Buenos Aires, capital of the Viceroyalty of the Río de la Plata.[1] He was the first child of León Ortiz de Rosas and Augustina López de Osornio.[2] León Ortiz, the son of an immigrant from the Spanish Province of Burgos, had an undistinguished military career, but managed to marry into a wealthy Creole family. Juan Manuel de Rosas' greatest influence was his mother Augustina, a strong-willed and domineering woman who inherited her character traits from her father, "a tough warrior of the Indian frontier who had died weapons in hand defending his southern estate in 1783."[2]
Rosas was schooled at home, as was common then. Later, at age 8, he was enrolled in the finest private school in Buenos Aires. His education was unremarkable, but appropriate to a son of wealthy landowners. According to historian John Lynch, it "was supplemented by his own efforts in the years that followed. Rosas was not entirely unread, though the time, the place, and his own bias limited the choice of authors. He appears to have had a sympathetic, if superficial, acquaintance with minor political thinkers of French absolutism."[1]
In 1806, during the Napoleonic Wars, Great Britain invaded the Platine basin and captured Buenos Aires. Santiago de Liniers, a French officer under Spanish military service, organized a counter-attack in Montevideo. Along with several friends, Juan Manuel de Rosas, aged 13, joined the forces of Liniers upon landing at Olivos. After the battle, Liniers wrote to the parents of Rosas to congratulate them for their son's bravery in the liberation of Buenos Aires.[3]
Suspecting another British attack, Buenos Aires reorganized its defenses. Rosas, preferring the cavalry, joined the regiment of Migueletes with the rank of ensign. Prior to the conflict, he disarmed and captured an insubordinate drunk corporal, but later intervened before the military authorities to save him from a death sentence.[4]
During the second British invasion, Rosas fought in the Battle of Miserere, which gained him further praises from Liniers who even proposed sending Rosas to pursue a military career in Spain. Nevertheless, having lost her father and a brother in military conflicts against Amerindians, Agustina disagreed with Liniers. At his mother's request, Rosas declined Liniers' offer. Soon thereafter, following Liniers' promotion to viceroy and the appointment of Baltasar Hidalgo de Cisneros as commander of the Migueletes, Rosas left the regiment.[5]
With the British invasions rebuffed, Rosas departed from Buenos Aires with his parents to work in his family estancia (farm). There he learned the framework of Hispanic American society in the Platine region, which further shaped his character. In the Viceroyalty of the Río de la Plata, owners of large landholdings (such as Rosas' family) provided food, equipment, and protection for themselves and for families living in areas under their control. Their private defense forces consisted primarily of laborers who were drafted as soldiers. These peons, as the workers were called, were mostly gauchos.[A] Albeit harsh and authoritarian, Rosas befriended the gauchos under his service. He dressed liked them, joked with them, took part in their horseplay, shared their habits, and paid them well.[6] Rosas was, according to Lynch, "a man of conservative instincts, a creature of the colonial society in which he had been formed, a defender of authority and hierarchy."[7]
In 1811, Rosas became administrator of his parents' domains, "taking no salary, only the opportunity to learn." Two years later, in 1813, he married Encarnación Ezcurra y Arguibel, a wealthy woman from "an upper-class family of Buenos Aires." Soon thereafter, Rosas left his family's home to work on his own, "first in the meat-salting industry, then in the accumulation of land."[8] As the years passed he became an estanciero (farmer) himself, purchasing lands while establishing a successful partnership with his second cousins, the Anchorenas.[9] By 1830, he owned 300,000 head of cattle and 70 squares leagues (420,000 acres) of land, occupying tenth place among the largest landowners in the province of Buenos Aires (where the city of the same name was located).[10] "He obtained results not by innovation but by work, organization, and meticulousness... If his technology was deficient, however, his organization was impeccable, and in mobilizing labor, he had no equal."[11]
Rise to power
The Anarchy of the year XX
Buenos Aires was attacked in 1820 by provincial caudillos Estanislao López and Francisco Ramírez from the Entre Ríos and Santa Fe provinces, who rejected the centralism of the Argentine Constitution of 1819 and the inaction of Buenos Aires during the Luso-Brazilian invasion of the Banda Oriental. The constitution was repealed, the Congress of Tucumán was closed and the authority of the Supreme Directors ended. This period was known as "The Anarchy of the year XX".
Ramírez and López signed the Treaty of Pilar with Buenos Aires and returned to their provinces, but López renewed the attack. Juan Manuel de Rosas organized rural militias of 500 horsemen in support of the governor Manuel Dorrego, with an army of 2,000 men. They defeated López, but disagreed on the following action: Dorrego wanted to pursuit López into Santa Fe, and Rosas to secure the borders. Dorrego was defeated in the next battle. Rosas supported the appointment of Martín Rodríguez as governor of Buenos Aires, and mediated in the peace negotiations. López returned to Santa Fe in exchange of 25,000 cattle, that Rosas provided from his own ranches. This led to the Treaty of Benegas between Santa Fe and Buenos Aires.[12]
Decembrist revolution
A new constituent assembly wrote a new constitution and appointed Bernardino Rivadavia as president of Argentina, but the constitution was rejected by the provinces and Rivadavia resigned. Vicente López y Planes was appointed interim president during the transition back to a confederated state; Rosas was appointed general commander of the militias of Buenos Aires during his brief rule. Manuel Dorrego was appointed governor again.[13]
Juan Lavalle, leading the troops that returned from the Cisplatine War, made a military coup against Dorrego. As it took place in December 1, 1828, it was known as the "Decembrist revolution". Dorrego and most federals left the city, joining the militias of Rosas. Rosas and Dorrego disagreed on the battle plan: Rosas wanted to move to Santa Fe, be reinforced by López and wait for the summoning of the people of the countryside; and Dorrego wanted to give battle immediately. They divided their forces, Dorrego was first defeated and then captured and executed. The execution generated a huge controversy in Buenos Aires, and Rosas and López defeaed Lavalle at the battle of Márquez Bridge, so he tried to negotiate peace.[14]
Lavalle visited Rosas' headquarters and negotiated the Cañuelas Pact with him. Juan José Viamonte was appointed interim governor with the support of both factions, and the legislature (closed during the revolution) was restored. This legislature appointed Rosas as the new governor, as well as giving him the rank of brigadier. But although the unitarians had been defeated in the Buenos Aires province, the Unitarian League was still a military threat from other provinces.[15]
First government
Governor of Buenos Aires
This section's factual accuracy is disputed. (February 2013) |
As a governor, Rosas ruled with strict authority. He considered that, given the social segregation of the Argentine Confederation at the time, it was the only way to keep it together and prevent anarchy.
" | The King can be compared with a father, and reciprocally a father can be compared with the King, and then set the duties of the monarch by those of the parental authorithy. Love, govern, reward and punish is what a King and a father must do. In the end, there's nothing less legitimate than anarchy, which removes property and security from the people, as force becomes then the only right. | " |
Rosas faced opposition from the unitarian provinces in the north. José María Paz, after defeating Facundo Quiroga at the battle of Tablada, took control of Cordoba province and started a reign of terror to destroy all federals in the zone, similar to the one started by Lavalle in Buenos Aires. The newspaper "La Gaceta" numbered the victims of the unitarian terror as 2,500 victims. Paz expanded his influence by creating the Unitarian League, while Rosas created the Federal Pact instead. The plans of Paz would fail when his horse was taken down and he was captured. Federalist José Vicente Reinafé, close to López, replaced him as governor of Córdoba. Córdoba, Santiago del Estero, La Rioja and the provinces of Cuyo joined the Federal Pact in 1831, Catamarca, Tucumán and Salta did so the following year. As for Paz himself, he was held captive by Estanislao López, who refused to execute him. He requested Rosas to check that it was the will of all the provinces to execute Paz, but Rosas did not accept the request. He considered that the fate of Paz should be decided solely by López, who held him prisoner.
One of the keys to the economic supremacy of Buenos Aires was its monopoly over the port and customs of Buenos Aires, the only one linking the Confederation with Europe. Rosas refused to lift control over it, considering that Buenos Aires faced alone the international debt that was generated by the Argentine War of Independence and the Cisplatine War.
The defeat of Paz and the expansion of the Federal Pact further ushered in a period of economic and political stability. As a result, Federalists were divided between two political trends: those who wanted the calling of a Constituent Assembly to write a Constitution, and those who supported Rosas in delaying it. Rosas thought that the best way to organize the Argentine Confederation was as a federation of federated states, similar to the successful States of the United States; each one should write its own local constitution and organize itself, and a national constitution should be written at the end, without being rushed.
He had a successful and popular first term, but refused to run for a second even though public support was strong.[16]
Return to the Pampas
First Conquest of the Desert
After his resignation as governor, Rosas left Buenos Aires and started the first Conquest of the Desert, to expand and secure the farming territories and prevent indigenous attacks. Rosas was aware that malones were not done because of evil desires but because of the lacking lifestyle condition of the indigenous peoples.[citation needed] As a result, he had preference for a policy of doing pacts or giving gifts or bribes to the caciques before employing military force. The hostile ranquel cacique Yanquetruz was replaced by Payné, who became a Rosas ally. Juan Manuel, in turn, adopted his son and raised him at his estancia. The pehuenche Cafulcurá was made colonel and allowed to distribute large numbers of gifts among his people; in turn, he made the compromise of not making any more malones. On the other hand, caciques like the pehuenche Chocorí who defied Rosas were defeated.
Charles Darwin met Rosas in 1833, and wrote about it in The Voyage of the Beagle. He was at Carmen de Patagones and knew that Rosas was located nearby, close to the Colorado River. He had heard about him from before, so he moved to meet him. He described him as a man of extraordinary character, a perfect horseman who conformed to the dress and habits of the Gauchos and "has a most predominant influence in the country, which it seems he will use to its prosperity and advancement".[17] Although in a footnote added in the second edition published in 1845, Darwin notes that "This prediction has turned out to be entirely and miserably wrong." Darwin included a story of how Rosas had himself put in the stocks for inadvertently breaking his own rule of not wearing knives on Sundays. This appealed to his men's sense of egalitarianism and justice. Darwin also described an anecdote about a pair of buffoons.
By the end of the first Conquest of the Desert, Buenos Aires increased its lands by thousands of square kilometers, which were distributed among new and older hacendados. The natives did not make any more malones, accepted to provide military aid to Rosas in case of need, and stayed in peaceful terms for all the remainder of Rosas' government.
Even being absent, the political influence of Rosas in Buenos Aires was still strong, and his wife Encarnación Ezcurra was in charge of keeping good relations with the peoples of the city. On October 11, 1833, the city was filled with announcements of a trial against Rosas. A large number of gauchos and poor people made the Revolution of the Restorers, a demonstration at the gates of the legislature, praising Rosas and demanding the resignation of governor Juan Ramón Balcarce. The troops organized to fight the demonstration mutinied and joined it. The legislature finally gave up the trial, and a month later ousted Balcarce and replaced him with Juan José Viamonte. The Revolution also led to the creation of the Sociedad Popular Restauradora, also known as "Mazorca".
Second government
This section's factual accuracy is disputed. (February 2013) |
The weak governments of Balcarce and Viamonte led the legislature to request Rosas to take the government once more. For doing so he requested the sum of public power, which the legislature denied four times. Rosas even resigned as commander of militias to influence the legislature. The context changed with the social commotion generated by the death of Facundo Quiroga, responsibility for which is disputed (different authors attribute it to Estanislao López, the Reinafé brothers, or Rosas himself). The legislature accepted then to give him the sum of public power. Even so, Rosas requested confirmation on whenever the people agreed with it, so the legislature organized a referendum about it. Every free man within the age of majority living in the city was allowed to vote for "Yes" or "No": 9.316 votes supported the release of the sum of public power on Rosas, and only 4 rejected it. There are divided opinions on the topic: Domingo Faustino Sarmiento compared Rosas with historical dictators, while José de San Martín considered that the situation in the country was so chaotic that a strong authority was needed to create order.
Although slavery was not abolished during Rosas' rule, Afro Argentines had a positive image of him. He allowed them to gather in groups related to their African origin, and financed their activities. Troop formations included many of them, because joining the army was one of the ways to become a free negro, and in many cases slave owners were forced to release them to strengthen the armies. There was an army made specifically of free negros, the "Fourth Battalion of Active Militia". The liberal policy towards slaves generated controversy with neighbouring Brazil, because fugitive Brazilian slaves saw Argentina as a safe haven: they were recognized as free men at the moment they crossed the Argentine borders, and by joining the armies they were protected from persecution of their former masters.
The people who opposed Rosas formed a group called Asociacion de Mayo or May Brotherhood. It was a literary group that became politically active and aimed at exposing Rosas' actions. Some of the literature against him includes The Slaughter House, Socialist Dogma, Amalia and Facundo. Meetings which had high attendance at first soon had few members attending out of fear of prosecution. Rosas' opponents during his rule were dissidents, such as José María Paz, Salvador M. del Carril, Juan Bautista Alberdi, Esteban Echeverria, Bartolomé Mitre and Domingo Faustino Sarmiento.[16] Rosas political opponents were exiled to other countries, such as Uruguay and Chile.
First French blockade
The Peru–Bolivian Confederation declared the War of the Confederation against Argentina and Chile. Its protector Andrés de Santa Cruz supported European interests in South America, as well as the Unitarians, whereas Rosas and the Chilean Diego Portales did not. As a result, France gave full support to Santa Cruz in this war. Britain also supported Santa Cruz, but only by diplomatic means. Trusting in the military power at his disposal, Santa Cruz declared war against both countries at the same time. Initially, the Peruvian-Bolivian forces had the advantage, and captured and executed Portales. The war did not develop favorably for Argentina in the north, and the French Roger moved to Buenos Aires to request the surrender of Argentina. He demanded that two French citizens be released from prison, that two more be exempted from military service, and that France receive the same commercial privileges as granted by Bernardino Rivadavia to Britain. Although the demands themselves were not onerous, Rosas considered that they would set a precedent for further French interference in the internal affairs of Argentina, and refused to comply. As a result, France started a naval blockade against Buenos Aires.
Rosas took advantage of British interests in the zone: minister Manuel Moreno pointed out to the British Foreign Office that commerce between Argentina and Britain was being harmed by the French blockade, and that it would be a mistake for Britain to support it. The French judged that the people would seize the opportunity to stand against Rosas, but underestimated his popularity. With the nation being threatened by two European powers as well as two neighbouring countries allied with them, internal patriotic loyalty increased to the point that even some notable Unitarians who had fled to Montevideo returned to the country to offer their military help, such as Soler, Lamadrid and Espinosa. Things became more complicated for France as time passed: Andrés Santa Cruz was weakening, the strategy employed by Moreno was bearing fruit, and the French themselves started to have doubts about maintaining a conflict that they had expected to be quite short. Also, Britain would not allow the French to deploy troops, as they did not want a European competitor gaining territorial strength in the zone. Domingo Cullen, governor of Santa Fe replacing the ill López, considered that Rosas had nationalized a conflict that involved just Buenos Aires, and proposed to the French that they should encourage Santa Fe, Córdoba, Entre Ríos and Corrientes to secede, creating a new country that would obey them, if this new country would be spared the naval blockade. Also, Manuel Oribe, president of Uruguay and allied with Rosas, was ousted by Fructuoso Rivera with French aid. France wanted Rivera and Cullen to join forces and take Buenos Aires, while their ships kept the blockade. This alliance did not take place, as Juan Pablo López, brother of Estanislao López, defeated Cullen and drove him away from the province. Also, Andrés Santa Cruz was defeated by Chile in the Battle of Yungay, and the Peru–Bolivian Confederation ceased to exist. Now Rosas was free to focus all his attention on the French blockade.
His wife Encarnación died in Buenos Aires on October 20, 1838.
Rivera was urged by France to take military action against Rosas, but he was reluctant to do so, considering that the French underestimated his strength, even more after Santa Cruz's defeat. As a result, they elected Juan Lavalle to lead the attack, who asked not to share command with Rivera. As a result, each led his own army. His imminent attack was backed up by conspiracies in Buenos Aires, which were discovered and aborted by the Mazorca. Manuel Vicente Maza and his son were among the conspirators, and were executed as a result. Pedro Castelli also organized an ill-fated demonstration against Rosas, and was executed as well. Rosas did not wait to be attacked, and ordered Pascual Echagüe to cross the Parana river and move the fight to Uruguay. The Uruguayan armies split: Rivera returned to defend Montevideo, and Lavalle moved to Entre Ríos alone. He expected that local populations would join him against Rosas and increase his forces, but he found severe resistance, so he moved to Corrientes. Ferré defeated López, and Rivera defeated Echagüe, leaving Lavalle a clear path towards Buenos Aires. However, by that point France had lost faith in the effectiveness of the blockade, as what had been thought would be an easy and short conflict was turning into a long, possibly unwinnable, war. France started to negotiate for peace with the Confederation, and removed financial support from Lavalle. He found no help from local towns either, and there was strong desertion in his ranks. Buenos Aires was ready to resist Lavalle's attack, but his lack of support forced him to withdraw.
Civil war continues
The unitarians and colorados (federalists) kept up their hostilities against Rosas, even after the defeat of France. The new plan was that Ferré and Rivera, in Corrientes and Uruguay, would create a new army, while Lavalle and Lamadrid moved to the north. Lavalle would move to La Rioja and distract the Federal armies, while Lamadrid organized another army at Tucumán. By this time José María Paz had escaped from his imprisonment. Rosas spared his life because he had sworn never to attack the Confederation again, but he broke his oath. His presence benefited the anti-Rosas forces, but also generated internal strife: Ferré gave him the command of the armies of Corrientes, which Rivera did not like. Rivera even accused Paz of being a spy of Rosas. Nevertheless, the combined forces of Paz, Rivera and unitarian ships at the river had the federal forces of Echague at Santa Fe surrounded. To counter the unitarian naval supremacy Guillermo Brown organized a naval squadron; it defeated captain Coe at Santa Lucía.
Oribe defeated the forces of Lavalle at La Rioja, but Lavalle himself managed to escape to Tucuman. Lamadrid attacked San Juan, but was completely defeated. At Tucuman Oribed defeated Lavalle, who barely escaped with a group of 200 men to the north; he was killed shortly after in a confusing episode. This ended the anti-Rosas threat in the Argentine northwest.
Rivera threatened to end their alliance if Ferré insisted in favoring Paz. Rivera wanted to annex the Riograndense Republic (part of Rio Grande do Sul, that had declared independence from Brazil and was fighting the War of the Farrapos) and the Argentine mesopotamia into a projected Federation of Uruguay, but Paz was against that. Paz defeated Echague, and Rivera defeated the new federal governor of Entre Ríos, Justo José de Urquiza. Federalist Juan Pablo López from Santa Fe changed sides to the unitarian ranks.
Rosas was again in a weak position, and would not have been able to resist an attack. But Paz, Ferré, Rivera and López had conflicting battle plans, and their armies did not move, which gave Oribe time to return from the north. The forces of Santa Fe refused to fight for the unitarians, and massive defection reduced López's armies from 2.500 men to 500. He was easily defeated at Coronda and Paso Aguirre. Ferré was finally interested in Rivera's federation, and put Paz aside. Rivera and Oribe, both considering themselves rightful presidents of Uruguay, would battle. The battle of Arroyo Grande was a decisive victory for Oribe, and Rivera barely escaped alive. The unitarian threat to Rosas had been again removed.
Anglo-French blockade
After the victory of Oribe at Arroyo Grande, Britain and France intervened in the conflict. Their ambassadors, Mandeville and De Lurde, demanded that Rosas retreat from Uruguayan territory. Rosas did not reply, and ordered Brown to support Oribe by blockading Montevideo. British commodore John Brett Purvis attacked the Argentine navy, taking over the vessels. Mandeville and De Lurde were replaced by Ousley and Deffaudis. The public purposes of the Anglo-French intervention were to protect the Uruguayan independence against Oribe, defend the recently-proclaimed independence of Paraguay, and end the civil wars in the La Plata River region. But there were also secret purposes: to turn Montevideo into a "commercial factory", to force the free navigation of the rivers, to turn the Argentine Mesopotamia into a new country, to set the borders of Uruguay, Paraguay and the Mesopotamia (without Brazilian intervention), and to help the anti-rosists to depose the governor of Buenos Aires and install one loyal to the European powers instead.[citation needed]
The European powers needed a convincing argument to justify a declaration of war. To this end, Florencio Varela requested that former Federalist José Rivera Indarte write a list of crimes that Rosas could be blamed for. The French firm Lafone & Co paid him with a penny for each death listed. The list, named Blood tables, included deaths caused by military actions of the unitarians (including Lavalle's invasion of Buenos Aires), soldiers shot during wartime because of mutiny, treason or espionage, victims of common crimes and even people who were still alive. He also listed Nomen nescio (NN) deaths (unidentified people); some entries were listed more than once. He also blamed Rosas for the death of Facundo Quiroga. With all this, Indarte listed 480 deaths, and was paid with two pounds sterling (about £140 in 2011 based on the retail price index, or £1500 based on average earnings[18]). He tried to add to the list 22,560 deaths, the number caused by military conflicts in Argentina from 1829 to that date, but the French refused to pay for them. Indarte wrote in his libel that "it is a holy action to kill Rosas". Lafone & Co, who paid for the Blood tables, had control of Uruguayan customs, and would have greatly benefited from a new blockade of Buenos Aires.[citation needed] In March 1841, Indarte was the mastermind behind a failed bid against Rosas life, which consisted in sending him a firing device concealed in a diplomatic box, known as La Máquina Infernal ("The Infernal Machine").[19]
Giuseppe Garibaldi, commanding an Italian group, started hostilities by occupying Colonia del Sacramento and Isla Martín García, and led the controversial sack of Gualeguaychú. With the Uruguay river secured, the Anglo-French navy intended to control the Paraná river as well. Worried by the gravity of the danger, Rosas instructed Lucio Mancilla to fortify a section of the Parana to prevent the foreign navy from going any further. A similar study had been made years earlier by Hipólito Vieytes during the Argentine War of Independence, finding that a good strategic point was in Obligado.
An Anglo-French a convoy of three steamboats, many armed sailboats, and 90 merchant ships sailed up the Parana. Mansilla fortified Obligado with artillery, and closed the river with chains. The battle of Vuelta de Obligado took many hours, and the navy finally forced their way through. However, 38 merchant ships returned to Montevideo, and word of the unequal fight generated support for Rosas across most of South America. Mansilla continued the attack at San Lorenzo and Quebracho. The expedition was a commercial failure, and the second battle at Quebracho resulted in the sinking of several merchant vessels.
Although the Anglo-French force defeated Argentine forces, the cost of victory proved excessive in light of the ferocious resistance from the Argentines. As a result, the British sought to exit from the confrontation, followed later by their French allies. After long negotiations, Britain, and then France, agreed to lift the blockade. Both countries made a 21-gun salute to the flag of Argentina. Both treaties are viewed as a considerable triumph for General Rosas as it was the first time the emerging South American nations were able to impose their will on two European Empires.
Decline and fall
With the victory over Britain and France and the decline of the resistance in Montevideo, the civil war began to near its end, and several people who had fled from the country began to return to it. Rosas' tenure as governor was to end in 1850, but the legislature of Buenos Aires reelected him once more, rejecting his resignation. Several other provinces manifested their desire to keep Rosas in power: Córdoba, Salta, Mendoza, San Luis, Santa Fe, Catamarca. However, Justo José de Urquiza, governor of Entre Ríos, had growing conflicts with Rosas, and sought to depose him. For this purpose, he began to seek allies to reinforce him. His only support within the country was from Benjamín Virasoro, governor of Corrientes. Montevideo welcomed Urquiza's support, but Paraguay refused to join forces with him. On May 1, 1851, Urquiza announced that he accepted Rosas' resignation, retrieving for Entre Ríos the power to manage international relations delegated on Buenos Aires. Without ships, Urquiza sought the help of the Empire of Brazil as well. However, he thought that the Brazilian help would be of little use, and only agreed to accept them by the intervention of Herrera.[20]
Urquiza began his military campaign in Uruguay, attacking the forces of Manuel Oribe. With the new military conflict, Rosas declined his resignation request. Without further support from Buenos Aires, Oribe was finally defeated, and his forces incorporated to those of Urquiza.[21]
Rosas took the personal command of the forces of Buenos Aires, being critiziced by his generals Lucio Mansilla and Ángel Pacheco for his passivity. He did not attack Entre Ríos during Urquiza's campaign in Uruguay, when his forces would have had the advantage, and spent his time with trivial concerns. Entre Ríos, Corrientes, Brazil and Uruguay agreed the actions against Rosas in the secured Montevideo, where Entre Ríos and Corrientes would lead the operation and Uruguay and Brazil would provide only auxiliar armies. Urquiza defeated Rosas in the Battle of Caseros, on February 3, 1852.[22]
Life in exile
Rosas spent the rest of his life in exile, in the United Kingdom, as a farmer in Southampton. He was resident at "Rockstone Lodge" No.8 Carlton Crescent (now known as "Ambassador House") from 1852 until 1865 when he moved to Burgess Street Farm.[23]
Rosas inherited the 'combat saber' of General José de San Martin, maximum hero of Argentina, who praised Rosas for successfully defending Argentina against the European powers.[24][25]
Criticism and historical perspective
This section's factual accuracy is disputed. (February 2013) |
The figure of Juan Manuel de Rosas and his government generated strong conflicting viewpoints, both in his own time and afterwards.
In the context of the Argentine Civil War, Rosas was the main leader of the Federalist party, and as such the most part of the controversies around him were motivated by the preexistent antagonism of Federalism with the Unitarian Party. During the government of Rosas most unitarians fled to neighbour countries, mostly to Chile, Uruguay and Brazil; among them we can find Domingo Faustino Sarmiento, who wrote Facundo while living in Chile. Facundo is a critic biography of Facundo Quiroga, another federalist caudillo, but Sarmiento used it to pass many indirect or direct critics to Rosas himself. Some members of the 1837 generation, such as Esteban Echeverría or Juan Bautista Alberdi, tried to generate an alternative to the unitarians-federalists antagonism, but had to flee to other countries as well.
When Rosas was deposed in 1852 and the Unitarians took the government, they began a campaign to erase or denigrate the memory of Rosas and his legacy.[26] The legislature charged him with High treason in 1857; the deputee Nicanor Arbarellos advocated for the political manipulation of history to make it reflect their own hatred for Rosas.[27][B] President Bartolomé Mitre, enemy of Rosas, began this work by writing historical biographies highly critical of the caudillos,[28] and creating a pantheon of national heroes to emulate. Establishing as well the newspaper La Nación and the National Academy of History of Argentina, his view of history became mainstream.[29]
Historians began to weaken their ties with political power in the 1880 decade and wrote neutral works, avoiding the pro-Unitarian bias of the previous works.[30]Adolfo Saldías wrote the first full biography of Rosas from a dispassionated point of view; Mitre criticized it from a political perspective but praised it as a historical work.[30]Ernesto Quesada made a new work with a positive tone about Rosas, which employed the ample archives kept by the family of Rosas. They are considered the first revisionist historians of Argentina.[31] Thus, the hegemony of the mitrist view of history began to decline.[30]
Historians became more independent in the 1910 decade, and established the "New School". Authors like Ravignani, Levene, Molinari and Carbia, whose generation came from the Great European immigration wave to Argentina rather from families in the country, had no involvement with the old disputes and sought to base their works on the usage of primary sources and unified standards rather than in the politics or social prestige of the authors.[32]
Revisionism grew in the 1920s and 1930s decade, which is known as the "Golden Era in Argentine historiography".[33] Authors like Manuel Gálvez and Leopoldo Lugones were influenced by their political ideas, which began in the left-wing and slowly moved to the right-wing.[34] Liberal historiography, on the other hand, declined the former unanimous demonisation of federalism, caudillism and Rosas.[34] President Juan Domingo Perón tried to avoid cultural controversies, and denied recognition to revisionism during his rule.[35] Antiperonists made several comparisons between Perón and Rosas, and called his presidency the "Second Tyranny";[36] but the comparison backfired: the huge popularity of Perón and the huge social rejection for the antiperonist military coups led to a slow change in the social perception of Rosas and the popular acceptance of revisionism.[37]
According to the historian Félix Luna, the disputes between supporters and detractors of Rosas are outdated, and modern historiography has incorporated the several corrections made by historical revisionism.[38] Luna points that Rosas is no longer seen as a horrible monster, but as a common historical man as the others; and that it is anachronistic to judge him under modern moral standards.[38]Horacio González, head of the National Library of the Argentine Republic, points a paradigm shift in the historiography of Argentina, where revisionism has moved from being the second most important perspective into being the mainstream one.[39] However, divulgative historians often repeat outdated misconceptions about Rosas. This is usually the case of historians from outside of Argentina, who have no bias towards the Argentine topics but unwittingly repeat cliches that have long been refuted by Argentine historiography.[40]
This section's factual accuracy is disputed. (February 2013) |
The date of November 20, anniversary of the battle of Vuelta de Obligado, has been declared "Day of National Sovereignty" of Argentina, following a request by revisionist historian José María Rosa.[41][42] This observance day was raised in 2010 to a public holiday by Cristina Fernández de Kirchner.[43] Rosas has been included in the banknotes of 20 Argentine pesos, with his face and his daughter Manuela Rosas in the front and a depiction of the battle of Vuelta de Obligado in the back. A monument of Rosas, 15 meters tall and with a weight of three tons, has been erected in 1999 in the city of Buenos Aires, at the conjunction of the "Libertador" and "Sarmiento" avenues.[44]
The aforementioned law that charged Rosas of high treason was abrogated in 1974.
A portrait of Rosas was included in 2010 in a gallery of Latin American patriots, held at the Casa Rosada. The gallery, which included works provided by the presidents of other Latin American countries, was held because of the 2010 Argentina Bicentennial.[45]
Silver and gold coins were struck during Rosas' tenure both with his portrait and without, but bearing his name. Portrait coins were issued in 1836 with a more youthful portrait and again in 1842 with a more mature portrait. Shown at right is a silver 8 soles (approx. 39 mm) coin from 1836.
- ^ Robert Bontine Cunninghame Graham described them as "herdsmen, who lived on horseback... In their great plains, roamed over by enormous herds of cattle, and countless horses in semi-feral state, each Gaucho lived in his own reed-built rancho [ranch] daubed with mud to make its weathertight often without another neighbor nearer than a league away. His wife and children and possibly two or three other herdsmen, usually unmarried, to help him in the management of the cattle, made up his society. Generally he had some cattle of his own, and possibly a flock of sheep; but the great herds belonged to some proprietor who perhaps lived two or three leagues away."(Graham 1933, pp. 121–122)
- ^ Spanish: Rosas, señor, ese tirano, ese bárbaro, así bárbaro y cruel, no era considerado lo mismo por las naciones europeas y civilizadas, y ese juicio de las naciones europeas y civilizadas, pasando a la posteridad, pondrá en duda, cuando menos, esa tiranía bárbara y execrable que Rosas ejerció entre nosotros. Es necesario, pues, marcar con una sanción legislativa declarándole reo de lesa patria para que siquiera quede marcado este punto en la historia, y se vea que el tribunal más potente, que es el tribunal popular, que es la voz del pueblo soberano por nosotros representado, lanza al monstruo el anatema llamándole traidor y reo de lesa patria... Juicios como éstos no deben dejarse a la historia... ¿Qué se dirá, qué se podrá decir en la historia cuando se viere que las naciones civilizadas del mundo, para quien nosotros somos un punto... han reconocido en ese tirano un ser digno de tratar con ellos?, ¿que la Inglaterra le ha devuelto sus cañones tomados en acción de guerra, y saludado su pabellón sangriento y manchado con sangre inocente con la salva de 21 cañonazos?... Este hecho conocido en la historia, sería un gran contrapeso, señor, si dejamos a Rosas sin este fallo. La Francia misma, que inició la cruzada en que figuraba el general Lavalle, a su tiempo también lo abandonó, trató con Rosas y saludó su pabellón con 21 cañonazos... Yo pregunto, señor, si este hecho no borrará en la historia todo lo que podamos decir, si dejamos sin un fallo a este monstruo que nos ha diezmado por tantos años... No se puede librar el juicio de Rosas a la historia, como quieren algunos... Es evidente que no puede librarse a la historia el fallo del tirano Rosas... ¡Lancemos sobre Rosas este anatema, que tal vez sea el único que puede hacerle mal en la historia, porque de otro modo ha de ser dudosa siempre su tiranía y también sus crímenes... ¿Qué se dirá en la historia, señor?, y esto sí que es hasta triste decirlo, ¿qué se dirá en la historia cuando se diga que el valiente general Brown, el héroe de la marina en la guerra de la independencia, era el almirante que defendió los derechos de Rosas? ¿Qué se dirá en la historia sin este anatema, cuando se diga que este hombre que contribuyó con sus glorias y talentos a dar brillo a ese sol de Mayo, que el señor diputado recordaba en su discurso, cuando se diga que el general San Martín, el vencedor de los Andes, el padre de las glorias argentinas, le hizo el homenaje más grandioso que puede hacer un militar legándole su espada? ¿Se creerá esto, señor, si no lanzamos un anatema contra el tirano Rosas? ¿Se creerá dentro de 20 años o de 50, si se quiere ir más lejos, a ese hombre tal como es, cuando se sepa que Brown y San Martín le servían fieles y le rendían los homenajes más respetuosos a la par de la Francia y de la Inglaterra? No, señor: dirán, los salvajes unitarios, sus enemigos, mentían. No ha sido un tirano: lejos de eso ha sido un gran hombre, un gran general. Es preciso lanzar sin duda ninguna ese anatema sobre el monstruo... ¡Ojalá hubiéramos imitado al pueblo inglés que arrastró por las calles de Londres el cadáver de Cromwell, y hubiéramos arrastrado a Rosas por las calles de Buenos Aires!... Yo he de estar, señor Presidente, por el proyecto. Si el juicio de Rosas lo librásemos al fallo de la historia, no conseguiremos que Rosas sea condenado como tirano, y sí tal vez que fuese en ella el más grande y el más glorioso de los argentinos. English: Rosas, Sir, that tyrant, that barbarian, so barbaric and cruel, was not considered as such by the European and civilized nations, and this assessment by the European and civilized nations, when it is told to posterity, will call into question, at least, the barbaric and execrable tyranny that Rosas exercised among us. It is therefore necessary to make a legislative sanction declaring him guilty of treason so that this fact is recorded in history, and ensure that the most powerful court, that is the court of the people, which is the voice of the sovereign people whom we represent, casts a curse on the monster by labeling him a traitor and guilty of treason against his country... Judgements like these should not be left to history... What will be said, what can be said in history when it is seen that the civilized nations of the world, to whom we are only a dot ... have recognized in this tyrant a being worthy of dealing with them?, that England returned his guns taken in military action, and saluted his flag, bloody and stained with innocent blood, with a 21-gun salute?. This known fact in history, would be a great contradiction, sir, if we do not take this decision regarding Rosas. France itself, which began the crusade, in which General Lavalle was involved and who, in time also abandoned the crusade, had dealings with Rosas and saluted his flag with 21 cannon shots ... I wonder, sir, if this will not erase all we may have to say from history, if we do not have a ruling against this monster that has decimated us for so many years ... We cannot leave Rosas to history, as some would prefer ... It is clear that the judgment of the tyrant, Rosas, cannot be left to history ... Let's cast on Rosas this curse, perhaps it is the only thing that can harm him in history, because otherwise his tyranny and his crimes must always be doubtful ... What will be said in history, sir? and this is really sad to say, what will be said in history when it is told that the brave general Brown, the hero of the navy in the war of independence, was the admiral who defended the rights of Rosas? What will be said in history without this curse, when it is said that this man who contributed his talents to give glory and brightness to the May sun, that this Congressman recalled in his speech, that it was said that General San Martin, the conqueror of the Andes, the father of the Argentine glories, paid him the greatest honour a soldier could receive, bequeathing to him his sword? Will his tyranny be believed, sir, if we do not place this curse on the tyrant, Rosas? Will it be believed 20 or 50 years from now, if you wish to go further, that he was a tyrant when it is known that Brown and San Martin served him faithfully and that France and England paid him the most respectful tributes? No, sir, they will say, the savage Unitarians, his enemies lied. He was not a tyrant: far from it, he was a great man, a great General. It is imperative that we declare the curse on the monster without any delay ... Would to God we had imitated the English people that dragged Cromwell's body through the streets of London and likewise dragged Rosas through the streets of Buenos Aires! ... Mr. President, I support the project. If the judgment of Rosas was left to the judgment of history, Rosas won't be condemned as a tyrant, but perhaps he may be labeled as the greatest and most glorious of Argentines.
- ^ a b Lynch 2001, p. 2.
- ^ a b Lynch 2001, p. 1.
- ^ Smith, p. 78
- ^ Smith, p. 78-92
- ^ Smith, p. 78-92
- ^ Lynch 2001, pp. 45–46.
- ^ Lynch 2001, p. 40.
- ^ Lynch 2001, p. 3.
- ^ Lynch 2001, pp. 2, 8, 26.
- ^ Lynch 2001, pp. 26–27.
- ^ Lynch 2001, p. 28.
- ^ Luna, pp. 39-43
- ^ Luna, pp. 46-48
- ^ Luna, pp. 50-54
- ^ Luna, pp. 55-59
- ^ a b Crow
- ^ Chapter IV: Rio Negro To Bahía Blanca
- ^ Historical value of money converter
- ^ La Máquina Infernal (Spanish)
- ^ Ruiz Moreno, pp. 561–577
- ^ Ruiz Moreno, pp. 577–595
- ^ Ruiz Moreno, pp. 595–650
- ^ Coles, R. J. (1981). Southampton's Historic Buildings. City of Southampton Society. p. 19.
- ^ "El regreso del Sable Libertador". La Gazeta Federal. Retrieved December 27, 2012.
- ^ "Rosas y San Martin". La Gazeta Federal. Retrieved December 27, 2012.
- ^ Johnson, p. 111
- ^ Rosa, José María. Historia Argentina, V. Buenos Aires. p. 491.
- ^ Johnson, pp. 111-112
- ^ Goebel, p. 29
- ^ a b c Goebel, p. 30
- ^ Johnson, p. 113
- ^ Goebel, p. 32
- ^ Goebel, p. 31
- ^ a b Goebel, p. 36
- ^ Rein, p. 75
- ^ Rein, p. 76
- ^ Devoto, pp. 278-281
- ^ a b Félix Luna, "Con Rosas o contra Rosas", pp. 5–7
- ^ Horacio González (November 23, 2010). "La batalla de Obligado" [The battle of Obligado] (in Spanish). Página 12. Retrieved June 27, 2012.
- ^ Lascano, pp. 46-47
- ^ H.Cámara de diputados de la Nación
- ^ Día de la soberanía nacional
- ^ Por decreto, el Gobierno incorporó nuevos feriados al calendario (Spanish)
- ^ Emplazaron en Palermo una estatua de Juan Manuel de Rosas
- ^ Galería de los Patriotas Latinoamericanos abrió ante siete presidentes (Spanish)
- Bethell, Leslie (1993). Argentina since independence. Cambridge: Cambridge University Press. ISBN 0-521-43376-2.
- Devoto, Fernando; Nora Pagano (2009). Historia de la Historiografía Argentina (in Spanish). Buenos Aires: Sudamericana. ISBN 978-950-07-3076-1.
- Goebel, Michael (2011). Argentina's Partisan Past: Nationalism and the Politics of History. Liverpool: Liverpool University Press. ISBN 9781846312380.
- Graham, Robert Bontine Cunninghame (1933). Portrait of a dictator. London: William Heinemann.
- Johnson, Lyman (2004). Death, dismemberment, and memory: body politics in Latin America. United States: University of New Mexico Press. ISBN 0-8263-3200-5.
- Lascano, Marcelo (2005). Imposturas históricas e identidad nacional (in Spanish). Buenos Aires: El Ateneo. ISBN 950-02-5900-1.
- Luna, Félix (2004). Grandes protagonistas de la historia argentina: Juan Manuel de Rosas. Argentina: Grupo Editorial Planeta. ISBN 950-49-1251-6.
- Lynch, John (2001). Argentine Caudillo: Juan Manuel de Rosas (2 ed.). Wilmington, Delaware: SR Books. ISBN 0-8420-2897-8.
- Rein, Mónica Esti (1998). Politics and Education in Argentina: 1946-1962. United States: M.E.Sharpe inc. ISBN 0-7656-0209-1.
- Ruiz Moreno, Isidoro J. (2006). Campañas Militares Argentinas II. Buenos Aires: Emece. ISBN 950-04-2794-X.
- Félix Luna, Arturo Jauretche, Benjamín Villegas Basavilbaso, Jaime Gálvez, León Rebollo Paz, Fermín Chávez, José Antonio Ginzo, Luis Soler Cañas, Arturo Capdevilla, Julio Irazusta, Enrique de Gandia, Ernesto Palacio, Bernardo González Arrili, Emilio Ravignani, José Antonio Saldías, Arturo Orgaz, Manuel Gálvez, Diego Luis Molinari, Ricardo Font Ezcurra, Héctor Pedro Blomberg, Ramón Doll, Adolfo Mitre, Rafael Padilla Rorbón, Alberto Gerchunoff, Mariano Bosch, Ramón de Castro Ortega, Carlos Steffens Soler, Julio Donato Álvarez, Roberto de Laferrere, Justiniano de la Fuente, Federico Barbará, Ricardo Caballero (2010). Con Rosas o contra Rosas (in Spanish). Santa Fe: H. Garetto Editor. ISBN 978-987-1493-15-9.
External links
Wikimedia Commons has media related to: Juan Manuel de Rosas |
- Rosas en la historiografía Argentina (Spanish)
- Juan Manuel de Rosas y sus muchas huellas (Spanish)
Political offices | ||
Preceded by Juan José Viamonte |
Governor of Buenos Aires Province (Head of State of Argentina) 1829–1832 |
Succeeded by Juan Ramón Balcarce |
Preceded by Manuel Vicente Maza |
Governor of Buenos Aires Province (Head of State of Argentina) 1835–1852 |
Succeeded by Vicente López y Planes |


text:
Escape to a world of your own.
Less than an hour's drive or twenty minute helicopter ride from Auckland's CBD, this exclusive property is located on the sought after eastern coastline of Ti Point.
With breathtaking views of the Barrier Islands and direct access via personal inclinator to the gorgeous private white sandy beach below, city life will become a distant memory within seconds of your arrival.
The house, designed by Spanish architect, Juan Molina, adds a European touch to the coastal landscape, where uncompromising attention to detail creates a home of integrity, sophistication and style.
Set on two hectares amid park-like grounds boasting tennis court, beautiful lap pool, Italianesque wine cave, orchards of fruits and nuts and Polynesian-style bure en route to the beach, this exquisite property offers a formidable opportunity.
The views not only encompass the eastern islands but offer a panoramic vista across Omaha and the picturesque Whangateau Harbour.
Only a stones-throw from award-winning wineries and the hub of Matakana Village, this is an unparalleled opportunity to escape from the city and be indulged in coastal paradise within an hour.


text:
Officers had arrest warrants for more than two dozen men and women charged with distribution of almost every Controlled Dangerous Substance on the books.
Sheriff Bobby Guidroz and Chief Ronald Dies said the roundup was part of their departments' continuing campaign to get suspected dealers off the community streets and out of its neighborhoods.
Guidroz has maintained rigid narcotics enforcement since taking office five years ago and Dies, who took office in January, has initiated a similar no-tolerance policy.
"We're going to do all we can to get this people off our streets and into our jails," Dies said.
He and Guidroz were at the sheriff's substation before the sun peeked over the horizon, coordinating the actions of a combined force of 20 officers.
Arrested as of Friday afternoon were:
Rakeem D. Vallaire, 174 Bollich Rd. two counts distribution of Schedule II CDS ("Crack" Cocaine).
Michael W. Edwards, Jr., 156 Spatz Rd., distribution of crack.
Sidney Norris J. Ben, 1040 North Vivian, distribution of crack.
Sidney J. Brown, 138 East Ardoin, distribution of a Schedule IV CDS (Xanax).
Theresa A. Malbrough, 330 Corn, distribution of a Schedule III CDS. (Lortab), distribution of a Schedule IV CDS (Soma).
James C. Faul, 1310 Darrell, distribution of a Schedule II CDS (Methadone).
Patricia Jacobs, 1360 West Peach, distribution of Lortab.
Joshua Janice, 300 Boudreaux, two counts distribution of crack.
Robert S. Goodwill, 1661 Tyrone Ln., distribution of Schedule I CDS (Marijuana).
Kira J. Patton, 311 Dulles, distribution of crack.
Caleb Edwards, 100 West Oak, two counts Distribution of crack.
Darrel Smith, 711 South C.C. Duson, two counts distribution of Lortab.
Elijahuan R. Janice, 132 Bollich, two counts Distribution of crack.
Matthew A. Ware, 510 Charles, three counts, distribution of marijuana, two counts of Violation of Uniform C.D.S. Law (Drug Free Zone).
Suspects still being sought:
Brittany D. Roberie, 1210 Etienne, Ville Platte, license plate light required, no proof of insurance, possession of marijuana, possession of drug paraphernalia, possession of Adderall, possession of Valium.
Elliot M. Roberts, 302 Melvin, Rayne, distribution of crack, Criminal Conspiracy.
Matthew W. Daigle, 157 Sunbonnet, Iota, principal to distribution of Lortab.
Claude Mitchell, 309 North East St. Eunice, La. distribution of crack, distribution of Ecstasy, Criminal Conspiracy.
Travis Mitchell, 309 North East, Criminal Conspiracy.
Steven D. Miller, 244 Angela, Oberlin, distribution of Lortab.
Brandon J. Gobert, 1430 Anne, distribution of crack.
Darryl L. Stevens, 341 East Maple, distribution of marijuana.
Magraff L. Favors, 530 East Maple, two counts distribution of crack, Violation of Uniform C.D.S. Law (Drug Free Zone)
Emerick J. St. Andre, 1705 Yukon St. Apt. 8, distribution of crack.
Melvin Clark, Jr., 129 Linton Ln., distribution of crack.
Torrance J. Skinner, 131 Arkansas Ln., two counts distribution of crack.


text:
justforeverus asked: HI, I'm a web developer and the co-founder of Essence Labs Creative Agency. I just wanted to give you a little idea that popped into my head when reading the post about the tumblr api. You should try making a static page that automatically fetches posts using ajax and the v1 tumblr api, and then have that be placed in a random order. That might work better than the cron job so this way each user gets a different page. Don't know if it will work too well, but its worth a shot! What do you think?
The issue with AJAX and the Tumblr API is the cross-site domain restrictions in browsers. The main page is at "foo.tumblr.com" and the information is at "api.tumblr.com". Firefox and Chrome won't allow cross-subdomain AJAX calls like this.
You *can* use JSONP as a workaround for the cross-site scripting issue, but I find it inelegant and ugly.
But more to the point, when you need to load possibly hundreds of posts, the Tumblr API server is just too slow to get the results on the page in a reasonable amount of time.
Experiments from my webserver (which has a super duper fast pipe) shows an average of over 2.0 seconds to load 250 posts from the Tumblr API. This slows to over 3.5 seconds on my personal computer and home internet line. This is just too slow.
This offers a better end experience to users.
So, in writing my theme, I wanted a way to put a "Reblog" and "Like" link on each post on the main page of the blog without users having to "click-through" to the "/post" page, and use Tumblr's silly <iframe> in the upper right corner.
Interesting. I discovered a similar thing, but at the end, ended up including the iframe for each single post, setting opacity: 0, and aligning/scaling it so that it matches my button positions. Does the desired effect, only until I realized I cannot highlight my heart button when the post is liked, because I don't and can't know if the post is liked. After some research, I found out that there IS a way to do it, only I don't know how.
Edit: no, there seems to be no way. At least nobody has done it.
Right. The "reblog" is easy. The "Like" button is tricky — not to "make it work" but to show whether or not the Post is already "Liked" or not.
What really needs to happen is to just incorporate these functions into the Tumblr Theme Engine. It would probably be like, a few hours work for some Tumblr employee to implement this.
I also thought about scanning the notes of every post to check if you have liked it. Terribly inefficient, but it should happen fast enough for posts with 0-20 notes. It would have to be disabled for posts with more than 100 notes (or at least scan only the first 100 ones). Also, it would put a lot of queries on the Tumblr servers.
Yes, this is not a very robust technique. And Tumblr doesn't look kindly on "page scraping" in general. Nor is there a way in the Tumblr API to fetch more than the most recent 50 notes for a post — at all!
But who cares, if they don't want this they better improve their support - I have never heard a story of a theme designer who got in touch with the tumblr programmers.
Oh — well I have at least tried to get in touch with the Tumblr folks, on several occaisons.
And at least on the Tumblr API Google Group, there is one Tumblr Employee (John Bunting) who monitors the discussion in the group and is able to provide some feedback. However, he seems fairly powerless in the overall Tumblr structure to get any *real* changes made, although he has been helpful in fixing some bugs, etc. (The Tumblr Theme Google Group seems to be completely unmoderated by any Tumblr employees).
I've also sent emails to the Tumblr staff a several times about bugs in the API and Theme engine, and requests for features, etc. I usually get what looks to be a "real response from a real human" back — but nobody ever follows through to fix any of the problems I mention.
On the whole, Tumblr seriously needs to improve their support for developers. This is means listening to feedback, answering questions, fixing bugs and problems quickly and promptly.
For now - it's really a giant headache.
Recently I'v been working on writing some "back end" code for a Tumblr blog that wants to do some non-standard things using Tags.
I'm all about trying to hack the Tumblr platform: hacking with the Tumblr API & doing unorthodox things in Tumblr themes.
The project is called Lensblr (http://lensblr.com) I'm not directly involved with creating the site. I'm just writing some devious back-end stuff to create added functionality.
The project caught my attention because navigation & view of the Tumblr is done exclusively through use of the /tagged/foobar pages. There is no view of the "main post feed". It's an interesting idea towards creating a custom Tumblr website.
Magical Post Tags
One goal of the designer was to automatically add/remove specific tags from posts, based on set criteria. In this case, the criteria is rather simple:
Based on the number of "notes" a post gets, add/remove tags that "move" the post to/from different pages on the Tumblr.
For example, after a post reaches 50 notes, we want to remove the tag the displays the post on one page, and move it to another page called "Featured Posts"
This is easily implemented using cron job that runs a script to analyze the posts on the blog, and use the Tumblr API to "retag" the posts as needed.
Of course, this kind of tag modification for changing how a site is presented could be extended and extrapolated to do lots of interesting things, based on any number of factors. It's a promising idea.
Magical Post Shuffling and Randomization
A second goal of the designer behind Lensblr was to implement a way so that posts on a particular /tagged/ Page could be randomly shuffled, such that older posts would sometimes reach the first page.
- The principle is more equal exposure of content, regardless or whether or not that content was posted 2 months ago or an hour ago.
- Not all content is Timely; and most people never make it past the 1st or 2nd page of a blog.
Fortunately, you can modify the Published Date on posts using the Tumblr API. And when viewing posts through the standard "Posts" interface (mounted at / ), this works rather well. You are able to shuffle posts around so that older and newer posts get equal chance of exposure on the 1st or 2nd page of the blog.
Unfortunately, Tumblr seems to have a bug/limitation with sorting posts by "Time" on the /tagged/foobar pages:
- If a post is on page 3 of /tagged/foobar, even modifying the post's Publish Date is not enough to ever bounce it up to page 1. The post is "stuck" on page 3 forever. (or page 4, 5… etc as more posts are added).
Interestingly, on the individual pages /tagged/foobar/page/X the posts *are* sorted chronologically — but only relative to the other posts on that page.
Based on this, I've concluded that while Tumblr "sorts by Time" it only does so per page; the actual posts that are put on a given page comes from "sorting by Post ID". It's a bit inconsistent.
So although we had a sound principle and strategy, implemented the code to "shuffle" the posts around — it just doesn't work within Tumblr's buggy / limited system.
Working within Tumblr's Limitations
Tumblr does not provide Developers with many good means for representing blog Content with different "views" or in different ways. Using Tags seems to be the only practical way to achieve these ends, for now.
Things that are not particularly useful:
The "Static Pages"
While these can contain arbitrary HTML completely separate from the main "Theme" they are rather useless from the perspective of creating / loading dynamic content, or content that changes with high frequency (say once a day).
"Pages" are not accessible through the Tumblr API, so making automatic changes to these Pages with code is not possible.
The Tumblr API
The API is OK if you are developing an application for the desktop or a mobile device. It lets you do *most* things you might want to do to create a "Tumblr Experience" on a mobile device, or say a "Tumblr Posting / Editing" program on the Desktop.
Where the API is not particularly useful is in trying to create dynamically generated content on web pages.
Tumblr only supports OAuth1.0 (they should really upgrade to an OAuth2.0 interface)
Tumblr does not support CORS, a technology that allows controlled "cross-site" AJAX calls. Without CORS, as a developer you are limited to using rather ugly JSONP callbacks, and then only HTTP "GET" commands.
The available methods in the Tumblr API in many cases do not provide sufficient means to request the specific information you want: first, there are not enough "filters" to select the data you want, no literally no means to control the "output" received from the API. For example, if all I want is the list of "Tags" from posts on a blog - I still have to download *all that other data* which has no use for me. That adds up rather quickly to a *lot* of transferred data.
The API needs better methods of "selecting" the types of posts to return, and then needs to implement a way to filter down the data returned to only what you require in order to make the API useful in the context of creating dynamic web pages.
The API Server is just plain slow. Response times I observe are often in the range of 600-800 ms for simple requests (say "grab 50 posts"), and up to 2000-3000 ms for larger requests (say, "grab 200 posts").
Part of the problem is the before-mentioned lack of ability to "filter down" to just the data you need.
Another part of the problem is that the API Servers refuse to use HTTP Keep-Alive if you will be requesting multiple pieces of data in quick succession. The API Server should enable Keep-Alive.
So Why Bother?
Because Tumblr is a great social platform. You bother trying to create custom/specialized Tumblr pages to create a unique "Web Experience" while at the same time being able to take advantage of the socialaspects that Tumblr can provide to your Page and your Content.
As a Developer however — this is all rather frustrating.
Anyway, Tumblr just put up a Job Listing for API Lead. Perhaps that is a sign that things will get better in the near future.
But for now, it's all pretty foobar.