{"id":318,"date":"2019-12-09T14:35:13","date_gmt":"2019-12-09T13:35:13","guid":{"rendered":"https:\/\/blog.oriolgomez.com\/?p=318"},"modified":"2019-12-09T14:35:13","modified_gmt":"2019-12-09T13:35:13","slug":"introduccion","status":"publish","type":"post","link":"https:\/\/blog.oriolgomez.com\/?p=318","title":{"rendered":"Programaci\u00f3n, dise\u00f1o web y la ceguera"},"content":{"rendered":"<p>El otro d\u00eda hablando con alguien me d\u00ed cuenta de que, para el que no conoce el tema de la programaci\u00f3n, se hace complejo entender qu\u00e9 es lo que hace un programador. Y no voy a entrar en el tema de distintas clases de programadores, porque ser\u00eda irse por la tangente.<\/p>\n<p>En esencia, el trabajo de un programador es producir instrucciones que un ordenador entienda para realizar una acci\u00f3n, crear un programa determinado, ya sea un juego, una p\u00e1gina web o un programa que consulta informaci\u00f3n en una base de datos y la muestra al cliente en un formato que pueda entender f\u00e1cilmente. La forma en que programamos, pues, depende de c\u00f3mo enfoquemos una tarea o las condiciones de cada proyecto o empresa.<\/p>\n<p>En esta ocasi\u00f3n no voy a entrar mucho en el tema de la discapacidad, aunque s\u00ed que mencionar\u00e9 en alg\u00fan punto el tema de la ceguera (soy ciego total), y programo a ciegas. Sin embargo, creo que los ciegos podemos producir un programa (en adelante, c\u00f3digo), igual que los dem\u00e1s.<\/p>\n<h1>El tema de las matem\u00e1ticas y la programaci\u00f3n: \u00bfMito o realidad?<\/h1>\n<p>Ay las matem\u00e1ticas, qu\u00e9 bonitas que son y qu\u00e9 necesarias que son para un programador&#8230; O no. Siempre que hablo de programaci\u00f3n, hay alguien que me dice que bueno, tengo que saber mucho de mates, que si no, no se puede programar.<\/p>\n<p>Oh, sorpresa. Eso es un mito.<\/p>\n<p>Las matem\u00e1ticas y la programaci\u00f3n realmente tienen poco que ver. Pongamos algo en perspectiva:<\/p>\n<p>Pongamos que estoy haciendo un programa para un cliente cuya funci\u00f3n es conectarse a un servidor y realizar una serie de acciones como habilitar la entrada de una serie de usuarios con un correo electr\u00f3nico, contrase\u00f1a y a partir de ah\u00ed, dejarlos que descarguen una serie de archivos. \u00bfNecesito matem\u00e1ticas? Para nada. Quiz\u00e1s hace 30 a\u00f1os, cuando la \u00fanica manera de programar era con un lenguaje de programaci\u00f3n de muy bajo nivel (qu\u00e9 digo, quiz\u00e1s hace 50 o 60 a\u00f1os).Con bajo nivel me refiero a que casi casi hab\u00eda que escribir en lenguaje m\u00e1quina para que el ordenador te entendiera. En esos tiempos quiz\u00e1 eran m\u00e1s necesarias las matem\u00e1ticas porque el lenguaje binario era muy complicado.<\/p>\n<p>Pero para el caso que nos ocupa, no utilizar\u00edamos para nada las matem\u00e1ticas. Es m\u00e1s, en el programa del que habl\u00e1bamos no utilizar\u00edamos ni una f\u00f3rmula matem\u00e1tica.<\/p>\n<p>Ahora bien, digamos que estamos haciendo un juego de coches y hay que hacer un sistema de rotaci\u00f3n basado en \u00e1ngulos, velocidad de giro, aceleraci\u00f3n, gravedad, fricci\u00f3n&#8230; Para eso s\u00ed que necesitamos matem\u00e1ticas, f\u00edsica y dem\u00e1s.  Empec\u00e9 a hacer un juego de coches con esas caracter\u00edsticas y, la verdad, es ponerse y acostumbrarse.<\/p>\n<h1>Programaci\u00f3n vs. Dise\u00f1o<\/h1>\n<p>Programar una web no es dise\u00f1ar. Un ciego puede programar una web, pero no te har\u00e9 el dise\u00f1o gr\u00e1fico. Eso no significa que la web que haga un ciego ser\u00e1 fea, ni mucho menos.<\/p>\n<p>Es verdad que mi web principal tiene un dise\u00f1o completamente plano, pero eso es por vagancia pura y porque la mayor\u00eda de los que entran son ciegos y por eso pas\u00e9 de ponerle css o im\u00e1genes. Pero hay formas de que un ciego haga una web bonita:<\/p>\n<p>Una es a trav\u00e9s de un gestor de contenidos (este blog est\u00e1 hecho en WordPress y tampoco es tan feo, \u00bfno?).<\/p>\n<p>Otro m\u00e9todo es hacer una web a mano, con Bootstrap por ejemplo, y ponerle un poco de css al menos, para que el dise\u00f1o no sea tan uniforme.<\/p>\n<h1>\u00bfY si lo has hecho mal, c\u00f3mo te das cuenta?<\/h1>\n<p>Alguien me pregunt\u00f3 que, siendo ciego, c\u00f3mo me daba cuenta de si comet\u00eda un error a la hora de introducir c\u00f3digo.<\/p>\n<p>El hecho es que el ordenador te proporciona numerosas herramientas de debugging (deporaci\u00f3n de errores). Digamos que cometes un error en una l\u00ednea. Es verdad que te queda marcado en rojo y que visualmente se ve f\u00e1cil, aunque no siempre es el caso. Muchas veces el error est\u00e1 en otro sitio e incluso visualmente es dif\u00edcil saber d\u00f3nde nos hemos equivocado. Pero la cosa es que aunque no puedas ver las marcas en rojo, hay herramientas que nos dicen qu\u00e9 es lo que el lenguaje de programaci\u00f3n no sabe interrpretar y que nos hemos equivocado. No voy a entrar en detalle porque no viene al caso, pero es totalmente posible programar sin ver.<\/p>\n<h1>La interfaz de usuario: Si no ves&#8230;<\/h1>\n<p>Buena pregunta. Hasta hace relativamente poco, era bastante dif\u00edcil dise\u00f1ar interfaces sin ver. La interfaz es lo que vemos cuando interactuamos con un programa: En el m\u00f3vil, tocamos en un mensaje de whatsapp para entrar en \u00e9l y aparece otra ventana con el chat por encima. En un ordenador, tenemos botones y men\u00fas y accedemos a ellos con el rat\u00f3n o el teclado. Eso es la interfaz.<\/p>\n<p>Al no ver, no sabemos, en teor\u00eda, si posicionamos bien un bot\u00f3n en la pantalla, si luego una persona que vea lo ver\u00e1 bien. Esto es un tema que se ha debatido mucho siempre, pero cada vez las cosas se nos ponen m\u00e1s f\u00e1ciles.<\/p>\n<p>Uno de mis proyectos m\u00e1s recientes es un puzzle para dispositivos IOS IPhone, IPad, etc. Para ello he utilizado SwiftUI, que permite dise\u00f1ar la interfaz a trav\u00e9s de c\u00f3digo. Pero podr\u00eda haberlo dise\u00f1ado perfectamente con otra librer\u00eda como Flutter, que funciona tambi\u00e9n con Android. El tema est\u00e1 en que es mucho m\u00e1s sencillo dise\u00f1ar una interfaz para m\u00f3viles que una de escritorio y la raz\u00f3n es tan simple que cuando os deis cuenta dir\u00e9is&#8230; Ah, claro!!!!<\/p>\n<p>Una pantalla t\u00e1ctil y un programa lector que lee esa pantalla significa que un ciego puede tocar los botones y elementos que ha programado. Esto significa que, habiendo \u201ctocado\u201d otras aplicaciones, nos damos cuenta enseguida de si el dise\u00f1o es m\u00e1s o menos adecuado. Vale que no te crear\u00e9 un icono para cada elemento de la app, pero cuando alguien me pase los iconos hechos, los puedo poner. O mejor a\u00fan&#8230; Utilizar\u00e9 un Emoji para sustituir al icono. \u00bfOs acord\u00e1is del puzzle para IPhone que os dije hace un momento? En las casillas vac\u00edas (que no tienen ficha) utilizo el Emoji de un c\u00edrculo blanco vac\u00edo \u26aa\ufe0f. Hasta ahora, nadie se ha dado cuenta&#8230;<\/p>\n<h1>Conclusi\u00f3n<\/h1>\n<p>S\u00e9 que al principio dije que no hablar\u00eda mucho de la ceguera y que me centrar\u00eda m\u00e1s en programaci\u00f3n. En vez de ser todo un profesional y quitar esa frase, lo voy a dejar as\u00ed. Pero no por vagancia. Si no para que os deis cuenta de que la ceguera influye a la hora de programar, pero positivamente: No se te cansa la vista, el teclado es mucho m\u00e1s r\u00e1pido que el rat\u00f3n \u00bfA que nunca habr\u00edas imaginado que con un atajo de teclado puedes moverte por el ordenador sin apuntar  con el rat\u00f3n, lo que conlleva perder tiempo valioso?, y adem\u00e1s, hay un robotito que lee todo y al que tampoco se le cansa la vista porque es un programa. Algunos le llaman extraterrestre, otros robot&#8230; Pero se llama lector de pantalla y t\u00fa tambi\u00e9n lo tienes. Est\u00e1 en tu m\u00f3vil, est\u00e1 en tu PC, en tu Mac, y ni siquiera lo sab\u00edas. Me apuesto lo que quieras.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El otro d\u00eda hablando con alguien me d\u00ed cuenta de que, para el que no conoce el tema de la programaci\u00f3n, se hace complejo entender qu\u00e9 es lo que hace un programador. Y no voy a entrar en el tema de distintas clases de programadores, porque ser\u00eda irse por la tangente. En esencia, el trabajo &hellip; <a href=\"https:\/\/blog.oriolgomez.com\/?p=318\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Programaci\u00f3n, dise\u00f1o web y la ceguera<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-318","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ioTt-58","_links":{"self":[{"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/posts\/318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=318"}],"version-history":[{"count":1,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/posts\/318\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=\/wp\/v2\/posts\/318\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.oriolgomez.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}