Jaime Gómez-Obregón Profile picture
Mar 29, 2022 39 tweets 12 min read Read on X
A continuación voy a explicar cómo descargar la Base de Datos Nacional de Subvenciones (BDNS) desde su portal oficial del Ministerio de Hacienda: infosubvenciones.es.

✅ El portal ofrece un buscador limitado
⛔ Pero no permite descargar los datos

¡Vamos allá! 💪

🧵…
El portal oficial tiene notables limitaciones. Entre ellas destacan dos: los límites a la descarga de datos y el tiempo de respuesta del portal.

1️⃣ La funcionalidad de descarga que ofrece el Ministerio simplemente no funciona si tu búsqueda comprende más de 10.000 resultados.
El Ministerio podría haber paliado parcialmente esta limitación permitiendo la exportación de los primeros 10.000 resultados de las búsquedas que arrojen más. En vez de esto, ponen al ciudadano en un callejón sin salida: si hay muchos resultados, no puedes exportar ninguno. 🤷
2️⃣ La segunda limitación más prominente del portal oficial es su penosa velocidad de respuesta.

Una búsqueda de beneficiarios puede tardar CASI TRES MINUTOS en completarse. Algo tan común como pasar de página se torna una tarea exasperante.
⚠️ Esto es un torpedo al derecho de la ciudadanía a acceder a los datos para controlar la actuación de los gestores públicos. El mecanismo habilitado para ello es tan lento que en la práctica es inusable. El ciudadano tira la toalla; desiste de ejercer su derecho.
Nótese que la BDNS es un tesoro que comprende una ingente cantidad de información pública:

✅ 10,5 millones de subvenciones
✅ 350.000 convocatorias

Sin embargo, el valor de estos datos está cautivo tras un sitio web cutre y lento.

¡Se hace preciso liberar estos datos! 👇
El portal oficial ofrece, en esencia, dos tipos de registros: convocatorias y concesiones.

1️⃣ Cursando una búsqueda vacía en la pestaña «Convocatorias» provocamos la carga de la primera página de una consulta que devuelve, paginados, la totalidad de los resultados.
Cada página contiene 50 resultados, lo que hace un total de 7.015 páginas. Pero tal y como decíamos arriba…

❌ Los enlaces de descarga no funcionan
❌ La lentitud del servidor imposibilita iterar por todas las páginas

Entonces, ¿cómo podemos descargar estos datos? 🤔
La búsqueda provoca una petición XHR al servidor del Hacienda. Podemos copiarla para analizarla y replicarla con cURL en la línea de comandos.
De los siete parámetros que la aplicación envía al «endpoint» de búsqueda, identificamos inmediatamente dos:

✅ «nd», que contiene un «timestamp», esto es; el número de milisegundos transcurridos desde el 1 de enero de 1970.
✅ «rows», que controla el número de filas por página.
⚠️ Nótese que los términos que definen la búsqueda, y que hemos dejado en blanco, no viajan en la petición del usuario, sino que son mantenidos en el servidor a través de una variable de sesión que el servidor rescata a partir de una «cookie» que instala en el navegador.
Esta singular implentación es innecesariamente compleja y tiene, entre otras, las siguientes consecuencias negativas:

👎 Dificulta la descarga automatizada de resultados y, por lo tanto, la exploración por la ciudadanía de estos datos desde fuera del portal oficial.
👎 Impide que los buscadores como Google encuentren las subvenciones y sus beneficiarios.

👎 Provoca la caducidad de las peticiones, que solo funcionarán mientras no expire la variable de sesión en el servidor.

👎 Imposibilita enlazar y compartir los resultados de una búsqueda.
👎 Supone un sobreconsumo de recursos en el servidor del Ministerio, al obligarlo a gestionar el estado («state») de cada usuario que utilice el portal (!).

Esto impacta en el rendimiento del servicio y, a la postre, promueve los exasperantes tiempos de respuesta observados.
La aplicación web de Hacienda ofrece al ciudadano la posibilidad de obtener los resultados en páginas de 50, 100 o 200 resultados.

El desplegable del sitio web simplemente controla el valor del parámetro «rows» que, como hemos visto, se envía en la petición XHR al servidor.
Se considera una mala práctica de programación y un riesgo de seguridad no comprobar en el servidor los valores recibidos del usuario, pues estos podrían haber sido manipulados para provocar resultados no contemplados.

Que es justo lo que va a suceder en el siguiente tuit. 😉
Y es que aunque el interfaz de usuario del buscador de Hacienda solo permite solicitar páginas de 50, 100 o 200 resultados, en la práctica nada nos impide solicitar una página con 50.000.000 de ellos.

Obtenemos así, y en una única consulta, las 350.000 convocatorias de la BDNS.
Bajo la propiedad «rows» del fichero JSON resultante encontramos tantos objetos como convocatorias de subvenciones constan en el portal oficial.

Exploramos uno cualquiera:
La conversión del fichero JSON a un equivalente CSV explorable con herramientas como Excel o LibreOffice es trivial:
2️⃣ Vamos ahora con la descarga de los beneficiarios de las subvenciones, sin duda la parte más valiosa del conjunto de datos.

Es tentador proceder igual que con las concesiones, pero esto no funcionará.

¿Por qué?
El servidor del Ministerio tiene configurado un «timeout» que corta la corta la conexión HTTP antes de que le dé tiempo a recuperar y servir los 10,5 millones de registros.

‼️ He podido comprobar que este «timeout» está configurado con un valor excepcionalmente alto: UNA HORA.
Examinando las cabeceras de las respuestas HTTP deduzco que el contenido parece estar siendo servido con Microsoft IIS.

✅ El «timeout» predeterminado de IIS son 110 segundos.
⚠️ El Ministerio tiene un timeout 33 veces superior.

¿Cuál es la razón?

🔗 docs.microsoft.com/en-us/previous…
Personalmente, nunca había visto un servidor web (puertos 80 o 443) mantener abierta una petición HTTP durante tanto tiempo. Nótese que incluso la documentación oficial de Microsoft previene de asignar valores demasiado elevados a esta opción de configuración.
Y es que este «timeout» es una medida preventiva, pensada para evitar que un usuario arbitrario de internet pueda drenar recursos del servidor monopolizando durante más tiempo de lo necesario los canales de comunicación.
El «timeout» es como el airbag del coche, y asignarle un valor tan excepcionalmente alto como una hora equivale, en la práctica, a desconectarlo.

Pero, ¿por qué lo han hecho?
Mi conjetura es que el portal de la BDNS funcionaba bien cuando hace años lo desplegaron y no había aún un número abultado de subvenciones.

Pero es un sistema vivo, que cada día recibe nuevas convocatorias y cientos de nuevos beneficiarios…
El pobre diseño de la aplicación provoca que el rendimiento se desgrade proporcionalmente con el número de registros de la BDNS. De tal modo que cada día, y durante años, el servicio ha ido funcionando un poquito más despacio que el anterior.
📅 Esta progresiva degradación del rendimiento eventualmente debió de provocar, un buen día, que el tiempo de respuesta de la base de datos superara el tiempo de «timeout» del servidor.

El día que esto sucedió, el portal dejó de funcionar.
Y en lugar de actuar sobre la causa del problema —la arquitectura de la aplicación—, alguien decidió actuar sobre la consecuencia y simplemente incrementar el «timeout» del servidor a cinco minutos. Luego a media hora. Y finalmente… una hora. 🎉

Hay hasta memes sobre ello. 🤣
Esta colección de particularidades nos obliga a emplear una aproximación distinta a nuestro objetivo de descargar los beneficiarios de las subvenciones para auditar su reparto.

Vamos a abordarlo con dos «scripts» de Bash. 💪
En el primero consignamos un valor de compromiso para el tamaño de las páginas: 50.000 es una buena cifra, pues provoca respuestas que no disparan el «timeout», al tiempo que reduce el número de iteraciones necesarias a poco más de 200, que es un número asumible.
Utilizo «xargs» para acelerar el proceso paralelizando las consultas. Decido cursarlas de cinco en cinco para no sobrecargar el servidor.

El segundo «script» genera el (absurdo) «timestamp» y consuma la descarga emulando la petición cURL que antes inspeccionamos en el navegador.
Lanzamos el primer «script», que a su vez invoca sucesivamente el segundo, una vez por cada página, descargando 50.000 beneficiarios cada vez.

En lo que tarda el proceso nos bajamos al Scumm Bar y nos pimplamos dos jarras de grog pirata. 🍻😃
Acabadas las descargas, es conveniente transformar cada fichero JSON en su equivalente CSV y concatenarlos todos para reunir todas las concesiones de subvenciones en un único fichero de +5 GB.
Hasta aquí he detallado cómo descargar la totalidad de los contenidos públicos de la Base de Datos Nacional de Subvenciones con la finalidad de controlar la actuación de los gestores públicos.
Cuando la semana pasada hice esto mismo con el Registro de Licitadores, la respuesta del Ministerio fue «tumbar» el servicio, que a fecha de hoy sigue caído.

Es indiferente, porque ya había liberado sus datos:
🔗 docs.google.com/spreadsheets/d… docs.google.com/spreadsheets/d…
El resquicio hoy expuesto nos permite a los ciudadanos descargar todos los datos para explorarlos. Si el Ministerio lo tapa para impedir el acceso y no habilita un mecanismo alternativo eficaz, publicaré un segundo método que también he localizado, y que de momento me reservo. 😙
Más avanzada la semana publicaré todos los datos en GitHub, así como un Discord para organizarnos. Y un método para disociarlos y anonimizarlos, pues es imperativo proteger a las personas, sus circunstancias y sus datos.

¡Esto es lo que propongo! 👇
Y termino este episodio 🙂 con el primer tuit de esta disección, por si con tu retuit quieres ayudar a difundirlo. 👇

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Jaime Gómez-Obregón

Jaime Gómez-Obregón Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @JaimeObregon

May 30
🔴 El Gobierno Vasco ha enviado al Parlamento la memoria del gasto en campañas de comunicación institucional.

⚠️ Es un documento importante en una democracia, porque rinde cuentas de buena parte del dinero público que sale del Gobierno hacia los medios de comunicación.

🤦 Como todos los años, el documento oficial contiene errores y partidas mal sumadas

🚨 Pero el verdadero problema no son los errores, sino las trabas que los parlamentarios y la ciudadanía se encuentran al ejercer revisar los datos.

❓ ¿Cuánto dinero se ha llevado El Correo Vasco? ¿Y Gara? ¿Y Noticias de Álava? ¿Y COPE, Facebook o la SER?

☹️ El documento oficial es un ladrillo PDF que no responde a estas preguntas.

😩 ¿Quién en su sano juicio recorrería sus 237 páginas sumando, partida a partida, los cientos de campañas contratadas a cada medio?

⚠️ Esto es un ejemplo de «transparencia translúcida» gubernamental: «te doy un océano de datos, pero en un formato con el que no puedes hacer nada». Formalmente cumplen la ley, pero ¿de qué sirve?

👨🏻‍💻 En 2023 programé una herramienta que procesa todas estas memorias para ayudar a los parlamentarios vascos —y a la ciudadanía— a auditar el dinero público que va a los medios de comunicación.

📅 Justo ahora acabo de actualizarla con los datos de la última memoria, recién publicada (2024).👇Image
Lo tenéis en , que ya suma casi 2000 campañas de publicidad institucional explorables con un cómodo buscador y totales agregados por cada medio.gobiernovasco.marketing
Aquí va un ejemplo de partida mal sumada.

El error en el total parcial lo arrastran al total de la inversión de la campaña (en la imagen, arriba). Así que las cifras oficiales son incorrectas.

Estos errores los encuentra mi programa, pues encontrarlos a mano sería extremadamente tedioso.

El Gobierno Vasco debería publicar estos datos en un formato abierto y estructurado que permita a la ciudadanía realizar análisis. PDF no sirve.

Si un particular como yo puede hacerlo, ¿por qué el Gobierno Vasco no lo hace?Image
Read 4 tweets
Mar 27
🎉 Un pueblo de Ávila ha pillado 476.000 euros de fondos NextGenerationEU y han tenido una idea genial:

Intentar lo mismo que ya fracasó en Logroño, Utrera, Benicarló, Antequera, Sevilla, Vizcaya, Torrelavega, Toledo, Vigo, Altea, Huelva, Cáceres, Brunete, Badajoz, Algeciras, Ciudad Real, Alzira, Cartagena, Valladolid, Dénia, Murcia, Beniel, Almería, l'Alfàs del Pi, Benavente, Cuenca, Soria, Lugo, Jaén, Ceuta, Burgos, Manacor y Ponferrada.Nace 'Marketplace La Adrada' para apoyar la digitalización del comercio
Esto ya era un escándalo en 2021, cuando estudié más de un centenar de estas inversiones y escribí y envié a esto a un diario nacional para visibilizarlo e intentar que dejara de suceder:

jaime.gomezobregon.com/la-pandemia-de…
¡Qué fabulosos ingredientes!

1️⃣ Exceso de dinero público.

2️⃣ «Expertos» en políticas de digitalización cuya máxima referencia intelectual es la PCWorld.

3️⃣ Periodismo local subvencionado incapaz de todo análisis crítico.

2021 👇
jaime.gomezobregon.com/la-fiebre-de-l…
Read 5 tweets
Mar 10
El Servicio Público de Empleo de la Junta de Castilla y León tiene 6,8 millones para formación y está ofertando cursos de:

— Flash
— Dreamweaver
— Borland
— Joomla!

¡Que alguien les quite urgentemente el dinero público, por favor! Image
Image
Image
Image
En comparación, sus cursos de Oracle Database 10g (2003), parecen modernos. 😂 Image
Es la convocatoria 2023/2024 de su catálogo de acciones formativas en transformación digital y están ofertando tecnologías obsoletas e incluso desaparecidas.

🔗 infosubvenciones.es/bdnstrans/GE/e…Image
Read 10 tweets
Nov 28, 2024
😃 ¡Mañana es el día! Intervengo en el Congreso sobre el uso de datos en la definición de políticas públicas que organiza en Mallorca la Escuela Balear de Administración Pública. ¡Muchas gracias por invitarme!

🧵 Un breve hilo… 👇Image
Es la oportunidad de explicar de tú a tú a un auditorio de servidores públicos la importancia de la transparencia y los datos abiertos.

¡Aunque la mayoría ya lo saben! Así que mañana trataré de darles más argumentos para que peleen esto en sus organismos y con los políticos. Image
Tengo que resumir cinco años de trabajo en hora y media. ¡Llevo 88 páginas! Pero no será un ladrillo, sino todo lo contrario: ¡nos vamos a reír! Mirarse al espejo y reírse del reflejo es una sana actitud para abordar cualquier proceso de mejora. Image
Read 11 tweets
Aug 16, 2024
‼️ Vienen grandes cambios y es importante que sepas lo que va a pasar

¡Cuántas veces nos quejamos de servicios públicos digitales mal diseñados! Trámites terribles que luego todos tenemos que padecer y ya es casi imposible cambiar.

Ahora está en ciernes un cambio drástico en la forma de facturar en España. Afecta a más de tres millones de empresas y autónomos, pero también a ti, a mí y a todos, porque todos somos consumidores y recibimos facturas.

Y tal como se está planteando, esto va camino de ser otra «web de Renfe» de la que estaremos lamentándonos durante años.

👉 Pero esta vez los hechos aún no están consumados
👉 Los cambios no están en vigor todavía
👉 Estamos a tiempo de actuar ‼️

Como en todo lo que escribo, no encontrarás aquí partidismo, ideologías ni política. Esto no va de colores ni siglas. No es eso. Va de corregir el rumbo para aprovechar unos cambios normativos que —si se despliegan bien— podrían tener un impacto fabuloso. Va de mejorar el país.

📰📺 He contactado con periodistas de varios medios de comunicación relevantes. Ninguno se ha interesado por este asunto. ¿Ha abdicado el periodismo de su función de controlar el poder?

A continuación voy a hablarte de facturación electrónica, fraude en el IVA y reporte fiscal. Quizá te parezca un mundo gris, pero te aseguro que nos afecta a todos. Es por ello que voy a utilizar un lenguaje asequible y a omitir los detalles, para no perder de vista lo importante. Es un problema complejo que no voy a infantilizar, aunque sea al precio de que algunos se queden por el camino.

Así que si solo quieres actuar sin conocer el meollo… puedes saltar directamente al último tuit de este hilo.Verifactu
👉 El punto de partida ✨

Vienen grandes cambios a la forma de emitir y recibir facturas en España. Han sido introducidos por dos leyes recientes:

1️⃣ La Ley Antifraude (2021), que busca reducir el fraude fiscal controlando, entre otras cosas, que los programas de facturación no permitan ocultar ingresos.

2️⃣ La ley Crea y Crece (2022), que busca facilitar la creación de empresas, reducir obstáculos regulatorios y luchar contra la morosidad.

Se ha escrito mucho sobre estos cambios normativos. Pero todo lo que leerás en internet se queda en las leyes aprobadas, y siempre desde el ángulo teórico y jurídico. ¡Y las leyes están muy bien! El problema que nos viene encima no está en las leyes.

El problema está en los reglamentos que se están desarrollando para poner estos cambios en marcha, y que ignoran peligrosamente el follón que se va a montar y el coste que tendrá. Y que es urgente revisar, porque nos dirigimos a un caos que va a afectar a todo el tejido productivo del país.

Para escribirte este hilo con rigor y precisión me he sentado varias veces con una de las personas mejor informadas sobre la nueva normativa de facturación electrónica y reporte fiscal: Vicente Alciturri, vicepresidente de @CONETIC. Además de amigos, Vicente y yo somos ambos técnicos y sabemos lo que es montar una empresa y facturar. Nos conocemos desde hace veinte años y hemos coincidido en Conetic y otros foros.

¡Vamos allá!Comparación entre la ley (una jugosa hamburguesa) y el reglamento (un triste bollo con algo insípido dentro).
✨ La teoría 🦄

Si eres una empresa o autónomo, pronto dejarás de enviar y recibir tus facturas por correo en PDF. Porque va a ser obligatorio emitir facturas electrónicas, depositarlas en una plataforma digital pública e informar inmediatamente a la Agencia Tributaria (AEAT). Emitir, Depositar e Informar.

1️⃣ Emitir. Para facturar solo vas a poder utilizar programas de facturación capaces de generar ficheros XML en un formato normalizado. Olvídate de facturar con una hoja de cálculo o un ERP propio o anterior a las nuevas normas.

2️⃣ Depositar. Ya no enviarás tus facturas solo por correo electrónico. Las depositarás instantáneamente en la Solución de Plataforma Publica de Facturación Electrónica (SPFE). Y de allí las recogerán tus clientes. ¿Conoces el FACe que ya se usa para facturar al sector público? Pues algo así va a ser ahora obligatorio también para el sector privado. Empresas y particulares.

3️⃣ Informar. Por cada factura emitida notificarás inmediatamente a la AEAT del IVA de la operación y de todo lo necesario para identificarte a ti y, en general, también a tu cliente. El fisco estará informado ✨inmediata y automágicamente✨ de tus ventas. Esto es el reporte fiscal y se realizará a través de otro nuevo sistema público digital: Verifactu.

Vamos, que con tu próximo gin-tonic te darán un tique con un código QR generado en el TPV del garito por un programa declarado ante Hacienda que habrá enviado a la Agencia Tributaria un reporte de la transacción antes de que a ti te dé tiempo a alzar el cáliz y libar el elixir.

¿Y cuál es el problema con todo esto? ¡Ninguno! Servirá para reducir el fraude fiscal, controlar la morosidad y optimizar procesos administrativos en las empresas que ahora son muy ineficientes. Y, además, es una oportunidad para reducir la burocracia. 🎉

Otros países europeos ya han puesto en marcha sistemas parecidos.

Entonces, ¿por qué estás tan preocupado, Jaime?Esquema de la relación entre los componentes de Verifactu entre ellos y con la AEAT.
Read 7 tweets
Jul 11, 2024
5️⃣ IDEAS para la transformación digital de España 💡

Yo no sé de política, pero he hecho toda mi carrera profesional en la tecnología. Incluyendo fundar, desarrollar y vender una empresa tecnológica.

Aquí van mis propuestas para mejorar nuestro país. 🧵👇
1️⃣ Poner en marcha un Equipo de Desarrollo de Servicios Digitales.

Dotarlo de presupuesto y nombrar a alguien completamente ajeno a la Administración para que arranque y lidere un equipo con programadores y diseñadores de productos y servicios digitales.

Personas venidas de la empresa privada. Con generosos salarios. Lideradas por un técnico, no un político.

👉 Algo como Servicios Digitales de Aragón, pero de ámbito estatal. Y dándoles total libertad. O como lo que ha hecho Mercadona con Mercadona IT.

El Ministerio lo financia y se quita del medio.
2️⃣ Desarrollar «kits» verticales de código abierto.

⭐️ En España hay 8132 ayuntamientos —la mayoría pequeños— y cada uno contrata su sitio web, sede electrónica y gestor de expedientes cómo y dónde puede.

⭐️ También hay 19.184 centros educativos públicos, cada uno con un sitio web contratado por ahí a un proveedor local.

⭐️ Y 13.122 centros de salud públicos, 3.739 centros de mayores…

¿Qué sentido tiene que cada entidad pública contrate su tecnología por su cuenta? ¡Tropiezan una y otra vez con los mismos obstáculos! Organizaciones parecidas tienen necesidades parecidas.

El Equipo de Desarrollo de Servicios Digitales construiría…

— Un «Kit» de web municipal. Con su gestor de contenidos (CMS), su perfil del contratante, su directorio, su cartografía del IGN, sus textos legales…

— Un «Kit» de centro escolar. Con su propuesta de arquitectura de la información, su CMS, su área privada para familias, su herramienta de envío de boletines…

Y así con todo: «kit» para centros de atención primaria, «kit» para centros de mayores, «kit» para…

Cada kit proporcionaría, además de la tecnología, también recursos de diseño, procedimientos de buenas prácticas, instrucciones de despliegue, materiales formativos para el mantenimiento… Un trabajo integral y bien hecho™️.

Y que cada entidad pública descargue el kit y lo parametrice o adapte a sus propias necesidades. Que serán muy parecidas a las de otras entidades del mismo vertical. ¡Siempre será mejor partir de un kit bien hecho que reinventar la rueda!

¿Que el Ayuntamiento de Barcelona no quiere usar el kit estatal porque su caso es singular? ¡Perfecto!, nadie le obliga. ¿Que en Lepe prefieren contratar a no sé qué proveedor local? ¡Fenomenal!, el kit es software libre y el proveedor puede partir de él y adaptarlo como el ayuntamiento necesite.

👉 En resumen, hacer lo que hace el Consorcio AOC en Cataluña con los portales de transparencia para las entidades locales. O el Gobierno de Italia con los ayuntamientos y centros escolares.
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(