r

Y tú, ¿para qué usas WordPress?

Una vez más nos encontramos en la meetup de WordPress Valladolid para compartir qué usos le damos a nuestro sistema de gestión […]




r

Una traductora en la WordCamp Valladolid

He tenido tiempo de ver algunas charlas de la WordCamp Valladolid 2020 que me perdí en su momento. Algo bueno tenía que […]




r

PLAZO HASTA EL 15 DE NOVIEMBRE PARA CAMBIAR EL SELLO DE TRADUCTOR JURADO

Con el entrada en vigor de la nueva normativa sobre traducción jurada a finales del año 2014, los traductores jurados nos enfrentamos a una serie de cambios que todavía siguen causando confusión. Uno de ellos,...

The post PLAZO HASTA EL 15 DE NOVIEMBRE PARA CAMBIAR EL SELLO DE TRADUCTOR JURADO appeared first on El Blog del Traductor Jurado.




r

Consigue una traducción oficial gratis de tu certificado

Antes de encargar una traducción jurada, comprueba si puedes obtener una traducción oficial gratis. El presupuesto puede ser mucho más económico de lo que te esperas, si solicitas certificados plurilingües o internacionales para determinados...

The post Consigue una traducción oficial gratis de tu certificado appeared first on El Blog del Traductor Jurado.




r

CONVOCATORIA DEL EXAMEN DE TRADUCTOR JURADO 2017

El Ministerio de Asuntos Exteriores convoca el examen de traductor jurado de 2017 en el BOE 61 de 13 de marzo de 2017. La espera se ha acabado. Sin embargo, la convocatoria de intérpretes jurados de...

The post CONVOCATORIA DEL EXAMEN DE TRADUCTOR JURADO 2017 appeared first on El Blog del Traductor Jurado.




r

El brexit para los traductores jurados: ¿Qué consecuencias tiene?

La posible y cada vez más anunciada salida de Reino Unido de la Unión Europea, el llamado brexit, tiene consecuencias en todos los ámbitos. Para algunos es una catástrofe. Para otros, la liberación. Independientemente...

The post El brexit para los traductores jurados: ¿Qué consecuencias tiene? appeared first on El Blog del Traductor Jurado.




r

10 errores al enviar tu CV

Los traductores jurados o agencias de traducción jurada recibimos a diario toneladas de correos electrónicos de candidatos que desean trabajar con nosotros. El problema es que la mayoría de ellos acaban en la papelera...

The post 10 errores al enviar tu CV appeared first on El Blog del Traductor Jurado.




r

EXAMEN DE TRADUCTOR JURADO 2018

La Oficina de Interpretación de Lenguas del Ministerio de Asuntos Exteriores acaba de publicar la convocatoria de examen de traductor jurado 2018 en su web y en este artículo te damos todos los datos...

The post EXAMEN DE TRADUCTOR JURADO 2018 appeared first on El Blog del Traductor Jurado.



  • Examen de traductor jurado
  • convocatoria traductor jurado 2018
  • examen traductor jurado
  • examen traductor jurado 2018

r

Proyecto de modificación del Reglamento de Traductores Jurados

Tras la modificación de la normativa de 2014, esta es la primera vez que el Ministerio de Asuntos Exteriores, Unión Europea y Cooperación de España (conocido por todos por sus anteriores siglas, MAEC) pretende...

The post Proyecto de modificación del Reglamento de Traductores Jurados appeared first on El Blog del Traductor Jurado.



  • Normativa del traductor jurado
  • legislación
  • normativa
  • normativa de traducción jurada
  • reglamento
  • reglamento de traducción jurada
  • reglamento de traductores jurados

r

Ser traductor jurado en tiempos de coronavirus

Son tiempos difíciles para todos y también para los traductores jurados. A pesar de que el teletrabajo es habitual en nuestra profesión, el coronavirus o COVID-19 ha parado la economía de todo el mundo...

The post Ser traductor jurado en tiempos de coronavirus appeared first on El Blog del Traductor Jurado.




r

Real Decreto 2020 para regular Traductor Jurado e Intérprete Jurado

Tras varios meses de actividad bajo mínimos a causa de la pandemia del COVID19, en los que quedó claro que no es fácil ser traductor jurado en tiempos de coronavirus, la Oficina de Interpretación...

The post Real Decreto 2020 para regular Traductor Jurado e Intérprete Jurado appeared first on El Blog del Traductor Jurado.




r

Traducción jurada de un audio

¿Es posible la traducción jurada de un audio? Es una pregunta muy habitual en foros de traducción jurada y en grupos de traductores jurados. La respuesta no es tan sencilla, aunque en esta entrada...

The post Traducción jurada de un audio appeared first on El Blog del Traductor Jurado.




r

Platform-as-a-Service freedom or lock-in

There has been a set of discussions about lock-in around Platform-as-a-Service (PaaS): Joe McKendrick and Lori MacVittie in particular bring out some of the real challenges here.

Lori brings out the difference between portability and mobility. While I'm not in 100% agreement with Lori's definitions, there is a key point here: its not just code, its the services that the code relies on that buy lock-in into a cloud.

So for example, if you use Amazon SQS, Force.com Chatter Collaboration, Google App Engine's bigtable data store, all of these tie you into the cloud you are deployed onto. Amazon isn't really a PaaS yet, so the tie-in is minimal, but Google App Engine (GAE) is based on Authentication, Logging, Data, Cache and other core services. Its almost impossible to imagine building an app without these, and they all tie you into GAE. Similarly, VMForce relies on a set of services from force.com.

But its not just about mobility between force.com and Google: between two PaaSes. The typical enterprise needs a private cloud as much as public cloud. So there is a bigger question:

Can you move your application from a private PaaS to a public Paas and back again?
In other words, even if Google and Force got together and defined a mobility layer, can I then take an app I built and run it internally? Neither Google nor Force is offering a private PaaS.

The second key question is this:
How can I leverage standard Enterprise Architecture in a PaaS?
What I'm getting at here is that as the world starts to implement PaaS, does this fit with existing models? Force.com and Google App Engine have effectively designed their own world view. VMForce and the recent Spring/Google App Engine announcement address one aspect of that - what Lori calls portability. By using Spring as an application model, there is at least a passing similarity to current programming models in Enterprises. But Enterprise Architectures are not just about Java code: what about an ESB? What about a Business Process engine (BPMS)? What about a standard XACML-based entitlement engine? So far PaaS has generally only addressed the most basic requirements of Enterprise core services: databases and a identity model.

So my contention is this: you need a PaaS that supports the same core services that a modern Enterprise architecture has: ESB, BPMS, Authentication/Authorization, Portal, Data, Cache, etc. And you need a PaaS that works inside your organization as well as in a public Cloud. And if you really don't want any lock-in.... hadn't that PaaS better be Open Source as well? And yes, this is a hint of things coming very soon!




r

WSO2 Stratos - Platform-as-a-Service for private and public cloud

Yesterday we announced something I believe is a game-changer: WSO2 Stratos. What is Stratos?

WSO2 Stratos is a complete SOA and developer platform offered as a self-service, multi-tenant, elastic runtime for private and public cloud infrastructures.
What that means is that our complete SOA platform - now enhanced with Tomcat and Webapp support - is available as a  "cloud native" runtime that you can either use on the Web (yes - you can try it out right now), on Amazon VPC, or on your own internal private cloud based on Ubuntu Enterprise Cloud, Eucalyptus and (coming soon) vmWare vSphere. It is a complete Platform-as-a-Service for private and public clouds.

I'll be writing more about Stratos over the coming weeks and months, and I'll also provide links and tweets to other Stratos blogs, but in this blog I want to simply answer three questions:

  1. I'm already talking to {vmWare, Eucalyptus, Ubuntu, Savvis, Joyent} about private cloud - what does WSO2 add that they don't have?
  2. What is the difference between Stratos and the Cloud Images that WSO2 already ships?
  3. Why would I choose WSO2 over the other vendors offering Platform-as-a-Service?
In order to answer the first question, lets look at the cloud computing space, which is most easily divided up into:
  • Infrastructure-as-a-Service (IaaS): this is where Amazon, Eucalyptus, vmWare, Saavis and Joyent play
  • Platform-as-a-Service (PaaS): Google App Engine, vmForce, Tibco Silver and now WSO2 Stratos play in this space.
  • Software-as-a-Service (SaaS): Google Apps, Google Mail, Microsoft Office Live, Salesforce, SugarOnDemand - these and many more make up the SaaS category.
To generalize wildly, most people talking about public cloud today are talking about SaaS. And most people talking about private cloud today are talking about IaaS.

SaaS is fantastic for quick productivity and low cost. WSO2 uses Google Apps, Sugar on Demand and several other SaaS apps. But SaaS doesn't create competitive advantage. Mule also uses Google Apps. They may well use Salesforce. SaaS cannot produce competitive advantage because your competitors get access to exactly the same low-cost services you do. In order to create competitive advantage you need to build as well as buy. For example, we use our Mashup Server together with our Sugar Business Messaging Adapter to provide insight and management of our pipeline that goes beyond what Sugar offers.

IaaS is of course a great basis to build apps. But it's just infrastructure. Yes - you get your VM hosted quicker. But someone has to create a useful VM. And that is where PaaS comes in. PaaS is how to speed up cloud development.

What does Stratos give you on top of an IaaS? It gives you an Application Server, Registry, Identity Server, Portal, ESB, Business Activity Monitor and Mashup Server. And it gives you these as-a-Service: completely self-service, elasticly scalable, and granularly metered and monitored. Someone in your team needs an ESB - they can provision one for themselves instantly. And because it's multi-tenant, it costs nothing to run until it gets used. How do you know how it's used? The metering and monitoring tells you exactly how much each tenant uses.

2. What is the difference between Stratos and the existing WSO2 Cloud Images?

The cloud images we started shipping in December are not Cloud Native. Stratos is Cloud Native. In practice, this means that when you log into Stratos (go on try it now) you can instantly provision your own domain, together with a set of Stratos services. This saves memory - instead of allocating a new VM and minimum half a gigabyte of memory to each new server you get a new ESB with zero extra memory cost. And it's much easier. The new ESB will automatically be governed and monitored. It's automatically elastically clustered.

3. Why would I choose WSO2 over other PaaS vendors?

Firstly, if you look at PaaS as a whole there is a huge divide between Public PaaS and Private PaaS. The public PaaS vendors simply don't offer private options. You can't run force.com or Google App Engine applications internally, even if you want to. WSO2 bridges that gap with a PaaS you can use in the public Web, on a virtual private cloud, or on premises.

The second big differentiator between WSO2 and the existing PaaS offerings is the architecture. Mostly PaaS is a way of building webapps. WSO2 offers a complete enterprise architecture - governance, business process, integration, portal, identity and mashups. And we support the common Enterprise Programming Model (not just Java, WebApp, JAX-WS, but also BPEL, XSLT, XPath, Google Gadgets, WSDL, etc). The only other PaaS that I know of that offers a full Enterprise architecture is Tibco Silver.

The third and most important differentiator is about lock-in. Software vendors love lock-in - and Cloud vendors love it even more. So if you code to Google App Engine, you are tied into Google's identity model, Google's Bigtable, etc. If you code to force.com or vmForce - you are tied to force's infrastructure services. If you code to Tibco Silver, you are tied to Tibco. WSO2 fights this in three ways:
  • No code lock-in: we use standards-based coding (WAR, JAX-WS, POJO) and Stratos is 100% Apache License Open Source.
  • No model lock-in: we use standards-based services: 
    • Identity is based on OpenID, OAuth, XACML, WS-Trust
    • Registry is based on AtomPub and REST
    • Business Process is based on BPEL, etc
  • No hosting lock-in: you can take you apps and data from our public PaaS and re-deploy internally or on your own virtual private cloud anytime you like.
I hope you found this a useful introduction to Stratos. If you want more information, contact me paul@wso2.com, or check out the Stratos website or code.




r

Taking College loyalty a bit far?

A few weekends ago I was at the Balliol College family day and they had a face painter. I got her to do a large college arms on my face, which came out quite well! Thanks to Jeremy for the picture.




r

Lyre

I spent the weekend making a lyre. The rough design was to create a seven string pentatonic lyre out of a solid elm plank. In order to create more soundboard area, we carved away a slanting hole through the wood to create two overlapping soundboards.

Its tuned DEGBADE. I'll try and post a sound sample once I've learnt to play something on it!





r

Using OSGi as the core of a middleware platform

Ross Mason of Mulesoft recently blogged: "OSGi - no thanks". Ross is a smart guy and he usually has something interesting to say. In this case, I think Ross has made a lot of good points:

1. Ross is right - OSGi is a great technology for middleware vendors.
2. Ross is right - Developers shouldn't be forced to mess with OSGi.
3. Ross is wrong - You can make both of these work together.

At WSO2 we went through exactly the same issues. We simply came to a different conclusion - that we can provide the benefits of OSGi (modularity, pluggability, dynamic loading) without giving pain to end-users. In WSO2 Carbon, customers can deploy their systems in exactly the same way that worked pre-OSGi.

Why did we choose OSGi? We also looked at building our own dynamic loading schemes. In fact, we've had dynamic classloading capabilities in our platform from day one. The reasons we went with OSGi are:

  • A structured and versioned approach to dynamic classloading
  • An industry standard approach - hence better understood, better skills, better resources
  • It solves more than just dynamic loading: as well as providing versions and dynamic loading, it also really gives proper modularity - which means hiding classes as much as exposing classes.
  • It provides (through Equinox p2) a proper provisioning model.
It wasn't easy. We struggled with OSGi to start with, but in the end we have a much stronger solution than if we had built our own. And we have done some great improvements. Our new Carbon Studio tooling gives a simple model to build complete end-to-end applications and hides OSGi completely from the end-user. The web admin consoles and deployment models allow complete deployment with zero OSGi. Drop a JAR in and we take care of the OSGi bundling for you.

The result - the best of both worlds - ease of use for developers and great middleware.




r

Wikileaks and Governance

Whether or not you support the leaking of 250,000 embassy cables to the now infamous Wikileaks website, it certainly makes you think. Whatever business you are in there always emails or data that would be embarrassing or more likely harmful to our business if they were made widely available. So what is the lesson to be learnt from the Cablegate affair.

The blame for the issue seems to be landing on a certain US private Bradley Manning. But I place the blame directly on a lack of Governance and poor IT systems. And the measures that have so far been announced - things like removing CD drives from classified systems - are simply the wrong approach. The real problem is why any one person - whatever level of clearance they had - should have access to all 250,000 cables.

Without going into the details of XACML and policy-based entitlement models, suffice it to say that the right approach is to base access not only on the person, but the reason they have for accessing the data. Using policy-based entitlement, it is possible to have a well-defined Governance model where a person is given access to just the right data at just the right time for just the right purpose, and that this can be managed in a process-driven, auditable and controlled manner.

If you live in a crime area and you leave your door open, you will be burgled. If you don't put in place good security and data governance, then it is you that will be blamed, not just the guy who steals your data.

And if you want the technical low-down on XACML, start here, here and here.




r

Elastic Beanstalk - a PaaS fairytale

A while back, I blogged about what it means to be Cloud Native. One of the key issues is multi-tenancy. As I discussed in that blog, there is a huge cost benefit in resources to multi-tenancy. This is how we can afford to run http://cloud.wso2.com and offer multi-tenant Tomcat currently for free beta use.

Today Amazon announced Elastic Beanstalk. They call it a PaaS. Unfortunately Elastic Beanstalk is only multi-tenant at the VM layer - in other words it is fundamentally IaaS not PaaS. In other words you don't get the true benefit of PaaS: every Beanstalk user has to pay for at least one EC2 instance. Amazon tries to put this in a nice light:

Each of your Elastic Beanstalk applications will be run on one or more EC2 instances that are provisioned just for your application. 
WSO2 Stratos is designed to share the cost of the infrastructure fairly. In other words we will be charging for CPU, Bandwidth and Disk space, not for just having an app sitting waiting for requests.

Effectively Beanstalk is a nice pre-packaged runtime with some good tooling. I have no doubt it is a major improvement over the existing model and from the look of it the tooling is pretty slick. But calling it a PaaS is simply a fairytale.




r

SPDY - 90% of all Gmail Traffic via Chrome/HTTPS

Anyone watching the SPDY-DEV group will have heard something pretty amazing today. SPDY is a proposed alternative to HTTP from Google. It was launched in November 2009 and has been chugging along making progress ever since, but frankly without much further buzz.

Today, Google admitted on the mailing list that 90% of all Gmail and other Google services go via SPDY when the client is Chrome and SSL is used:

Yes, indeed SPDY is enabled in Chrome and on Google servers for all SSL
traffic at this point.  (Actually, we do 90% on SPDY, with a 10% holdback
for purposes of A/B comparisons).
This is pretty damn significant real world usage.




r

Introduction to WSO2 Message Broker


Introduction to WSO2 Message Broker

Introduction
WSO2 Message Broker (MB) is a new Open Source project and product from WSO2 that provides messaging functionality within the WSO2 Carbon platform and to other clients in various languages. It works either standalone or in conjunction with products and components such as the WSO2 ESB and WSO2 Complex Event Processing Server.

MB is based on the Apache Qpid/Java project (http://qpid.apache.org). From Apache Qpid, MB gets core support for the AMQP protocol and JMS API. On top of that WSO2 has added support for Amazon SQS APIs and WS-Eventing support.

Understanding how the MB broker fits into Enterprise Architecture
The Message Broker provides three main capabilities into an overall Enterprise Architecture:
·               A queueing/persistent message facility
·               An event distribution (pub/sub) model
·               An intermediary where multiple systems can connect irrespective of the direction of messages.

To give some concrete examples of these benefits, here are some scenarios:
1)   In the WSO2 ESB, a common pattern is to persist the message from an incoming HTTP request into a persistent message queue, and then process onbound from there. MB can provide the persistent queue.
2)   The WSO2 ESB already has an event distribution model and eventing support, but the QPid-based broker provides higher performance as well as supporting the JMS API.
3)   For example, you may wish to send messages from outside a firewall to a server inside. You could connect an ESB or Service Host within the firewall to a Message Broker running outside the firewall (for example on Amazon EC2). This model is used by the WSO2 Cloud Services Gateway.

Where does AMQP fit?

AMQP (www.amqp.org) is an open protocol for messaging. Whilst the AMQP protocol is still under development, it has released three stable releases (0-8, 0-9-1, and 0-10), with a 1.0 due during 2011. There are a number of implementations of the AMQP standard in production, including Apache Qpid (both Java and C++ versions), RabbitMQ, OpenAMQ and others.

WSO2 has been a member of the AMQP working group for several years, and we strongly support AMQP as the way to introduce interoperability and greater openness into the messaging space.

The Qpid broker supports a variety of clients on top of the AMQP protocol. The most useful of these for Carbon is the Java JMS 1.1 API, which provides a portable API as well as the main interface with the WSO2 ESB. In addition there are C# and other APIs. WSO2 MB also extends these with WS-Eventing and Amazon SQS APIs for interoperability using HTTP, REST and SOAP.

Installing the WSO2 MB

You can download the WSO2 MB Beta from:

Once you have downloaded and unzipped, simply switch to the install directory

            cd wso2mb-1.0.0-SNAPSHOT
            binwso2server.bat  [ON WINDOWS]
            bin/wso2server.sh [ON LINUX/MACOSX]

Let’s refer to the install directory as from now on.

You should see the server startup:
[2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...
[2011-03-16 14:00:12,840]  INFO {org.wso2.carbon.server.TomcatCarbonWebappDeployer} -  Deployed Carbon webapp: StandardEngine[Tomcat].StandardHost[defaulthost].StandardContext[/]
[2011-03-16 14:00:14,147]  INFO {org.wso2.carbon.atomikos.TransactionFactory} -  Starting Atomikos Transaction Manager 3.7.0
[2011-03-16 14:00:19,952]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Starting WSO2 Carbon...
[2011-03-16 14:00:19,983]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Operating System : Mac OS X 10.6.6, x86_64
[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Home        : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Version     : 1.6.0_24
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java VM          : Java HotSpot(TM) 64-Bit Server VM 19.1-b02-334,Apple Inc.
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Carbon Home      : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Temp Dir    : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT/tmp
[2011-03-16 14:00:19,986]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  User             : paul, en-US, Europe/London
2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...

some logs deleted

[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpsTransportListener} -  HTTPS port       : 9443
[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpTransportListener} -  HTTP port        : 9763
[2011-03-16 14:00:42,422]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Mgt Console URL  : https://192.168.1.100:9443/carbon/
[2011-03-16 14:00:42,499]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Started Transport Listener Manager
[2011-03-16 14:00:42,500]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Server           :  WSO2 MB -1.0.0-SNAPSHOT
[2011-03-16 14:00:42,506]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  WSO2 Carbon started in 27 sec
2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...

WSO2 Message Broker is installable in more ways for production systems. Typically it is either registered as a Linux Daemon or as a Windows Service – but for now we will stick with the command-line version for simplicity.

Once the server is running you can access the management console. Point your browser at:
            https://localhost:9443

Initially you will see a browser screen warning you about the certificates. Please tell your browser to continue (For a production server you would normally install a proper SSL/TLS certificate, but for initial install we generate a self-signed certificate that you need to agree to use).

Once you have accepted the certificate, you should see a screen like:


You can login using the default user/password which is admin/admin.

Once you login you should see the following screen:


Before we examine the admin console, lets first create a simple JMS client that will communicate with the server via AMQP on TCP/IP.

Getting Started with JMS
The Java Message Service (JMS) specification - http://www.oracle.com/technetwork/java/index-jsp-142945.html - is a specification for talking to message brokers. It is unfortunately poorly named: the word “service” implies this is an implementation, but JMS does not define an actual messaging service, instead just the API which is used to access JMS providers. “Java Messaging API” would more accurately express what JMS is. The result is that there are a variety of JMS providers, and they often have quite different approaches to their core model.

The WSO2 Message Broker is based on the Apache Qpid project (http://qpid.apache.org) and is a compliant implementation of the JMS specification, as well as various levels of the AMQP specification (0-8, 0-9-1, 0-10). 

To write completely standard portable JMS code, you need to use a JNDI provider to gain access to the JMS connection, queues, etc. In this example we will use a Qpid JNDI provider backed by a simple set of properties. This makes the overall system simple and highly portable.

Here is a sample JMS application that can be used to test access to the Message Broker.  You can find this code here:



First are some required imports.

import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;

Next is a simple “main” class definition:

public class JMSExample {

public static void main(String[] args) {
       JMSExample producer = new JMSExample();
       producer.runTest();
}

      
private void runTest() {

Since this is just an example, we will place the complete logic in a try/catch block.

try {

Normally the JNDI is configured by a properties file, but you can also do it from an in-memory set of properties. To see a similar setup with a properties file, take a look at the ESB example below.  Here is a properties object to store the properties:

Properties properties = new Properties();

In order to bootstrap the JNDI entries for the connection factory and queue, we set name/value pairs into the simple properties object:                   

properties.put("connectionfactory.cf",
       "amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'");

The property name “connectionfactory.cf” denotes that we are creating an object of type ConnectionFactory with name “cf”. The value is a URL that is used to bootstrap the ConnectionFactory: this URL points to the AMQP broker. The syntax is broken up as follows:
       amqp://               Indicates this is an AMQP URL
       admin:admin@  This is the username/password
       carbon/carbon The client ID and virtual host
       ?                     separator for options
       brokerlist=’tcp://localhost:5672’          A list of broker URLs to use

For more information on this URL syntax please see:

The virtual host name is part of the definition in:
/repository/conf/qpid/etc/virtualhosts.xml

This file also defines aspects such as the maximum number of messages in a queue and the queue depth (maximum size in bytes of the queue).

Now we need to create a JNDI entry for the queue we are going to talk to:

properties.put("destination.samplequeue", "samplequeue; {create:always}");

The property name “destination.samplequeue” indicates creating a destination with a JNDI name of “samplequeue”. The property value “samplequeue; {create:always}” indicates a queue named “samplequeue” with an attribute which tells the broker to create the queue if it doesn’t exist.

These properties are specific to the particular JNDI implementation we are using, which is the Qpid “PropertiesFileInitialContextFactory”. So now we need to configure JNDI to use this implementation:
                     
                     
properties.put("java.naming.factory.initial", "org.apache.qpid.jndi.PropertiesFileInitialContextFactory");

Now we can do our JNDI lookups:

Context context = new InitialContext(properties);

ConnectionFactory connectionFactory =
(ConnectionFactory) context.lookup("cf");

Having “found” a JMS Connection Factory in the JNDI, we can now create a connection to the broker:

Connection connection = connectionFactory.createConnection();
connection.start();

And now we can create a JMS Session:

Session session = connection.createSession(false,
                                    Session.AUTO_ACKNOWLEDGE);

One more lookup from JNDI will lookup our queue:

Destination destination = (Destination) context
                                    .lookup("samplequeue");


Now we can create a Producer, and send a message:
                     
MessageProducer producer = session.createProducer(destination);
TextMessage outMessage = session.createTextMessage();
outMessage.setText("Hello World!");
producer.send(outMessage);

Of course, in real life you would most likely NOT now retrieve that same message from the same application, but for this example we will now retrieve the message:                      
MessageConsumer consumer = session.createConsumer(destination);
Message inMessage = consumer.receive();
System.out.println(((TextMessage)inMessage).getText());

And close up the connection and the initial context:
                     
connection.close();
context.close();
} catch (Exception exp) {
       exp.printStackTrace();
}

To try out this client you need the correct client JARs.

In the beta release you will find:
/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
/jms-client-lib/qpid-client-0.9.wso2v2.jar

You also need to reference
/lib/log4j-1.2.13.jar





Once you have those in your classpath you can run the program. You should see some simple output:

log4j:WARN No appenders could be found for logger (org.apache.qpid.jndi.PropertiesFileInitialContextFactory).
log4j:WARN Please initialize the log4j system properly.
Hello World!

If you got that far, congratulations!

In the next section we are going to look at using the ESB with the Message Broker.

There are two approaches for this:
1) If you are using the existing WSO2 ESB 3.0.1 or similar, you can deploy the MB client libraries and communicate using the network.

2) As of the next WSO2 ESB release (3.1.0) it will include the Qpid/MB features as part of the release and you can utilize the Message Broker/JMS runtime locally in the same JVM.

WSO2 MB and WSO2 ESB together
In this first instance we are going to get the WSO2 ESB and MB to work together.
Assuming that you already have the MB installed and running, you will first need to install the ESB and change the ports of the admin console so that they don’t clash. You can download WSO2 ESB 3.0.1 from:
            http://wso2.org/downloads/esb

The install procedure is similar: unzip the ESB, but don’t start it up yet. Let’s name (for this guide) the directory where you installed the ESB as .

First let’s edit the ports on which the ESB listens. (Alternatively you could do the same to the MB instead).

Edit the epositoryconfmgt-transports.xml

This file defines which ports the management console runs (HTTP and HTTPS).

Please change:

<transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport">
        <parameter name="port">9763</parameter>

to read:
<transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport">
        <parameter name="port">9764</parameter>

Similarly change the HTTPS port to be 9444.

Now the next step is to ensure that the ESB has the right drivers to talk to the MB. Copy the following JARs into the epositorycomponentslib directory:
/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
/jms-client-lib/qpid-client-0.9.wso2v2.jar


We also need to configure the JMS transport correctly. To do this we edit the axis2.xml file:
  epositoryconfaxis2.xml

This file has the JMS transport commented out. It also needs the settings updated to use the Qpid libraries. Change the file so that the JMS receiver and sender sections look like this:
  
       <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        </parameter>


        <parameter name="myQueueConnectionFactory" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>


        <parameter name="default" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver>
You can find my copy of the edited axis2.xml here:

If you have looked through the JMS config you will notice it references a JNDI resource: resources/jndi.properties.

This is used to do the same thing the hard-coded properties we used above do – configure the local JNDI that the JMS client inside the ESB will use. In a future release of the ESB we expect to automatically configure this JNDI, but in the meantime, we can simply create a file in the /resources directory.




r

WSO2 Workshops in Europe

If any of you are interested in Identity, Security and Entitlement and how these fit into a SOA, Cloud and Enterprise Architectures, then I'd recommend you taking a look at our workshop that we are running in London, Paris, Zurich and Frankfurt.

PS I think I'm meant to be the one on the left with St. George's flag!






r

Carbon's 3rd Birthday

Three years ago I blogged about WSO2 Carbon for the first time. I enthused about a composable server architecture and why it was important for a SOA platform.

At that point there were just 4 Carbon products. Today there are 13 products, the core framework, Stratos, and Carbon Studio all based around the Carbon Architecture.

There are two really important things I think have worked really well:

  • The composability is obviously important and we now have a set of customers doing exactly that - using p2 to combine the correct components and effectively "build your own server" with the right function for their specific needs and requirements.

    But even more interesting for those customers has been the consistency and completeness of the platform that has arisen out of Carbon. The fact that there is a "menu" or palette of low-level components (features) and high level components (products) that all interoperate, behave the same, use the same identity, clustering, registry, key management, etc has really offered customers the opportunity to build out compelling architectures.
  • The kernelization is almost just a corollary of componentization: as you build the components and identify which ones to re-use, we found a common core across those 13 products. The result is that when we came to address cloud - starting later in 2009 - we very quickly realized that there were just a few core places in which to address multi-tenancy, elasticity and metering. I have to admit this was something I for one hadn't thought of, but has been probably the most powerful driver behind the success of StratosLive and Stratos. 
There were certainly people then who doubted that OSGi was a stable basis for an ESB or Server and I hope that the 1bn+ transactions a day that eBay are doing through WSO2 ESB are enough to disprove that.

All in all, it is amazing to see how far Carbon has come and what it has enabled in 3 years.





r

Understanding ESB Performance & Benchmarking

ESB performance is a hot (and disputed topic). In this post I don't want to talk about different vendors or different benchmarks. I'm simply trying to help people understand some of the general aspects of benchmarking ESBs and what to look out for in the results.

The general ESB model is that you have some service consumer, an ESB in the middle and a service provider (target service) that the ESB is calling. To benchmark this, you usually have a load driver client, an ESB, and a dummy service.

+-------------+      +---------+      +---------------+
| Load Driver |------|   ESB   |------| Dummy Service |
+-------------+      +---------+      +---------------+

Firstly, we want the Load Driver (LD), the ESB and the Dummy Service (DS) to be on different hardware. Why? Because we want to understand the ESB performance, not the performance of the DS or LD.

The second thing to be aware of is that the performance results are completely dependent on the hardware, memory, network, etc used. So never compare different results from different hardware.

Now there are three things we could look at:
A) Same LD, same DS, different vendors ESBs doing the same thing (e.g. content-based routing)
B) Same LD, same DS, different ESB configs for the same ESB, doing different things (e.g. static routing vs content-based routing)
C) Going via ESB compared to going Direct (e.g. LD--->DS without ESB)

Each of these provides useful data but each also needs to be understood.

Metrics
Before looking at the scenarios, lets look at how to measure the performance. The two metrics that are always a starting point in any benchmark of an ESB here are the throughput (requests/second) and the latency (how long each request takes). With latency we can consider overall latency - the time taken for a completed request observed at the LD, and the ESB latency, which is the time taken by the message in the ESB. The ESB latency can be hard to work out. A well designed ESB will already be sending bytes to the DS before its finished reading the bytes the LD has sent it. This is called pipelining. Some ESBs attempt to measure the ESB latency inside the ESB using clever calculations. Alternatively scenario C (comparing via ESB vs Direct) can give an idea of ESB Latency. 

But before we look at the metrics we need to understand the load driver.

There are two different models to doing Load Driving:
1) Do a realistic load test based on your requirements. For example if you know you want to support up to 50 concurrent clients each making a call every 5 seconds on average, you can simulate this.
2) Saturation! Have a large number of clients, each making a call as soon as the last one finishes.

The first one is aimed at testing what the ESB does before its fully CPU loaded. In other words, if you are looking to see the effect of adding an ESB, or the comparison of one ESB to another under realistic load, then #1 is the right approach. In this approach, looking at throughput may not be useful, because all the different approaches have similar results. If I'm only putting in 300 requests a sec on a modern system, I'm likely to see 300 request a sec. Nothing exciting. But the latency is revealing here. If one ESB responds in less time than another ESB thats a very good sign, because with the same DS the average time per request is very telling.

On the other hand the saturation test is where the throughput is interesting. Before you look at the throughput though, check three things:
1) Is the LD CPU running close to 100%?
2) Is the DS CPU running close to 100%?
3) Is the network bandwidth running close to 100%?

If any of these are true, you aren't doing a good test of the ESB throughput. Because if you are looking at throughput then you want the ESB to be the bottleneck. If something else is the bottleneck then the ESB is not providing its max throughput and you aren't giving it a fair chance. For this reason, most benchmarks use a very very lightweight LD or a clustered LD, and similarly use a DS that is superfast and not a realistic DS. Sometimes the DS is coded to do some real work or sleep the thread while its executing to provide a more realistic load test. In this case you probably want to look at latency more than throughput.

Finally you are looking to see a particular behaviour for throughput testing as you increase load.
Throughput vs Load
The shape of this graph shows an ideal scenario. As the LD puts more work through the ESB it responds linearly. At some point the CPU of the ESB hits maximum, and then the throughput stabilizes.  What we don't want to see is the line drooping at the far right. That would mean that the ESB is crumpling under the extra load, and its failing to manage the extra load effectively. This is like the office worker whose efficiency increases as you give them more work but eventually they start spending all their time re-organizing their todo lists and less work overall gets done.

Under the saturation test you really want to see the CPU of the ESB close to 100% utilised. Why? This is a sign that its doing as much as possible. Why would it not be 100%? Two reasons: I/O, multi-processing and thread locks: either the network card or disk or other I/O is holding it up, the code is not efficiently using the available cores, or there are thread contention issues.

Finally its worth noting that you expect the latency to increase a lot under the saturation test. A classic result is this: I do static routing for different size messages with 100 clients LD. For message sizes up to 100k maybe I see a constant 2ms overhead for using the ESB. Suddenly as the message size grows from 100k to 200k I see the overhead growing in proportion to the message size.


Is this such a bad thing? No, in fact this is what you would expect. Before 100K message size, the ESB is underloaded. The straight line up to this point is a great sign that the ESB is pipelining properly. Once the CPU becomes loaded, each request is taking longer because its being made to wait its turn at the ESB while the ESB deals with the increased load.

A big hint here: When you look at this graph, the most interesting latency numbers occur before the CPU is fully loaded. The latency after the CPU is fully loaded is not that interesting, because its simply a function of the number of queued requests.

Now we understand the metrics, lets look at the actual scenarios.

A. Different Vendors, Same Workload
For the first comparison (different vendors) the first thing to be careful of is that the scenario is implemented in the best way possible in each ESB. There are usually a number of ways of implementing the same scenario. For example the same ESB may offer two different HTTP transports (or more!). For example blocking vs non-blocking, servlet vs library, etc. There may be an optimum approach and its worth reading the docs and talking to the vendor to understand the performance tradeoffs of each approach.

Another thing to be careful of in this scenario is the tuning parameters. Each ESB has various tuning aspects that may affect the performance depending on the available hardware. For example, setting the number of threads and memory based on the number of cores and physical memory may make a big difference.

Once you have your results, assuming everything we've already looked at is tickety-boo, then both latency and throughput are interesting and valid comparisons here. 

B. Different Workloads, Same Vendor
What this is measuring is what it costs you to do different activities with the same ESB. For example, doing a static routing is likely to be faster than a content-based routing, which in turn is faster than a transformation. The data from this tells you the cost of doing different functions with the ESB. For example you might want to do a security authentication/authorization check. You should see a constant bump in latency for the security check, irrespective of message size. But if you were doing complex transformation, you would expect to see higher latency for larger messages, because they take more time to transform. 

C. Direct vs ESB
This is an interesting one. Usually this is done for a simple static routing/passthrough scenario. In other words, we are testing the ESB doing its minimum possible. Why bother? Well there are two different reasons. Firstly ESB vendors usually do this for their own benefit as a baseline test. In other words, once you understand the passthrough performance you can then see the cost of doing more work (e.g. logging a header, validating security, transforming the message). 

Remember the two testing methodologies (realistic load vs saturation)? You will see very very different results in each for this, and the data may seem surprising. For the realistic test, remember we want to look at latency. This is a good comparison for the ESB. How much extra time is spent going through the ESB per request under normal conditions. For example, if the average request to the backend takes 18ms and the average request via the ESB takes 19ms, we have an average ESB latency of 1ms. This is a good result - the client is not going to notice much difference - less than 5% extra. 

The saturation test here is a good test to compare different ESBs. For example, suppose I can get 5000 reqs/sec direct. Via ESB_A the number is 3000 reqs/sec and via ESB_B the number is 2000 reqs/sec, I can say that ESB_A is providing better throughput than ESB_B. 

What is not  a good metric here is comparing throughput in saturation mode for direct vs ESB. 


Why not? The reason here is a little complex to explain. Remember how we coded DS to be as fast as possible so as not to be a bottleneck? So what is DS doing? Its really just reading bytes and sending bytes as fast as it can. Assuming the DS code is written efficiently using something really fast (e.g. just a servlet), what this is testing is how fast the hardware (CPU plus Network Card) can read and write through user space in the operating system. On a modern server hardware box you might get a very high number of transactions/sec. Maybe 5000req/s with each message in and out being 1k in size.

So we have 1k in and 1k out = 2k IO.
2k IO x 5000 reqs/sec x 8bits gives us the total network bandwidth of 80Mbits/sec (excluding ethernet headers and overhead).

Now lets look at the ESB. Imagine it can handle 100% of the direct load. There is no slowdown in throughput for the ESB. For each request it has to read the message in from LD and send it out to DS. Even if its doing this in pipelining mode, there is still a CPU cost and an IO cost for this. So the ESB latency of the ESB maybe 1ms, but the CPU and IO cost is much higher. Now, for each response it also has to read it in from DS and write it out to LD. So if the DS is doing 80Mbits/second, the ESB must be doing 160Mbits/second. 

Here is a picture.

Now if the LD is good enough, it will have loaded the DS to the max. CPU or IO capacity or both will be maxed out. Suppose the ESB is running on the same hardware platform as the DS. If the DS machine can do 80Mbit/s flat out, there is no way that the same hardware running as an ESB can do 160Mbit/s! In fact, if the ESB and DS code are both as efficient as possible, then the throughput via ESB will always be 50% of the throughput direct to the DS. Now there is a possible way for the ESB to do better: it can be better coded than the DS. For example, if the ESB did transfers in kernel space instead of user space then it might make a difference. The real answer here is to look at the latency. What is the overhead of adding the ESB to each request. If the ESB latency is small, then we can solve this problem by clustering the ESB. In this case we would put two ESBs in and then get back to full throughput.

The real point of this discussion is that this is not a useful comparison. In reality backend target services are usually pretty slow. If the same dual core server is actually doing some real work - e.g. database lookups, calculations, business logic - then its much more likely to be doing 500 requests a second or even less. 

The following chart shows real data to demonstrate this. The X-Axis shows increasing complexity of work at the backend (DS). As the effort taken by the backend becomes more realistic, the loss in throughput of having an ESB in the way reduces. So with a blindingly fast backend, we see the ESB struggling to provide just 55% of the throughput of the direct case. But as the backend becomes more realistic, we see much better numbers. So at 2000 requests a second there is barely a difference (around 10% reduction in throughput). 


In real life, what we actually see is that often you have many fewer ESBs than backend servers. For example, if we took the scenario of a backend server that can handle 500 reqs/sec, then we might end up with a cluster of two ESBs handling a cluster of 8 backends. 

Conclusion
I hope this blog has given a good overview of ESB performance and benchmarking. In particular, when is a good idea to look at latency and when to use throughput. 





r

Understanding Logging in the Cloud

I recently read an interesting pair of articles about Application Logging in OpenShift. While these are great articles on how to use log4j and Apache Commons Logging, they don't address the cloud logging issue at all.

What is the cloud logging issue?

Suppose I have an application I want to deploy in the cloud. I also want to automatically elastically scale this app. In fact I'm hoping that this app will succeed - and then I'm going to want to deploy it in different geos. I'm using EC2 for starters, but I might need to move it later. Ok, so that sounds a bit YAGNI. Let's cut back the requirements. I'm running my app in the cloud, on a single server in a single geo.

I do not want to log to the local filesystem.

Why not? Well firstly if this is say EC2, then the server might get terminated and I'm going to lose my logs. If it doesn't get restarted then they are going to grow and kill my local filesystem. Either way, I'm in a mess.

I need to log my logs somewhere that is:
1) designed to support getting logs from multiple places - e.g. whichever EC2 or other instance my server happens to be hosted today
2) separate from my worker instance so when that gets stopped and started it lives
3) supports proper log rotation, etc

If I have this then it supports my initial problem, but it actually also supports my bigger requirements around autoscaling and geos.

Stratos is an open source Platform-as-a-Service foundation that we've created at WSO2. In Stratos we had to deal with this early on because we support elastic auto-scaling by default.

In Stratos 1.x we built a model based on syslog-ng. Basically we used log4j for applications to log. So just as any normal log4j logging you would do something like:


Logger  logger = Logger.getLogger("org.fremantle.myApp");
logger.warn("This is a warning");


We automatically setup the log appenders in the Stratos services to use the log4j syslog appender. When we start an instance we automatically set it up under the covers to pipe the syslog output to syslog-ng. Then we automatically collate these logs and make them available.

In Stratos 2.x we have improved this.
The syslog-ng model is not as efficient as we needed, and also we needed a better way of slicing and dicing the resulting log files.

In the Stratos PaaS we also have another key requirement - multi-tenancy. We have lots of instances of servers, some of which are one instance per tenant/domain, and some which are shared between tenants. In both cases we need to split out the logs so that each tenant only sees their own logs.

So in Stratos 2.x (due in the next couple of months) we have a simple Apache Thrift interface (and a JSON/REST one too). We already have a log4j target that pushes to this. So exactly the same code as above works in Stratos 2.x with no changes. 



We are also going to add models for non-Java (e.g. syslog, log4php, etc).

Now what happens next? The local agent on the cloud instance is setup automatically to publish to the local central log server. This takes the logs and publishes them to an Apache Cassandra database. We then run Apache Hive scripts that slice the logs per tenant and per application. These are then available to the user via our web interface and also via simple network calls. Why this model? This is really scalable. I mean really, really scalable. Cassandra can scale to hundreds of nodes, if necessary. Also its really fast. Our benchmarks show that we can write >10k entries/second on a normal server.

Summary

Logging in the cloud isn't just about logging to your local disk. That is not a robust or scalable answer. Logging to the cloud needs a proper cloud logging model. In Stratos we have built one. You can use it from Java today and from Stratos 2.0 we are adding support to publish log entries just with a simple REST interface, or a super-fast highly scalable approach with Apache Thrift.




r

OAuth2 Introspection with WSO2 ESB and WSO2 Identity Server

The OAuth2 specification defines several parties: the Client, the Resource Owner, the Authorization Server and the Resource Server. Here is the (textual) diagram from the spec:



     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

                     Figure 1: Abstract Protocol Flow

One flow that is not defined by the OAuth specification is any flow from the Resource Server to the Authorization server to validate an existing Bearer Token (or other token). 
The spec says:
The interaction between the authorization server and resource server is beyond the scope of this specification.  The authorization server may be the same server as the resource server or a separate entity. A single authorization server may issue access tokens accepted by multiple resource servers.
In many cases the Authorization server offers an API to access this. For example, Google allows you to call a TokenInfo APIto validate tokens. Similarly Facebook offers an API to "debug" a token. The WSO2 Identity Server also offers an API, but (shock and horror) we don't document it yet. The ESB and API manager both utilize this API to validate OAuth2 bearer tokens. The ESB code is of course available, and with a quick look at the code and also the use of TCPMON it didn't take me long to reverse engineer the API. This Gist has a sample HTTP SOAP request against the WSO2 IS to validate a token:
It turns out that the OAuth Working Group at the IETF is working on this and has a draft specification available, using a RESTful service. They call this OAuth Token Introspection. I figured this would be easier (and more pleasant) to call from my Python code, so I knocked up a quick WSO2 ESB API mediation flow to convert from the RESTful API to the existing WSO2 SOAP-based API.
I know that Prabath and the security and identity team at WSO2 will soon add this useful REST API, but in the meantime, here is a quick hack to help you out. Please note you need to hardcode the URL of the IS and the userid/password into the ESB flow. Also I assume if you don't provide a token_type_hint then this is a bearer token. And here is the Gist showing a sample interaction: 




r

Internet of Things - protocols and access keys

I've just read this article from Mark O'Neill on the 10 concerns for the Internet of Things. Mark brings up some very interesting aspects and concerns. I'd like to comment on two of those: protocols and access keys.

His primary concern is protocol proliferation. I agree this is an issue. Mark explicitly mentions CoAP, MQTT, AMQP and XMPP. Interestingly he doesn't mention HTTP, which I have found to be heavily used by devices, especially the new generation of Raspberry Pi based systems. Many Arduino's also use HTTP.

I will admit to a strong bias. I think that MQTT is the best of these protocols for IoT devices, with CoAP a distant second.

Let's get XMPP out of the way. I love XMPP. I think its a fantastic protocol. Do I want to create XML packets on my Arduino? Er... nope. Even on 32-bit controllers, there is still the network traffic to consider: suppose I'm using a GPRS connection and I have thousands of devices deployed: minimizing network traffic is important for cost and efficiency, and XMPP was not designed for that.

AMQP is not an appropriate protocol for IoT devices and was not designed for that. It is designed for "the efficient exchange of information within and between enterprises". It was certainly not designed for lightweight, non-persistent, non-transactional systems. To that end, my own system (WSO2) will be providing efficient bridging for AMQP and MQTT to enable lightweight systems to get their data into wider enterprise contexts. I also demonstrated HTTP to MQTT bridging with the WSO2 ESB at the MQTT Interop held last week at EclipseCon.

How about CoAP vs MQTT. Firstly, CoAP is more appropriate to compare to MQTT-SN. It is UDP only, and designed to emulate a RESTful model over UDP. My biggest concern with CoAP is this: most people don't actually understand REST - they understand HTTP. If I had a dollar for every time I've come across supposedly RESTful interfaces that are really HTTP interfaces, I'd be a rich man! 

Interestingly, despite MQTT having been around for 10 years, the Google Trend shows that it has only recently hit the public notice:
However, as you can see, it has quickly overtaken CoAP. In terms of traffic, it is a clear winner: every Facebook mobile app uses MQTT to communicate with the Facebook servers.

The other area I'd like to comment on is access keys. I agree this is a big issue, and that is the reason I've been working on using OAuth2 access keys with MQTT and IoT devices. I recently gave talks about this at FOSDEM, QCon London, and EclipseCon.  The EclipseCon talk also covered a set of wider security concerns and the slides are available here. OAuth2 and OpenID Connect are important standards that have got incredible traction in a short period of time. They have evolved out of 10+ years of trying to solve the distributed, federated identity and access control problems of the Internet. 

In my presentation I strongly argued that passwords are bad for users, but worse for devices. Tokens are the correct model, and the OAuth2 token is the best available token to use at this point. There was considerable interest in the MQTT interop session on standardizing the use of OAuth2 tokens with the protocol. 

My personal prediction is that we will see MQTT and HTTP become the most-used IoT protocols, and I strongly urge (and hope) that OAuth2 tokens will become the de-facto model across both of these.







r

A rose by any other name would smell as sweet, but with no name, maybe not

The famous quotation from Shakespeare is that "a rose by any other name would smell as sweet". But what if the rose had no name. What if every time you talked about it, you had to come up with a description, you know that thing with the pretty pink petals, except sometimes they are red, and sometimes white, but it smells really nice, except some don't really smell and others do. You know the thing with multiple layers of petals except for the wild ones that only have one layer of petals.

Maybe not so sweet.

What about the other way round? You build a really cool system that works effectively and then it turns out that someone has named it? Now that is nice, and yes, your thing suddenly smells sweeter.

I've had this happen a lot. When we first started WSO2 we applied a lot of cool approaches that we learnt from Apache. But they weren't about Open Source, they were about Open Source Development. And when they got names it became easier to explain. One aspect of that is Agile. We all know what Agile means and why its good. Another aspect is Meritocracy. So now I talk about a meritocratic, agile development team and people get me. It helps them to understand why WSO2 is a good thing.

When Sanjiva and I started WSO2 we wanted to get rid of EJBs: we wanted to remove the onion-layers of technology that had built up in middleware and create a simpler, smaller, more effective stack. It turns out we created lean software, and that is what we call it today. We also create orthogonal (or maybe even orthonormal) software. That term isn't so well understood, but if you are a mathematician you will get what we mean.

Why am I suddenly talking about this? Because today, Srinath posted a note letting me know that something else we have been doing for a while has a nice name.

It turns out that the architecture we promote for Big Data analysis, you know, the one where we pipe the data through an event bus, into both real-time complex event processing and also into Cassandra where we apply Hive running on Hadoop to crunch it up and batch analyse it, and then store it either in a traditional SQL database for reports to be generated, or occasionally in different Cassandra NoSQL tables, you know that architecture?

Aha! Its the Lambda Architecture. And yes, its so much easier to explain now its got a nice name. Read more here: http://srinathsview.blogspot.co.uk/2014/03/implementing-bigdata-lambda.html




r

GNU Terry Pratchett on WSO2 ESB / Apache Synapse

If any of you are following the GNU Terry Pratchett discussion on Reddit, BBC or the Telegraph, then you might be wondering how to do this in the WSO2 ESB or Apache Synapse. Its very very simple. Here you go. Enjoy.
Loading ....




r

Treat For Legal Interpreters and an Archive for Translators As Well

OpenCourt is an experimental project run by WBUR, Boston’s NPR news station, that uses digital technology to make Quincy District Court more accessible to the public.

Full Article

r

Berkeley, UCLA, Harvard, MIT, Princeton, Stanford y Yale en Academic Earth

Si utilizás el buscador Google Chrome podés encontrar herramientas de mucho provecho. Acabo de toparme con la extensión en línea de Academic Earth, que ofrece el acceso gratuito a videos de los cursos y conferencias de las universidades más destacadas de Estados Unidos y en las materias más diversas. ENJOY KNOWLEDGE!

 
Podrás presenciar conferencias como, por ejemplo,
Language in the Brain, Mouth and the Hands
By Paul Bloom - Yale



Watch it on Academic Earth





r

Vocabulary.com: uno de mis últimos descubrimientos

No seré Indiana Jones, pero explorando Internet me siento como tal cuando encuentro algo que me fascina, como es el caso de este diccionario monolingüe inglés-inglés. Ciertamente, la función de autocompletar similar a la de Google lo hace veloz al momento de generar resultados. Sin embargo, en mi opinión, no es esa su característica más valiosa. Si para nosotros los traductores de profesión el contexto siempre es importante para encontrar el equivalente más adecuado, seguramente sabrán valorar el corpus lingüístico contextual que este diccionario genera en la columna derecha, y además ¡por áreas! So, enjoy!



r

Normas para la escritura científica


La ciencia en español no se escribe como en inglés

El lenguaje científico se distingue porque trata un campo concreto del saber y porque se suele dirigir a especialistas o profesionales de ese campo del saber, por lo que usa una terminología específica. Además de que los vocablos utilizados resulten extraños a un hablante lego en la materia, el significado de esos vocablos es preciso y objetivo, y puede ser distinto al que se conoce en el lenguaje común.

Hace ya años que el inglés se ha erigido como idioma de comunicación en las ciencias experimentales. Como consecuencia, cualquier investigador científico que quiera estar al día y divulgar sus conocimientos se verá obligado a leer, escribir y publicar básicamente en ese idioma, con lo que el hábito de comunicarse en inglés acaba corrompiendo su idioma materno con expresiones y usos anglicistas innecesarios, que se transmiten luego al resto de la población igualmente entendida con la que se interrelaciona—profesores, periodistas, científicos—, con lo cual entran fácilmente en circulación. El descuido con el que se trata el tema de la escritura científica en español es, por tanto, enorme a pesar de que también existen organismos y colecciones de reglas que orientan en el correcto empleo del español a la hora de traducir o crear un documento científico.

En las páginas de este pequeño manual interactivo se pretende ofrecer, tanto a profesores como a estudiantes, un marco conceptual y descriptivo en torno al lenguaje científico, de acuerdo con los parámetros de la ciencia. Nada nos gustaría más que servir de referencia para el estudio, producción y corrección de cualquier tipo de texto científico. Autor: Gonzalo Claros.

[Al pie se encuentran enlaces con más recursos, aunque no todos funcionan, y el archivo en PDF para imprimir].




r

¿Por qué hubo y no hubieron?

Por Carlos R. Ibacache I.
Miembro de la Academia Chilena de la Lengua
De todas las formas gramaticales, el verbo es el de más difícil uso para quien no habla español. Para quien lo habla, el error es de gramática elemental, que lo cometen personas de educación completa, profesionales de áreas diversas, pero en quienes más se nota, es cuando lo usan profesores, periodistas, parlamentarios y sobre todo entre los diplomáticos extranjeros. Es fácil percatarse de eso, cuando diplomáticos que hablan otros idiomas, son entrevistados.

Para explicar porqué "hubo" y "no hubieron", hay que comprometerse con la gramática. Veamos los siguientes ejemplos. Un espectador de fútbol dice: "hubieron faltas que el árbitro no cobró" o "hubieron muchas tarjetas amarillas". Se olvida o se ignora, que en los casos citados el verbo "haber" significando existir, es unipersonal y no debe concordarse con el sustantivo que lo acompaña. Las dos oraciones del ejemplo no tienen sujeto y lo que parece serlo, son en realidad complementos directos, "faltas", en el primer caso, "varias tarjetas amarillas", en el segundo. En tales situaciones, sólo se conjuga el verbo "haber" en la tercera persona del singular. Lo correcto, en consecuencia, es decir: "no hubo faltas" y "hubo varias tarjetas amarillas". Por analogía o por extensión, esto alcanza a otras formas donde el verbo "haber", está presente. Por ejemplo, se debe decir "había habitaciones" y no "habían habitaciones"; "ha habido muchos casos" y no "han habido muchos casos" o "habrá invitados" y no "habrán invitados". Siempre la tercera persona del singular.

La pregunta del millón. ¿Qué pasa con "hubieron"? ¿No existe? Sí, existe. Y si existe ¿cuándo se usa? Pues, cuando el verbo "haber" no está usado como unipersonal, sino en construcción conjunta con otro verbo. Por ejemplo, "ellos hubieron de correr cuando les llegó la hora". En este ejemplo, "haber no es unipersonal, hecho que se demuestra con la presencia del pronombre personal "ellos". Sería absurdo decir "ellos hubo de correr cuando les llegó la hora". No es difícil hablar o escribir con propiedad, si nos proponemos hacerlo, sobre todo cuando es verbo, "la palabra" por excelencia.

Fuente: Las Noticias




r

¡Guau! Buscador de bibliografía científica. Fuente infinita de información

SciVerse


r

Curso de traducción audiovisual en Santa Fe

El Colegio de Traductores de la Provincia de Santa Fe, 1ra. Circunscripción, ha organizado el curso TRADUCCIÓN AUDIOVISUAL, a cargo del Traductor Público Daniel Yagolkowsky destinado a traductores y estudiantes de traductorado de todos los idiomas.

DÍAS: 09 y 10 de marzo de 2012.

HORARIOS: viernes 09 de marzo de 18:30 a 21:30 h.
sábado 10 de marzo de 10.00 a 13:00 y de 14:00 a 17:00 h.

LUGAR: San Martín 2819, 2do. Piso, Santa Fe.

ARANCEL: Matriculados y estudiantes $ 190

Público en general: $ 230


INFORMES E INSCRIPCIÓN: San Martín 2819, 2do Piso, Oficina 6.

HORARIOS DE ATENCIÓN: Lunes, miércoles y viernes de 08:30 a 12:30 h; martes y jueves de 15:00 a 19:00 h.

Esperamos su participación y los saludamos cordialmente.

Comisión de Perfeccionamiento
CTPSF, 1.ª Circ.


PROGRAMA DEL CURSO DE TRADUCCIÓN AUDIOVISUAL (TAV)
(Versión abreviada para el Colegio de Traductores de Santa Fe, 1 Circunscripción, los días 9 y 10 de marzo de 2012).

Primera clase

La TAV como forma de traducción literaria. Formas de arte audiovisual: teatro y cine. Características de la TAV: forma de trabajo. Problemas de la traducción audiovisual: principio de simetría y principio de lógica interna: papel del traductor; sobretraducción y subtraducción. Las palabras soeces y escatológicas. Traducción del teatro: traducción de libretos; esfuerzo de imaginar los personajes. La traducción teatral como trabajo preproducción.

Traducción para cine: trabajo con guión técnico, lista de parlamentos, transcripción; importancia de conservar la relación imagen-sonido. Observación de los personajes: importancia para el registro. Nociones de lenguaje cinematográfico; nociones de terminología cinematográfica.Teoría del escopo. “Los primeros diez minutos”.

Traducción del humor: algunas propuestas básicas para encararla; gag visual, gag verbal; gag verbal –visual. Traducción de canciones: música incidental (extradiegética) y música dietética. Traducción de dibujos animados.

Ejemplos con material visual e impreso aportado por la cátedra.

Segunda clase

Doblaje: características generales. Indicaciones que el traductor debe dar para el caso del doblaje. El TCR (Time Code Register): su empleo para señalar cuándo se han de emitir los parlamentos.

Determinación aproximada de la longitud correcta del parlamento traducido.

Sincronización labial: cómo se hace.

Subtitulado: características generales. La gran pérdida de información: tensión entre qué traducir y qué desechar. Subtitulado para sordos.

Orototipografía de subtítulos: cómo dividir un texto completo en subtítulos, siguiendo las pautas de esa ortotipografía. Signos de puntuación: su importancia

Cálculo de subtítulos para películas que se ha de proyectar en sala y en TV. 
Nociones de operación de un programa para subtitulado.

Daniel Ricardo Yagolkowski




r

Amor a la literatura o Decálogo del traductor literario

Helena Cortés Gabaudan

Existen unos cuantos códigos deontológicos para traductores, pero muy pocos se refieren a la traducción literaria en particular. De entre ellos, uno de los primeros que se encuentra en Internet ni siquiera llega a reunir más de 7 normas, y las que incluye apenas tienen que ver con lo que realmente garantiza la calidad de una traducción literaria; es un mero listado de requisitos básicos del traductor en general y de aspectos legales (vid. el código deontológico del traductor literario redactado por el Consejo Europeo de Asociaciones de Traductores Literarios, ceatl). Ante esta carencia, hemos redactado, entre bromas y veras, un pequeño código personal para traductores literarios noveles, un decálogo que solo se basa en los cientos de horas solitarias, ingratas, desesperantes, pero siempre felices, pasadas frente a los textos de los grandes autores.

DECÁLOGO DEL BUEN TRADUCTOR LITERARIO

1. Humildad (o, lo que otros llaman fidelidad al texto). No trates de ser más brillante que el propio autor; en general, la mayor literalidad posible en fondo y forma es la mejor norma, aunque siempre creando un texto propio y sin caer en la burda copia. Si tienes siempre la tentación de mejorar el original, si te gusta adaptar y añadir cosas de tu cosecha o cortar y simplificar las partes complejas, escribe novelas, pero no traduzcas. Y, en particular, si eres poeta y te encanta traducir poesía, haz un esfuerzo: olvida tu condición por un instante y sé solo traductor. El lector no quiere leer tus versos.

2. Sensatez. Algunos escritores son gente rara, sí, ¡pero no tantos! En general no escriben estupideces ni insensateces. Así pues, si algo te sorprende sobremanera o parece no tener ningún sentido, es casi seguro que te has equivocado. Indaga. Seguro que algo se te está escapando.

3. Sentido estético. Traducir correctamente el contenido de la obra original puede ser relativamente fácil, pero no hay que olvidarse de la forma estética. Analiza a fondo los recursos estilísticos y estéticos empleados por el autor y trata de lograr lo mismo en tu propio idioma. De no ser así, tanto daría hacer un buen resumen del contenido como traducir la obra.

4. Paciencia. Si quieres traducir literatura no puedes tener prisa, es labor interminable de investigación, reescritura, relectura. Una recomendación: cuando hayas acabado de traducir, olvida tu versión en un cajón durante un tiempo suficientemente largo como para borrar de tu mente el original y haz una última lectura sin tener presente más que tu sentido lingüístico y literario: en este momento, y solo en éste, tómate todas las libertades que quieras con el texto hasta que a ti te suene bien, hasta hacerlo completamente tuyo, hasta que deje de ser una traducción y se convierta en tu texto: ganará en fluidez, no sonará a traducción y tendrá un estilo homogéneo.

5. Cultura. Si no tienes cientos de horas de lectura acumulados, si careces de una sólida cultura general y de cierta experiencia vital, si no conoces los clásicos y te aburre cualquier libro que no esté lleno de acción y diálogos, si nunca ganaste un premio de redacción en el colegio ni leías por las noches con una linterna debajo de las sábanas para que no te riñeran, si nunca viajaste a los países cuyas lenguas traduces, en definitiva, si no tienes gusto por la literatura: por favor ¡no te hagas traductor literario! Se gana más con los manuales de autoayuda y los libros de cocina.

6. Naturalidad. Es más importante que la obra suene bien en tu idioma y conseguir un texto natural y fluido, carente de todo artificio, que el que se cuele alguna disculpable metedura de pata. Y el que esté libre de error, que tire la primera piedra.

7. Buena pluma. Si no tienes talento para escribir con gracia y soltura en tu propio idioma no podrás ser nunca un buen traductor literario. Solo el que escribe bien traduce bien.

8. Dominio de tu lengua. Ser bilingüe ayuda mucho, pero no es garantía de buena traducción. Conocer bien la lengua de partida es un requisito técnico tan elemental como saber leer y escribir, pero no aporta nada más. Conocer bien la lengua de llegada, haberse perdido por sus más enrevesados vericuetos, saber jugar con ella, poder burlarse de ella: esa es la condición para ser un buen traductor. Busca a quien domine muy bien la lengua extranjera y tendrás, con suerte, un correcto traductor. Busca quien domine a
fondo su lengua materna y casi seguro que habrás encontrado a un buen traductor.

9. Actualidad. No envejezcas a propósito una traducción para acercarla a la época del autor. Piensa que los lectores contemporáneos del autor pudieron disfrutar de una lectura fluida y natural en el idioma de su tiempo. No castigues a tus lectores con una barrera idiomática artificial que solo provoca distancia. Para que el original siga siendo tan accesible como en su tiempo, cada generación necesita una nueva traducción.

10. Amor. O lo correcto no es igual a lo bueno. Cuántas traducciones hubo más o menos correctas que son perfectamente olvidables, por grises, planas, carentes de toda vida. Tal vez con un excelente adiestramiento se pueda conseguir un número aceptable de correctas traducciones. Pero siempre hubo, hay y habrá muy pocas buenas traducciones. En traducción literaria, traducción correcta no equivale a buena traducción. Porque también hacen falta grandes dosis de empatía. Si a pesar de haber renegado del texto más de mil veces, en el fondo has acabado sintiendo pasión por él y su autor, es señal de que eres un traductor. Si en caso de existir la máquina del tiempo lo que más te gustaría sería tener una entrevista con el clásico al que estás traduciendo, es señal de que eres un traductor. Si lo que más te gusta al llegar a casa es sentarte ante tu libro, y nunca te vas a la cama sin haber traducido al menos unas cuantas líneas —porque ése es el momento que más disfrutas del día— es señal de que eres un traductor. Y es que, además de profesión, hace falta un poco de vocación.

Estos diez mandamientos se encierran en dos: amarás a la literatura sobre todas las cosas y a los textos que traduces como a ti mismo.

Conclusión

Hacer traducciones literarias es lo más parecido a tener hijos: es una gestación larga y complicada, cuanto más se acerca el inexorable plazo de entrega más insoportable y más pesado se vuelve el asunto, hay momentos en que detestas al que te embarcó en aquel lío y te preguntas cómo pudiste aceptar; y llega siempre ese momento de extremo dolor, cuando tienes que sacar fuera como sea la cabeza del infante, en que te juras a ti mismo que nunca volverás a caer en semejante empresa… pero, en general, una vez que el niño ya está fuera y lo miras, solo queda amor incondicional por tan trabajoso producto, pese a los muchos fallos que pueda tener. Y es que ¿hay alguna madre que piense que sus hijos son feos? En resumen, la traducción literaria no es una profesión, no da de comer ni se aprende en la academia: es una vocación y un talento. Si no disfrutas con ella, no la ejerzas.

Fuente: La Linterna del Traductor




r

El traductor como proveedor de servicios y gerente de proyectos

Ponencia presentada por Julia Benseñor en el III CONGRESO LATINOAMERICANO DE TRADUCCIÓN E INTERPRETACIÓN, CTPBA, Buenos Aires, abril de 2001

Las exigencias actuales de los usuarios de traducciones han terminado por erradicar el tradicional perfil del traductor como profesional solitario y lo obligan a adquirir las destrezas de un gerente o líder de proyectos capaz de conformar equipos de trabajo que respondan a las necesidades de los clientes en materia de calidad, volumen de trabajo y plazos, incluidos otros requerimientos especiales vinculados con, por ejemplo, el diseño gráfico. El objetivo de esta ponencia es presentar: a) las competencias que debe desarrollar un traductor —más allá de la necesaria competencia lingüística— en su carácter de líder o integrante del equipo de trabajo, b) los criterios de organización interna del equipo, c) las relaciones que deben establecerse con el cliente antes de prestar el servicio, durante su desarrollo y a su término, y d) los cinco pasos que considero necesarios para garantizar al cliente un servicio de calidad.

A lo largo de veinte años de ejercicio de la profesión en el ámbito de la traducción técnica y científica para empresas, nuestro Centro de Traducción e Interpretación ha sido testigo de sucesivos cambios que indudablemente inciden sobre la labor del traductor. Dado que los cambios son parte de la vida, si se aspira a ejercer esta profesión a largo plazo, no deben aceptarse como un mal necesario sino que el profesional debe adaptarse y sacar la mayor ventaja posible de tal manera que aquello que en un principio se consideraba un problema se convierta en un potencial a su favor.

Conocer los cambios que se han ido presentando permite definir más claramente cuál es el perfil de traductor que hoy exigen las empresas.

Veinte años atrás, el traductor solía trabajar solo, con pocas herramientas documentales y de apoyo y, por lo general, tenía cierto margen para negociar los plazos de entrega con el cliente. Hoy, esta situación ha cambiado radicalmente, ya que el ritmo vertiginoso que caracteriza estas épocas se ha trasladado a nuestro ámbito y surgen así nuevas condiciones de trabajo. Uno de los caminos que permiten al traductor adaptarse a las nuevas demandas es el trabajo en equipo, apoyado en una organización eficiente. A modo de ejemplo, cabe destacar que en nuestro Centro llevamos adelante experiencias en las que coordinamos equipos que han llegado a contar con más de veinte integrantes.

Para sintetizar cuáles son las nuevas condiciones laborales que enfrentamos los traductores, mencionaremos tres exigencias básicas: a) urgencia, b) alto grado de especialización y c) volumen.

El cliente exige plazos de entrega perentorios, a tal extremo que a priori parece imposible cumplir con ellos. Sin embargo, no es así en virtud de las inagotables ventajas que nos proporcionan las actuales redes de comunicación, el acceso rápido a fuentes muy confiables de información y, tal como se mencionó anteriormente, el trabajo en equipo.

La segunda condición laboral que se presenta es el alto grado de especialización que
exigen los textos originales de las distintas disciplinas. En la actualidad, a diferencia de lo que sucedía años atrás, la mayoría de los profesionales, hombres de negocios o empresarios se manejan eficazmente a cierto nivel para leer un idioma extranjero como el inglés u otro idioma de amplia difusión en la Argentina. Por lo tanto, contratarán los servicios de un traductor sólo cuando se trate de textos sumamente complejos, cuando sea documentación sobre tecnologías de punta o cuando deba redactar algún informe en lengua extranjera para enviar al exterior. Por consiguiente, debemos hallar un camino posible para transformar este aparente escollo en una ventaja a nuestro favor, y tal camino puede consistir en integrar al equipo de trabajo a un especialista en la materia en calidad de revisor técnico de nuestras traducciones.

El tercer componente de las nuevas exigencias que el mercado actual le impone al traductor es la gran extensión de los textos. Si partiéramos del supuesto de que los traductores desarrollan su tarea profesional en forma solitaria, los plazos de entrega que hoy día requieren los clientes serían imposibles de cumplir. De allí que el trabajo en equipo se ha convertido en una necesidad antes que en una opción, ya que permite abordar mucho más volumen de trabajo en menos tiempo.

Ahora bien, estas tres condiciones de trabajo plantean desafíos ineludibles, puesto que no debemos olvidar que el traductor es un proveedor de servicios y que, tal como lo indica la palabra, "servicio" significa "acción de servir": servir a nuestro cliente, satisfacer sus necesidades y dar respuesta a sus requerimientos.

Para ello, es indispensable adoptar una actitud creativa que nos permita transformar estas exigencias en un potencial para crecer como profesionales. Se requieren determinadas habilidades para satisfacer estas demandas en tiempo y forma, es decir respetando las exigencias de calidad y cantidad que se nos imponen.

El traductor, pues, debe redefinir su profesión, partiendo de una nueva concepción. En nuestra opinión, el traductor del siglo XXI debe convertirse en lo que podríamos denominar un "líder o gerente de proyectos", con una gran capacidad de evaluación, de organización y de respuesta.

Omito deliberadamente referirme a las habilidades básicas que definen al traductor de todas las épocas, es decir al dominio de sus lenguas de trabajo, ya que el eje de esta exposición es explicar que el traductor independiente debe actuar como gerente de su propia empresa. Estas habilidades gerenciales no suelen enseñarse en las escuelas de formación pero hoy día resultan indispensables a la hora de competir en el mercado laboral.

Las habilidades gerenciales podrían reducirse a las siguientes: a) capacidad para hacer un diagnóstico de la situación, b) actitud flexible y creativa, c) capacidad de organización y d) claridad en la comunicación.

En primer lugar, debemos ser capaces de hacer un análisis o diagnóstico preciso a partir de la necesidad planteada por el cliente. Para ello, es preciso saber qué servicios podemos ofrecer y en qué condiciones, ya que el traductor puede ofrecer una amplia gama de servicios. Consideremos, pues, las hipótesis expuestas a continuación.

Ante un texto sumamente complejo, debemos preguntarnos si tenemos la preparación o formación suficiente para abordar satisfactoriamente su traducción. Los traductores — así como los usuarios de traducciones— suelen partir de la premisa de que basta con saber la lengua extranjera para poder encarar la traducción de cualquier tipo de documento. Sin embargo, cabe recordar que el traductor técnico y científico debe dominar tres lenguas: la lengua fuente, la lengua meta y la lengua de la especialidad de que se trate. Ante un texto con un nivel de complejidad que supere nuestras calificaciones será menester sumar a nuestro equipo a personas idóneas o especialistas en el tema.
Analicemos otro escenario: el texto original es muy extenso y la traducción se requiere con urgencia. Para poder hacer una estimación correcta, debemos partir de un profundo conocimiento de las propias competencias, por ejemplo, saber cuántas palabras aproximadamente somos capaces de traducir por hora en una determinada combinación lingüística. En el caso de que la necesidad del cliente superase nuestras posibilidades, debemos convocar a un equipo de profesionales que nos permita cumplir con tal requerimiento.

La segunda habilidad que se plantea es la flexibilidad y respuesta creativa. Ante la necesidad de un cliente potencial, podemos abrir el juego a distintas alternativas y no caer en el error de proporcionar una respuesta uniforme, puesto que estaríamos frente al falso supuesto de que todos los requerimientos, textos o situaciones de comunicación son idénticos. Por el contrario, dependiendo de la función que cumplirá el texto, podemos ofrecer distintas opciones. Por ejemplo, si nuestro cliente necesita la traducción de un artículo para analizar su contenido en el marco de un grupo de estudio, puedo grabar la versión traducida en cassette. El notable ahorro de tiempo que se logra —en virtud de que no será necesario escribir el texto, corregir las posibles erratas y, en suma, cumplir con todos los requerimientos propios de un texto escrito— nos permitirá satisfacer la necesidad del cliente atendiendo a la situación de comunicación de que se trata y, obviamente, a su presupuesto.

La tercera habilidad gerencial que debe desarrollar el traductor independiente es su capacidad de organización. Tal como se sugirió anteriormente, ningún traductor que trabaje solo tendrá posibilidades de sobrevivir en el mercado de las prestaciones de servicios a empresas. Es prácticamente una condición sine qua non saber formar equipos de trabajo. Pero todo trabajo en equipo exige una buena planificación, una adecuada distribución de funciones y un riguroso seguimiento de la totalidad del proceso. Las actuales normas de gestión de calidad exigen que se documente todo el proceso de producción de bienes y servicios, exigencia que cobra especial relieve cuando la responsabilidad de un trabajo determinado será compartida entre varios profesionales.

Por último, la claridad en la transmisión de la información es lo que garantizará que se cumplan las pautas de trabajo establecidas con el cliente y con los miembros del equipo. Como especialistas de la comunicación, este aspecto no debería presentarnos dificultades, pero tampoco debemos subestimar su importancia, ya que los malos entendidos incidirán negativamente en el desempeño del equipo, en nuestra relación con el cliente y en la relación con nuestros pares. La eficacia en la comunicación se logra principalmente a través de la comunicación escrita. Este procedimiento —si bien puede demandar más tiempo en un principio — está avalado por las normas de gestión de calidad que exigen un meticuloso registro de todos los procesos. Más aún, la eficacia que se logra a través de la comunicación escrita se traduce en un notable ahorro de tiempo.

El líder del proyecto, apoyado en las cuatro habilidades ya mencionadas, deberá ahora estructurar una organización con miras a satisfacer las necesidades del cliente. Estas necesidades o requerimientos son los denominados "factores externos", a saber: a) el tipo de servicio requerido, b) el tema o campo de especialización de que se trata, c) el volumen de la documentación, d) el plazo exigido y e) otros, tales como el uso de software especial y el procesamiento de gráficos.

A partir de estos factores externos, el traductor que actúa como líder del proyecto comienza a definir los "factores internos" mediante una adecuada planificación. Dichos factores son: a) los recursos humanos, b) la estructura del equipo, c) las pautas de trabajo, d) las herramientas documentales y e) el sistema de comunicación que se adoptará.

El primer aspecto es definir los recursos humanos que participarán en el proyecto, es decir, quiénes son las personas más idóneas por razones de dominio de idioma, velocidad y experiencia en el tema así como la cantidad de miembros que conformarán el equipo de trabajo.

Inmediatamente, cabe organizar la estructura interna del equipo, es decir, asignar el papel que desempeñará cada integrante sobre la base de la noción de "estaciones de trabajo". La propuesta de nuestro Centro, producto de nuestra experiencia en el campo editorial, consiste en dividir el trabajo en cinco etapas o estaciones, en donde la traducción propiamente dicha es sólo un eslabón en el proceso. Estas cinco estaciones de trabajo son: a) la gestión terminológica, b) la traducción propiamente dicha, c) la corrección de estilo, d) la revisión técnica y e) la corrección de galeras o proofreading.

La gestión terminológica es la etapa que nos permitirá garantizar el uso homogéneo, uniforme y sistemático de la terminología de la especialidad a lo largo de todo el trabajo, en especial cuando intervienen varios traductores. En virtud de la importancia que le cabe a esta etapa, es recomendable asignar a un profesional o equipo de profesionales la tarea de búsqueda y registro terminológicos. Esta estación de trabajo será la fuente de consulta permanente para la totalidad de los integrantes del equipo.

La etapa de la traducción propiamente dicha consiste en generar un texto en una lengua diferente de aquella en la que fue escrito el texto original. Este equipo, que trabajará asistido por el equipo de terminología, deberá contar con pautas claras de trabajo y un adecuado cronograma de entregas, el que debe planificarse con sumo cuidado.

La corrección de estilo es la estación de trabajo responsable de corregir con un criterio riguroso y sistemático todos los documentos generados por el traductor o equipo de traductores. Esta tarea debe estar a cargo de las personas más idóneas desde el punto de vista del manejo de la lengua.

La etapa de la revisión técnica deberá estar a cargo de una persona o equipo con un dominio profesional en el tema o especialidad de los documentos, que trabajará sobre un texto ya traducido y corregido desde el punto de vista lingüístico, de manera tal de poder abocarse exclusivamente a los aspectos relativos a la fraseología técnica del campo de que se trate.

Por último, la corrección de galeras es la estación de trabajo en la cual la traducción se lee ya como texto original y definitivo a fin de corroborar la ausencia de erratas, de problemas de formato o de cualquier otro inconveniente de tipo formal que pudiese presentarse a consecuencia de los cambios introducidos en las etapas anteriores

Estos pasos así individualizados constituyen la tarea integral del traductor y reproducen la división de tareas que se presenta en las editoriales que trabajan con originales extranjeros. Si bien en la traducción de textos breves suele intervenir un solo profesional, estas etapas deben cumplirse necesariamente si aspiramos a ofrecer a nuestro cliente un trabajo de calidad. No obstante, asignar estas distintas etapas o estaciones de trabajo a distintos profesionales, es decir, trabajar en equipo, nos permite ofrecer una mayor garantía de calidad y, por ende, constituye uno de los pilares de nuestra propuesta.

En cuanto a las pautas de trabajo, una vez definida la responsabilidad que se le asignará a cada miembro del equipo, será preciso establecer los plazos de entrega correspondientes a cada etapa, los criterios lingüísticos o formales que habrán de adoptarse, el modo en que se entregarán los trabajos parciales y la manera en que se identificarán las dudas pendientes, si las hubiere, entre otros aspectos.

En relación con las herramientas documentales, el coordinador o líder del proyecto tendrá a su cargo la responsabilidad de compilar el material complementario o de apoyo y distribuirlo entre todos o determinados miembros del equipo, de acuerdo con las distintas funciones que desempeñará cada uno. Por herramientas documentales debe entenderse documentos traducidos anteriormente, glosarios específicos, sitios confiables en Internet para acceder a la información sobre el tema, bibliografía de distinto tipo, etcétera.

Por último, el sistema de comunicación entre los integrantes del equipo y el coordinador debe estar previamente definido. En relación con este punto, las alternativas son diversas, desde las consultas por correo electrónico a las reuniones periódicas. El objetivo es garantizar la mayor eficiencia al menor costo de tiempo posible.

Tal como se ha expuesto, el líder o gerente del proyecto debe definir este cúmulo de procedimientos con anticipación para evitar esfuerzos vanos, duplicación de tareas, correcciones innecesarias; en suma, pérdida de tiempo.

Tras el análisis de la planificació n que el líder del proyecto debe llevar a cabo en relación con su equipo de trabajo, cabe ahora examinar someramente cómo debe planificar el traductor su relación con el cliente.

Esta relación puede dividirse en tres etapas: a) antes de iniciar la traducción, b) durante la etapa o proceso de traducción y c) con posterioridad a la entrega del trabajo.
En virtud de la necesidad de registrar los procesos, tal como exigen las normas de calidad que rigen en el mundo empresarial de hoy, y a fin de evitar conflictos innecesarios con el cliente, el gerente del proyecto debe presentar el presupuesto por escrito, en el que habrán de consignarse todos los detalles. A la vez, el presupuesto escrito y la confirmación por escrito por parte del cliente nos permitirán contar con una prueba fehaciente de la aceptación de las condiciones pactadas.

Una vez aprobado el presupuesto y antes de dar comienzo al proyecto, resulta conveniente entablar una relación efectiva con nuestro cliente, lo que facilitará notablemente nuestra tarea posterior. A través de una visita a la empresa, podemos obtener fuentes de información y material complementario sobre el tema, o bien ver una máquina o la planta misma. En la medida en que nosotros asumamos mayor compromiso con el cliente, el clie nte lo hará con nosotros y se dispondrá a colaborar. El usuario de la traducción debe comprender que todo lo que él pueda aportar como especialista en el tema redundará, en última instancia, en su propio beneficio.

Durante el proceso de traducción, en ocasiones es necesario hacer consultas al cliente. En ese caso, es aconsejable que —por razones de tiempo y eficacia— se le hagan llegar por escrito, por ejemplo por correo electrónico. De esta manera, se evita molestarlo en momentos inoportunos y se obtienen las respuestas por escrito, lo que nos asegura mayor precisión en el registro de la terminología. Un aspecto importante de esta política es que, a través de estos procedimientos, el cliente se convierte en un colaborador y miembro del equipo.

Ahora bien, para un traductor que se concibe a sí mismo como gerente o líder de proyectos, el trabajo no termina con la entrega de la traducción, ni siquiera con el cobro de sus honorarios. Por el contrario, es una buena práctica volver a contactarse con el cliente para averiguar si ha quedado satisfecho, qué observaciones tiene sobre nuestro trabajo, qué detalles considera perfectibles, etcétera. Esta etapa es parte de lo que se denomina el "servicio postventa". Más aún, esta retroalimentación nos permitirá crecer profesionalmente día a día. Luego, es nuestro deber compartir la información sobre nuestro desempeño que obtengamos del cliente con todos los integrantes del equipo de trabajo.

En relación con esta política de retroalimentación o intercambio de información el líder del proyecto debe asumir, como parte de sus tareas o su misión, el compromiso de retroalimentar a los miembros del equipo. Por ejemplo, es altamente beneficioso que el coordinador o líder del proyecto entregue al traductor la versión corregida por el equipo de corrección o revisión al finalizar el trabajo de manera tal que cada integrante pueda analizar el resultado de su propio desempeño. Así, se fortalece la noción de pertenencia al equipo y se garantiza el aprendizaje continuo de todos los participantes.

De este modo, hemos explicado cómo el traductor, a través de una adecuada planificación, está en condiciones de organizar su trabajo de manera tal de cumplir con las nuevas y exigentes demandas del mercado actual. Para ello, debemos comenzar por concebir al traductor como gerente de sus propios proyectos.




r

Taller a distancia de Traducción de textos al inglés

LA ASOCIACIÓN ARGENTINA
DE TRADUCTORES E INTÉRPRETES
(AATI)
tiene el agrado de presentar su

Taller a distancia de traducción de textos al inglés
coordinado por la Trad. Marita Propato
Inicio                       Lunes 16 de abril
Duración                 cuatro semanas
Modalidad              a distancia (exclusivamente a través de Internet y el foro de la AATI)
 Preinscripción y consultas: escribir a cursos@aati.org.ar
hasta el miércoles 11 de abril.

Socios AATI*, socios FAT* y alumnos de traductorados: AR$ 420
No socios residentes en la Argentina: AR$ 650
Futuros profesionales: AR $ 340
Socios AATI* y socios FAT* residentes en el exterior: US$ 105
No socios residentes en el exterior: US$ 170
*Importe válido únicamente para socios con la cuota al día.
Nota para traductores certificados por la American Translators Association: La asistencia a este curso otorga puntos para el programa de educación continua (CE) de la ATA.
 
Finalidad: Perfeccionar habilidades y estrategias de traducción al inglés.
Material: Se trabajará con material nuevo especialmente diseñado para cursos 2012, que incluirá una selección de textos auténticos periodísticos, de marketing y de comunicaciones institucionales para traducir al inglés. El curso puede tomarse como un módulo independiente o como un segundo módulo de práctica realizada en cursos anteriores.
Modalidad de las clases:
En la primera comunicación con los participantes, se establecerán las pautas de trabajo, se distribuirá el material para traducir y se definirán las fechas de entrega de las traducciones. La longitud de los textos será de 1000 palabras por semana. Los participantes tendrán un plazo de una semana para entregar sus trabajos. La profesora corregirá un porcentaje de los trabajos y reenviará las correcciones al total de los inscriptos al taller. La profesora corregirá al menos una vez el trabajo de cada participante.
Inquietudes: Los participantes podrán enviar todas sus inquietudes (sin límite) a la casilla de correo que disponga el profesor. Dos veces por semana el profesor contestará estas preguntas de manera general.


Trad. Marita Propato

Traductora Literaria y Científico-técnica en Inglés - Intérprete Traductora Pública matriculada en el CTPCBA

Certificada por la American Translators Association (ATA) en Inglés <>Español

Socia AATI con acreditación FIT 998

Traductora e intérprete freelance para IBM, Telecom, Pfizer, Quilmes, Credit Suisse y Tenaris, entre otras empresas e instituciones


VACANTES LIMITADAS
 
 
 
 





r

TRADOS + WordFast JUNIO en UCEL (Rosario)

TRADOS + Wordfast se dictará en la Universidad del Centro de Educación Latinoamericano durante el mes de junio de 2012.


El costo del curso es de $ 435. Incluye coffee break, material y certificado.

10% de descuento para Estudiantes de la carrera de Traductorado con la posibilidad de abonar $200 de entrada y $191 restantes previo a la entrega de certificados.

Requisitos:
Ser estudiante avanzado de Traductorado, o lógicamente, Traductor/a.

El curso dará inicio el día sábado 2 de junio y se dictará los días: 02/06, 09/06, 16/06.
El lugar de asistencia es en UCEL, Pellegrini 1332. Los días y horarios de clase son : sábados de 8:30 a 13:30 h.

Días y horarios para inscripción:
Lunes a viernes de 9 a 13 y de 17 a 20:30 h en la sede de UCEL, Pellegrini 1332, Rosario, Sección Tesorería.






r

Traducirnos


A partir de un poema del escritor inglés Philip Larkin, el autor de esta nota afirma: "Para traducir un texto de manera satisfactoria hace falta desearlo".

POR Andres Neuman


PHILIP LARKIN. Poeta, bibliotecario, novelista y crítico de jazz británico.

Recuerdo, traduzco a mi amado Larkin: “La noche no ha dejado nada más que mostrar:/ ni la vela ni el vino que dejamos a medias,/ ni el placer de tocarse;/ solamente este signo de tu vida/ caminando por dentro de la mía”.

Amor y traducción se parecen en su gramática. Querer a alguien implica transformar sus palabras en las nuestras. Esforzarnos en entender a la otra persona e, inevitablemente, malinterpretarla. Construir un precario lenguaje en común. Para traducir un texto de manera satisfactoria hace falta desearlo. Codiciar su sentido. Cierta necesidad de poseer su voz. En ese diálogo que alterna rutina y fascinación, conocimiento previo y aprendizaje en marcha, ambas partes terminan modificadas.

El amante se mira en la persona amada buscando semejanzas en las diferencias. Cada pequeño hallazgo queda incorporado al vocabulario compartido. Aunque, por mucho que intente capturar el idioma del otro, lo que al final recibe es una lección acerca del idioma propio. Así de seductora y refractaria es su convivencia. Quien traduce se acerca a una presencia extraña en la cual, de alguna forma, se ha reconocido. El texto le presenta un misterio parcialmente indescifrable y, al mismo tiempo, una suerte de familiaridad esencial. Como si traductor y texto ya hubieran hablado antes de encontrarse.

Traductores y amantes desarrollan una susceptibilidad casi maníaca. Dudan de cada palabra, cada gesto, cada insinuación que surge enfrente. Sospechan celosamente de cuanto escuchan: ¿qué habrá querido decirme en realidad? Amando y traduciendo, la intención del otro se topa con el límite de mi experiencia. Yo me leo leyéndote. Te escucho en la medida en que sepas hablarme. Pero, si digo algo, es porque me has hablado. Dependo de tu palabra y tu palabra me necesita. Se salva en mis aciertos, sobrevive a mis errores. Para que esto funcione, tenemos que admitir los obstáculos: no vamos a poder leernos literalmente. Voy a manipularte con mi mejor voluntad. Lo que no se negocia es la emoción.



Fuente: Revista Ñ http://www.revistaenie.clarin.com/literatura/Philip-Larkin-traduccion-gramatica_0_719928019.html.




r

How to Make More $$ without Really Trying


Have you noticed how different businesses are constantly inventing new ways to nickel and dime their customers? Airlines have first stopped offering free in-flight meals; then introduced a fee for checked-in luggage; they reduced the leg space of their seats and are now charging for "special" (exit row and bulkhead) seats that leave you less cramped at the end of a two-hour flight. At the same time, they tacked a host of fees to their ticket prices, so that now the amount of these fees (and government taxes) exceeds the nominal price of the ticket itself.

Other businesses are not bashful either in inventing sneaky ways to separate you from your money. A carton of orange juice, which used to contain half a gallon (64 oz) of juice now contains only 59 oz. A can of coffee, which at one time contained a pound (16 oz) now contains 12, 11, or 10.5 oz. And don't expect the price to go down for these shrinking quantities of products.
Gas stations are now adding a separate fee, in addition to their already sky-high prices, for credit card payments.

Some physicians are charging thousands of dollars in yearly fees just to keep you as a patient (no specific service included). The list may go on and on. Many of these and other businesses count on their customers being stupid or at least not paying attention to what they are being charged for and how much they are getting. Of course, they're also trying to compensate for their own rising costs (in part due to similar tactics by other businesses) and shrinking revenues due to the recession.
So, why don't we, translators, get imaginative and enhance our incomes by adding a few items to our rates? I envision my future bill to my clients to look something like this:
Translation
50.00
Availability fee
2.50
Keyboarding fee
3.00
Administrative fee
2.00
Billing fee
1.50
Software usage fee
1.75
Hardware usage fee
1.80
e-mailing fee
1.65
Alertness fee*
1.60
Innovation fee **
2.50
Bundling fee***
  2.00
Total payable
70.30

* That's for the espresso to keep me awake while I'm translating.
** That's for inventing all these possible and impossible fees.
*** Let them figure out what this means (you can use any random word from the dictionary here).

Feel free to add your own bright ideas to this list.

Thanks to witty Gabe Bokor from Translation Journal Blog.




r

Jornadas: 20.º Aniversario del Colegio de Traductores de Sta. Fe, 1.ª C.

Estimados matriculados, colegas y estudiantes:

Como muchos de ustedes sabrán, nuestro Colegio cumple 20 años. Por eso, les proponemos que en septiembre, nuestro mes aniversario, participemos de un intercambio enriquecedor de experiencias e inquietudes en las Jornadas sobre traducción, que hemos organizado para los sábados 8 y 15, en el salón de reuniones del Centro Comercial (San Martín 2819 - 2.º Piso).

Es una gran oportunidad para escucharnos, compartir experiencias y estrechar lazos entre colegas.
El sábado 15, una vez finalizadas las jornadas, tendremos la posibilidad de compartir un almuerzo de cierre para brindar por todos estos años vividos junto a la institución (costo no incluido en las tarifas de las jornadas). Pueden descargar el cronograma de actividades aquí.

Esperamos la participación de todos ustedes.

Saludos cordiales.

Consejo Directivo
CTPSF - Primera Circunscripción




r

CURSO TRADOS STUDIO Y MULTITERM en la ciudad de Santa Fe

Comparto con ustedes el curso que organiza el Colegio de Traductores de la Provincia de Santa Fe, 1.ª C.

Estimados colegas y estudiantes:

El CTPSF —Primera Circunscripción— tiene el agrado de invitarlos a participar del CURSO TRADOS STUDIO Y MULTITERM 2011 que hemos organizado en conjunto con TRANSeconomy para el sábado 20 de octubre de 2012 de 10:00 a 13:00 y de 14:30 a 19:30 hs. en la sala de informática de ATE, sita en el edificio de calle San Luis 2858, Santa Fe. El curso estará a cargo de la Trad. Graciela Atencio, cuya biodata adjuntamos con el programa.

Consultas e inscripción:

CTPSF - Primera Circunscripción - San Martín 2819, Piso 2 - Oficina 6

Tel.: 4565922

E-mail: coletradusafe@gmail.com



Fecha límite de inscripción: Martes 16 de octubre de 2012. CUPOS LIMITADOS



Aranceles

Matriculados en Colegios miembros de FAT y estudiantes: $ 180.

No matriculados: $ 230.


Los saludamos cordialmente.



Comisión de Perfeccionamiento
CTPSF - Primera Circuscripción




r

La partida de Miguel Llorens, el traductor financiero

Cuando comencé este blog por el año 2008, me propuse encontrar y compartir información valiosa para nosotros, los traductores junior, y por eso siempre tomé como referencia a muchos profesionales con más experiencia en esta profesión.

Uno de ellos es Miguel Llorens, el traductor financiero, que con su inteligencia y sarcasmo me resonaba un poco al Dr. House de la traducción.

Miguel es, tiempo presente, porque las personas que dejan huellas profundas, en algunos o no tanto en otros, no se van. Su energía deambula en los pensamientos de aquellos que mascullando sobre algún tema traductoril percibe el roce ligero de su impresión.

Por eso nos encontraremos a la vuelta de la esquina o de algún término enrevesado.




r

¡Feliz Día Traductores!





r

Training for legal translators. Part IV. Make at least one big study commitment.

This is the last part of a series on training for legal translators. See the first post here. To put yourself on the path to becoming a good legal translator, you need to make one big study commitment. A big study commitment is anything that takes at least a year, challenges you, and costs a lot of […]




r

Translating notary terms 1: What do notaries do?

In Spain and other civil law countries, you seem to need a notary for anything of gravity. You buy a house, you need a notary. You inherit some money, you need a notary. You start a company, you need a notary. The list goes on. What do notaries do in common law countries? So little […]