yaco

Poppler is a PDF rendering library used in evince and okular.
In yaco we are working in evince accessibility and evince uses poppler, so we are working in poppler too.
Poppler does not make table selection in "order". It detects tables as columns, because poppler uses distance between text to decide what is a column so tables are selected in column order when the "logic way" is as rows.
Other problem in selection caused by that heuristic is when you have a pdf with near columns or text with spaces.
We looked at acroread to see how it does columns and tables selection and we realized that it selects text in "order", I mean, in the order that you put it in pdf file. To see that we created a text pdf file with inkscape.
So the selection logic is simple, we select the nearest word to the first selection point and the nearest word to the last selection point, and every word between that two words (in text order, no matter where the words are at screen) is selected too.
I have implemented that logic and it seems to work better that current one. I made a video to show the new logic implemented in action:
The first evince uses old poppler selection, and the second one uses the new poppler selection implementation. The pdf file used to make the video is here. That pdf was created with inkscape and have two text columns, in each column there are a lot of spaces between words to confuse old poppler selection. There are two tables too, the first one, in row order, and the second one in column order.
You can see in the video how the new selection algorithm selects tables in "order", the first one in rows and the second one in columns. That is the wright order because we insert in that order.
The new selection algorithm makes evince accessibility works better because it uses poppler selection to get the pdf text to expose in atk interface.
The new algorithm is simpler than the current one. The hardest part was the right to left selection, because words are ordered in pdf from left to right, so we need to treat in a different way when the text is in RTL.

Desde principios de año estoy trabajando en yaco. Yaco es una pequeña empresa sevillana que se dedica a prestar servicios de consultoría y desarrollo de software libre y sobre todo desarrollo web con python tanto plone como django.
El funcionamiento de la empresa es parecido al de Emergya (empresa en la que estuve trabajando durante ocho meses) e incluso comparten una historia común, sin embargo tiene una serie de diferencias, por ejemplo emergya es prácticamente el doble de grande que yaco, y afronta casi todo tipo de proyectos, sin embargo yaco está más enfocada o especializada en el desarrollo de aplicaciones web.
Una empresa al fin y al cabo es un conjunto de empleados, y en esta empresa hay gente muy buena y muy inquieta, y por parte de la dirección se les permite pensar, opinar y desarrollarse. Un ejemplo de esto es el "día de proyectos personales" que es una iniciativa nueva de este año y que pretende brindar a los desarrolladores un día al mes para dedicar a desarrollar un proyecto propio. Es decir, que la empresa te dona parte de su tiempo para que lo dediques al proyecto software libre que a ti te parezca. Algo similar a lo que se hace en google, pero con menos recursos, por algo se empieza.
Pues bien, en principio voy a dedicar estos días de proyectos personales a seguir desarrollando sweetter y que no muera el proyecto. Mi idea principal es refactorizar todo el código, y corregir fallos que ahora que estoy desarrollando en django estoy descubriendo, y posteriormente surtir al proyecto con una serie de plugins útiles y empezar a buscarle rentabilidad o utilidad primero dentro de yaco, y después hacia nuestros clientes.
Y ya que estoy hablando de yaco, voy a contar las cosas que me gustan de trabajar aquí:
- Trabajo desarrollando en python y con software libre
- Hay gente con mucha experiencia e ideas interesantes, el equipo de trabajo es ideal y se puede trabajar de manera dinámica y ágil
- Los empleados están organizados, hay un delegado de personal que representa al conjunto de los empleados y todos conocen sus derechos
- Horario flexible y ajustable a tus necesidades
- La oficina está en el centro y puedo ir patinando
- La oficina es un lugar genial donde trabajar, está muy bien decorada, con las paredes pintadas con monigotes, hay una terraza, un sofá, en definitiva, se está como en casa
- Tenemos un futbolín y una wii en la oficina
- Hay comida y bebida gratuita en la oficina
- Cada vez que se consigue un proyecto nuevo hay desayuno gratis para todos, más conocido como campanazo, porque hay una campana que se toca cuando se consigue el proyecto.


