The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. Project Goals @ Hyper
Pasé por varias apps antes de llegar a esta. Use la terminal nativa de Mac, luego pase por iTerm 2. Ambas las disfruté en su momento-en cada caso estaba aprendiendo diferentes cosas y usos.
Para empezar estuvo muy bien la terminal de Mac, la pude personalizar facilmente, luego con Zsh la cosa fue mucho más “propia”. No podria dar una sola razón por la que cambié a iTerm 2 pero fue por el tiempo que estuve aprendiendo tmux (creo) y me sentí cómodo enseguida (creo que tiene que ver con las personalizaciones de colores pero tampoco lo puedo jurar).
Por el camino ví hyper (es del equipo de Now ya hablaré de ese proyecto tmb) y al principio la usé y la desintalé. Y no recuerdo tampoco por qué, pero decidí darle otra oportunidad.
Bueno, basta de introducciones de ese tipo donde no me acuerdo de nada, pffff. Hyper es una terminal basada en tecnologías web. Es personalizable desde donde uno quiera–desde la configuración general, usando un archivo general, hasta entrando en el código fuente y moviendo la UI (usa React + redux).
En mi caso, lo único que hice fue agregar un par de temas de colores (primero OceanicNext y ahora Nord) y lo demás lo hago por personalización de mis dotfiles. En realidad tmb agregué un font: Inconsolata.
Es gracioso, no es que pueda decir algo como que esta app me cambió el mundo pero es la app que uso diario (seguro que es la app que más uso).
Hay opciones, con esta, yo me siento a gusto, por ahora.
Extended reality (XR) is a term referring to all real-and-virtual combined environments and human-machine interactions generated by computer technology and wearables. Extended Reality @ Wikipedia
Augmented Reality is a live direct or indirect view of a physical, real-world environment whose elements are “augmented” by computer-generated perceptual information, ideally across multiple sensory modalities, including visual, auditory, haptic, somatosensory, and olfactory.
Es decir, la Realidad Aumentada tiene que ver con ambientes del mundo físico (difícil usar el término real como lo hacen arriba) que son “aumentados” por información generada por sistemas computacionales. El ejemplo más sencillo que se me viene a la mente es pensar en un celular con la cámara encendida y que sobrepone información de lo que está “viendo”. Por ejemplo, información de los colores que ve, o de los materiales que ve, o el número de objetos, etc.
Tiene que ver con agregar meta-información de lo que se tiene en la cámara y mostrarla al usuario.
Augmented Virtuality
Este término lo descubrí mientras hacía research para este post, la definición de AV @ Wikipedia:
Augmented Virtuality is a subcategory of mixed reality which refers to the merging of real world objects into virtual worlds.
Este es divertido, tiene que ver con sistemas/mundos virtuales donde algo cambia tomando como consideración factores del mundo físico. Como ejemplo se puede imaginar una página web que cambia el color de fondo dependiendo del clima, es edcir, si una página web que muestra información del clima de una ciudad (en tiempo real) decide cambiar detalles como el color de fondo, o hacer efectos de sol o lluvia de manera referente a las condiciones actuales de la ciudad. En Pokémon Go lo hacen, si está lloviendo cambian los bichos que los usuarios que encuentran, dependiendo de lluvia, viento, sol, nubes, etc.
Tiene que ver con agregar condiciones a sistemas computacionales basado en factores del mundo físico.
Virtual Reality
Ya he hablado antes del tema, como referencia agrego la definición de VR @ Wikipedia:
VR is a computer-generated scenario that simulates a realistic experience.
Es decir, tiene que ver con simulaciones virtuales que buscan involucrar al usuario de tal manera que experimenten situaciones realisticas. Medio vaga la definición, porque, hasta una página web puede logar entrar ahí, pero los ejemplos usados hoy en día tienen que ver con sistemas de mundos virtuales que se disfrutan usando headsets envolventes–estilo el Samsung VR Gear que me acabo de conseguir.
Así que bueno, este post es introductorio al tema porque estoy emocionado que las herramientas actuales favorecen y facilitan nuevos desarrollos que participen de estas categorias (what?). Espero que pronto empecemos a ver cosas muy interesantes en estos temas y, yo seguir publicando experimentos que demuestren lo que se puede hacer.
…demonstrating that decentralization is about much more than just controlling our own data. It is a fundamental rethinking of the relation between data and applications, which—if done right—will accelerate creativity and innovation for the years to come. Paradigm shifts for the decentralized Web
¿Qué es el Internet Distribuido?
El concepto viene recuperando fuerza desde hace tiempo ya. Cuando las redes sociales actuales se convirtieron en lo que son–hay que recordar épocas donde los anuncios que veíamos en redes sociales no tenían que ver con conversaciones que habíamos tenidos en voz alta–y nos dimos cuenta que somos el producto y no los usuarios. De repente, nos fuimos dando cuenta que las compañías son dueñas de nuestros contenidos, que compartimos libremente toda nuestra vida online y que esa información se la envíamos a una compañía sin ningún problema, y esa compañía monetiza nuestra data.
Un Internet distribuido significa que cada persona se responsabiliza por sus datos. Que cada persona es un nodo que se conecta al resto de nodos, en lugar de todos conectarnos a un nodo central–el cual dice qué, cómo, dónde, quién si, quién no, por qué y más, es decir, define las reglas del juego.
El Internet distribuido tiene que ver con recuperar el poder o, “empoderizar” (empower) de vuelta al usuario.
¿Cómo hacemos eso?
Hay muchos proyectos que ya lo están trabajando. Como parte de un proyecto interno en Citrusbyte he tenido la oportunidad de investigar las plataformas actuales con sus protocolos/herramientas. Entre las plataformas que investigamos están:
Cada uno con un acercamiento diferente. Nosotros nos decidimos en este proyecto por IPFS. Ellos ofrecen toda la suite de herramientas para trabajar con sus protocolos (en estado alpha con alto potencial de bugs y errores, algunos de los cuales describí aquí).
¿Qué implica esto para los usuarios?
No mucho, aunque todo. Desde el lado de desarrollo hay que entender la manera en la que las nuevas estructuras se utilizan y como encuadran dentro de la arquitectura de una aplicación, y lo que se busca es que la UI no tenga cambios, es decir, que se pueda usar la Dapp (aplicación distribuida) sin ningún cambio, sin tener que aprender nada nuevo–con la diferencia que hay por atrás.
Lo que sí hay que entender es que los datos son del usuario, y que se necesita una computadora prendida y online para transmitir esos datos. De ahi que es importante para los desarrolladores ofrecer estrategias de redistribución de contenidos eficiente y sustentable (dependiendo de cada Dapp).
¿Cómo seguimos?
Sigan atentos, cuando el proyecto esté listo ya avisaré por aquí. Así podrán tener una primera interacción con estas tecnologías. Y luego, ya iré escribiendo posts de las nuevas herramientas que acompañan este tipo de proyectos.
There is no passion to be found playing small, in settling for a life that is less than the one you are capable of living.
AquiGorka.net es mi proyecto personal. Es mi búsqueda de hacer lo que yo quiero hacer.
El proyecto tiene como meta desarrollar “software de entretenimiento” para múltiples jugadores y que se pueda “jugar/usar” en tiempo real.
Software de Entretenimiento
Aka: videojuegos. Pero quiero usar este término porque creo hay una sombra aún sobre la palabra videojuegos. No son solo juegos, tiene que ver con entretenimiento, a veces es dinámico y otras pasivo.
Múltiples jugadores
Porque es más divertido, porque el “engagement” es mayor, porque somos seres sociales.
Tiempo real
Con un catch: que se pueda definir un etilo automático para cuando no esté el jugador y que así, pueda unirse/salir de la “partida” en cualquier momento.
Lo divertido es que hay muchas cosas por hacer aún, y que la puerta está abierta a los que se quieran sumar–quiero ir creando un equipo para sacar adelante estas ideas.
Alguna vez ya hablé de esto, resulta que para usar Jekyll se necesita tener instalado Ruby. Las Macs ya lo tienen por default así que debería ser fácil no? Pues no.
gem install jekyll
Me regresaba algo de Permission Denied. Puf. Entre las soluciones comunes siempre salía eso de usar un Ruby Version Manager (rvm). Me niego. Y de repente, esto: Troubleshooting jekyll: Jekyll & Mac OS X 10.11. Fiesta.
La solución implica instalar Ruby usando Hombrew (Hombrew es una fiesta en sí, luego hago un post de eso) y agregar ese ejecutable al $PATH del usuario, con eso tenemos la última versión de Ruby lista para usar y, consecuencia, se puede instalar Jekyll.
De ellos mismos:
Either of these approaches are useful because /usr/local is considered a “safe” location on systems which have SIP enabled, they avoid potential conflicts with the version of Ruby included by Apple, and it keeps Jekyll and its dependencies in a sandboxed environment. This also has the added benefit of not requiring sudo when you want to add or remove a gem.
Meltdown y Spectre rompieron todas las computadoras del mundo. Es un tema delicado, un problema de hardware que afecta (confirmado ya) los procesadores de Intel y AMD (casi todas las computadoras que hay). Hace unas semanas leía un post de un researcher que especulaba acerca de las últimas actualizaciones a linux, me dejó con un sentimiento de algo malo y grande se viene. Kaboom. Si les interesa hay muchos links para encontrar info de lo que está pasando, yo acá comparto este: https://googleprojectzero.blogspot.com.es/2018/01/reading-privileged-memory-with-side.html
5 lines of JavaScript broke every single Intel processor made in the past 15 years. Siguiendo con el punto anterior; resulta que la vulnerabilidad en los procesadores se puede atacar/explotar no solo desde línea de comando sino hasta el navegador! Y por supuesto que ya hay vectores de ataque. Qué hacen esas 5 líneas? No sé. Tampoco voy a probarlo. Pero lo peor es que no puedo confiar en ningún website hasta que se haya arreglado lo primero.
Volvieron a romper el Internet Una vez más, esta vez por un tema de la herramienta interna de seguridad, npm “perdió” paquetes lo que hizo que no se pudieran instalar esos paquetes ni los que los tienen como dependencia. Para algunos no es un tema tan grave, en lo personal creo que no poder instalar paquetes bastante conocidos (como create-react-app) porque tenían como dependencia alguno de los paquetes que desapareceieron si me parece grave. En un blog post que estoy escribiendo para Citrusbyte menciono la idea de crear una app decentralizada que ayudaría a evitar este tipo de problemas. Ya compartiré el link.
Por esto es que no podemos tener cosas chidas: manera sencilla de “cosechar” números de tarjeta de crédito y contraseñas desde websites Miedo. La sensación de tener que revisar el código de las dependencias de las dependencias de mi código es tan abrumadora que creo, prefiero ver hacía otro lado. Security through not looking. Este ataque es ficticio pero viable. El ecosistema JvaScript vive demasiado de la mano de la fé y confianza en código de otros.
Asi que bueno. A seguir supongo, que esto solo acaba de empezar.
Saludos, Gorka
P.D. - yo también empiezo mi año, esta vez como mentor en Thinkful. A ver que tal, me gusta mucho la oportunidad: guiar a personas que están interesadas en aprender de tecnologías Web. Ya contaré como va todo.
How can we use the lessons of the past to improve our future?
Hace casi dos años aprendí una de las prácticas de retrospectivas para agile. Me encantó, desde la primera (en la que me invitaron como oyente) me dí cuenta de lo mucho que suma a un equipo. Luego, como participante activo le saqué también jugo – ofreciendo mejoras al equipo y escuchando de las mejoras propuestas, y super valioso, escuchando de los errores cometidos.
Es una práctica que recomiendo no solo para gestionar proyectos de software sino para cualquier tipo de proyecto, para cualquier tipo de equipo (desde 2 personas hasta quien sabe cuantas más).
Una pequeña introducción para el recuento de cosas que hubo este año.
Empecé el año trabajando como Product Owner - y hacía allá apunto de vuelta. El rol me encanta. Disfruto mucho desenvolver los proyectos en tareas y subtareas para definir el orden de prioridad según las necesidades, costos/beneficios y hacía donde apunta el big picture.
Barcelona. De repente en menos de dos meses del año boom! Nos mudamos a Barcelona. Y hace una semana pude ejercer mi derecho a voto en las elecciones locales que se llevaron a cabo con todo lo que estuvo pasando por parte del movimiento independentista. Hubo una declaración de independencia, wow. Hubo un acto terrorista, que mal. Por ahora la cosa va bien y por acá voy a seguir.
eDreams. Mi primera experiencia con el mundo corporativo. Choque total. No compatibilizamos – sea el momento en el que yo estaba o que mi personalidad no va con ese mundo, una experiencia de la cual aprendí por supuesto. Por ahora, no voy a recomendar a nadie trabajar para esa empresa.
Citrusbyte. La otra cara de la moneda. Una empresa con la cual me siento increiblemente a gusto. El momento en el que estoy y los proyectos que tienen, estamos sincronizados. Y lo estoy disfrutando mucho. El equipo? Fantásticos. Tantas personas tan chidas de las cuales todos los días puedo aprender – mucho, y me encanta. Y me esfuerzo también por hacer mi parte.
Github. Decidí tratar de hacer publicaciones todos los días por unas semanas. Todo salió bien, a veces cosas pequeñas, a veces aplicaciones web enteras. Decidí seguir. Ahí sigo. Por otro lado, hice mis primeros pull requests a proyectos de terceros! Unos se aceptaron, otros no – asi es esto. Uno de los que hice a IPFS lo aceptaron, el otro está en pausa :)
Herramientas. Nuevas herramientas y personalización de las que ya usaba. Muy nerd si. Pero, que se yo, en algún momento me burlé de las personas que trabajaban sólo con línea de comando. Ni modo, mi yo pasado se burló de mí, ahora le regreso el favor.
Sistemas de blog. Dos blogs. Uno más activo que el otro. Pero para empezar hay que dar el primer paso. Dos sistemas para aprender las diferencias y ver con cual me siento más cómodo. Los dos van muy bien.
Nuevos lenguajes. Aguante Golang! Un rato estuve jugando bastante, publiqué un starter para server, cambié de framework (por razones que ya conté antes). Voy a seguir haciendo cosas con este lenguaje por ahora.
Kickoff. Un juego que quiero hacer. Un proyecto que ya empecé y que ahi va. Tiene de todo lo que he aprendido en los años. VR, multiplayer, real-time, 2nd screen, esports. En fin, ya veremos como sigue.
Kuhhandel. Mi primer videojuego de mesa. Aún le faltan tuercas por apretar. Pero hice la versión digital de un juego de mesa, que se puede jugar usando los celures como control remoto. Tómala barbón.
Rompí una computadora. Bueno, no tal cual, alguien la podría arreglar. Alguien muy nerd que sepa de particiones de boot, grub y grub de rescate. Aprendí mucho, tanto que casi creo que quiero mandar arreglar la computadora para volver a intentarlo – sigo con ganas de isntalar y usar Arch Linux
Mi primer año como Ingeniero. Investigué qué más se puede aprender y me encontré Master of Human-Computer Interaction. Lo quiero. Si en algún momento creí que nunca volvería a la academia, este postgrado llamó mucho mi atención. Fue de las cosas que estuve leyendo mucho y este va aquí más como propósito futuro.