jump to navigation

M-010 22.4.17

Posted by Migsar in Desarrollo Web, Ideas, Vida.
Tags: , , , , , , ,
add a comment

Intenté hacer mis compras por internet y, no puedo explicar exactamente por qué, pero no funciona. Cada vez más gente se está cambiando a servicios en línea, y yo también, hay muchas cosas que hago en línea, desde la comunicación con mi círculo alguna vez cercano, por Facebook, Skype, Whatsapp o Telegram, hasta la banca y el pago de servicios, sin embargo, las compras cotidianas aún no llegan a ese punto en el que prefiera hacerlas en línea. Estuve pensando un poco al respecto y es lo que quiero exponer a continuación.

¿Por qué no me gusta? Creo que las compras en línea en su estado actual satisfacen a personas de hábitos muy fuertes, a personas rutinarias, no digo que sea malo, de hecho, me gustaría serlo, pero no lo soy. Si uno conoce la marca de cereal que desea, las galletas, las frutas y verduras, es muy fácil hacerlo en línea, los sitios actuales son perfectos para eso, el cuadro de búsqueda tiene una función de autocompletado que hace que uno encuentre rápidamente un producto en específico, incluso se tiene una función de categorización, muy vinculada al autocompletado, que realiza ciertas sugerencias. Lamentablemente el alcance de esto es muy limitado. Uno empieza a escribir jugos y le recomienda todo lo relacionado con jugos, suena bien, lo sé, pero cuando uno va al lugar uno ve bebidas en general y a veces decide comprar una cosa que no es necesariamente un jugo. Mi punto es que todavía no se ha aplicado la tecnología para substituir el vagar sin rumbo dentro de un espacio determinado, es decir, se tiene un propósito, pero mucha libertad a la hora de cumplirlo. Creo que la tecnología existe, pero se necesita dedicarle un poco de tiempo a estructurarlo de otro modo, romper la linearidad de los sistemas, aprovechar más los aspectos de visualización, utilizar más la retroalimentación.

El segundo punto clave es la entrega y/o distribución, también creo que se dispone de la tecnología pero no se ha decidido atacar el problema de frente. El elegir el horario cuesta, en parte, pienso que es porque al proveedor del servicio le cuesta porque ha trabajado muy poco en optimizar sus procesos en este aspecto. Algunos ofrecen un servicio de entrega gratuito a partir de cierta cantidad consumida, otros ofrecen un costo económico para un rango de horarios y un costo premium para una entrega inmediata. no estoy seguro de cuál sea el mejor modelo, pero sé que tiene que mejorar, uno pasa mucho tiempo en su casa, pero parece que la Ley de Murphy aplica para estos casos, todo lo que tiene que salir mal sale mal, hay alguna emergencia, uno se mete a bañar o al baño, decide ir por un refresco a la tiendita de la esquina, para la que aplican los mismos problemas mencionados en diferente escala, incluso puede que uno tenga el radio, la tele o audifonos y no sé da cuenta de cuando la persona de la entrega toca el timbre.

Al final, creo que existe un gran campo de oportunidad en este nicho y falta mucho trabajo por hacer. En muchos foros y conferencia se habla de que el futuro nos alcanzo, creo que es cierto, respecto al desarrollo tecnológico, pero sucede totalmente lo contrario a la hora de aplicar el desarrollo tecnológico a resolver problemas cotidianos, deberíamos de ser más concientes que el hecho de que algo se perciba como simple implica siempre un inmenso esfuerzo detrás, esto aplica tanto para los deportistas que hacen parecer que las proezas son naturales como para los ingenieros de Google o Apple que hacen que un niño pequeño parezca genio al utilizar sus productos, sí, en este momento me acuerdo del meme que circula en las redes sociales que dice algo similar a “si su hijo logra utilizar el iPhone a los tres años no es que su hijo sea genio sino que los ingenieros de Apple son genios”, creo que no son sólo las madres las que no lo entienden.

Anuncios

Lista de todos los países 13.3.14

Posted by Migsar in Computación, Desarrollo Web.
Tags: , , , , , , , , , , ,
add a comment

Más de una vez había querido una lista de todos los países y hoy descubrí que hay un proyecto de GitHub que ya la tiene, en muchos formatos y varios idiomas, espero les sirva el dato.

List of All Countries in All Languages and All Data Formats

La verdad creo que es un poco exagerado decir que todos los formatos y todos los lenguajes, pero definitivamente son bastantes formatos y lenguajes.

Acá el link en GitHub.

Como generar nonces para Twitter 13.2.14

Posted by Migsar in Desarrollo Web.
Tags: , , , , , ,
add a comment

Muchas veces programar es más cuestión de experiencia que de inteligencia, conocer el lenguaje y lo que ofrece y estar familiarizado con el tema. Ayer llevaba un par de horas viendo el API de Twitter para hacer un request firmado para poder usarlo como autorización para un sitio, en fin leyendo código de otros, viendo bibliotecas, stackoverflow y demás encontré una forma rápida y sencilla de generar nonces en Sitepoint – Understanding OAuth, me gustó mucho el artículo y recomiendo leerlo, sin embargo, aquí sólo hablaré de los nonces. La idea del nonce es un numero aleatorio que se usa sólo una vez, esto ayuda a la seguridad ya que es un parámetro más que es difícil de duplicar y en esencia, permite que las peticiones no sean duplicables, claro que para que funcione tiene que tener ciertos lineamientos, que no comprendo completamente por ser conceptos avanzados de criptografía.

La idea aquí es que tiene que ser una cadena alfanumérica de 32 bytes que no contenga caracteres especiales, en términos de Twitter “non-word characters”, se puede crear de muchas maneras y esta me gustó por práctica aunque al ponerlo en Google aparecen otras.

Primero resolvemos el problema del número de bytes, php tiene una función llamada md5() que regresa un numero hexadecimal de 32 caracteres, es decir, el string que necesitamos. Esta es una función usada para revisar la integridad de los datos, y produce este hash a partir de cierta entrada. En nuestro caso no interesa cual sea la salida o la entrada con tal de que el resultado sea aparentemente aleatorio, por lo que podemos usar otra función de php, mt_rand(), que es una versión nueva de un generador de números aleatorios basada en el algoritmo para generación de números aleatorios Mersenne Twister.

En resumen, nuestro nonce se reduce a dos funciones anidadas:

oauth_nonce = md5(mt_rand());

Finalmente, un poco al margen de esta entrada, php tiene una función para codificar de acuerdo al estandar RFC 3986 que es el que pide Twitter, esta función es rawurlencode().

Algunas cosas sobre desarrollo web 14.1.14

Posted by Migsar in Desarrollo Web.
Tags: , , , , , , ,
add a comment

Poco a poco fui quedándome con PhpStorm como editor favorito, ofrece muchas funciones que me gustan para la edición, como envolver algo con tags o tener live templates(que hacen que sea más fácil programar al permitir shortcuts para escribir estructuras de programación) e integra muchas herramientas, tiene las partes para servidor y autoupload, git, vagrant, file watchers (que sirve para compilar automaticamente scss, less o coffeescript). Me considero desarrollador conceptual, pues muchas veces escribo el código mínimo indispensable y paso mucho más tiempo pensando ideas, es decir, no soy para nada un codificador notable, ni me divierto como algunos dicen escribiendo líneas y líneas, me divierto haciendo dibujitos y sitios y pensando en nuevas aplicaciones. En fin, todo esto sirve como introducción a emmet y una serie de herramientas que han surgido y que simplifican tanto el paso de lo creativo a la implementación que es difícil no ponerse a desarrollar las ideas. Lamentablemente creo que muchas de estas herramientas son bastante desconocidas en México, así que espero que el post que pongo despierte la curiosidad al respecto. Para muestra un botón.

Emmet

Cheat Sheet

Esto:
div#menu>(ul.lista>li.clase${Elemento $}*5)+footer>p{Hola mundo}

Produce:
<div id="menu">
<ul class="lista">
<li class="clase1">Elemento 1</li>
<li class="clase2">Elemento 2</li>
<li class="clase3">Elemento 3</li>
<li class="clase4">Elemento 4</li>
<li class="clase5">Elemento 5</li>
</ul>
<footer>
<p>Hola mundo</p>
</footer>
</div>

También existen distintos compiladores de CSS que ayudan mucho como:

  • Less
  • Sass (Me gusta más porque tiene herramientas como Compass y Susy pero no he usado demasiado Less y apenas empezaré con Myth)
  • Myth

En este caso no pongo como se utilizan, pero en esencia es lo mismo, permiten repetir menos código al usar agrupaciones y variables y crean un código más comprensible cuando está bien estructurado.