jueves, 7 de mayo de 2020

Las webcams, iPhone, las macs y la cuarentena, por supuesto

Una de las cosas que más ha afectado al sector laboral durante estos días de cuarentena es el teletrabajo y la necesidad del home office.


Una de las primeras necesidades para hacer teletrabajo o home office es tener acceso a una buena webcam. La gran mayoría de teletrabajadores usan una laptop como máquina principal para hacer su trabajo, y muchas laptops no poseen webcam o la que tienen instalada no es muy buena, por eso se recomienda una webcam externa.
En algunos artículos me topé con una idea muy buena: usar el smartphone como webcam. Después de checar algunos sitios y videos, tengo que concluir que la pareja Win-Android tiene más ventajas en este asunto que las Mac-iPhone:

  • Existen más apps para usar Android como Webcam en una Win-PC e incluso iPhone en Win-PC (IVCam) que para usar iPhone en Mac (Epocam, aunque al parecer presenta algunas incompatibilidades al trabajar con software de teleconferencia: Zoom, MS Teams y Google Hangouts).
  • Todos los smartphones se pueden comunicar con las PC/Mac a través del cable USB o a través de WiFi, pero solamente los smartphones Android pueden usar cualquiera de estas dos modalidades, iPhone solamente puede usar WiFi cuando se usa como webcam. La trasmisión de datos a través de WiFi es poco recomendable para transmitir audio/video en tiempo real. Las imágenes del iPhone llegan entrecortadas  y con retrasos de transmisión.

Las cámaras integradas en las Macs.

  • Es bastante curioso que la Mac más básica (mac mini) y la más completa (Mac Pro) no tengan cámara integrada.
  • La familia de las laptops (MacBook Air y MacBook Pro de 13" y 16") sí traen integrada una cámara, pero no es muy buena, de 720p (720 pixeles, está pensada para dimensiones de pantalla de una laptop). 
  • La familia de las Macs de escritorio (iMacs de 21.5" y 27") sí que tienen cámaras integradas impresionantes: en las especificaciones del sitio de Apple dice que la cámara admite la resolución completa de la pantalla nativa (incluso las pantallas de 5K de 27" con sus 5120 x 2880, un poco más de 14 MP –Mega Pixeles).
  • También es curioso y sorprendente que la iMac Pro tenga una cámara de apenas 1080p, adecuada para la mayoría de los usos, pero no sorprendente como las cámaras de sus hermanas menores.

Y nuestras amadas iMacs de escritorio son las que REALMENTE no necesitan webcams.
Sí, es un poco triste y desconcertante que no se hayan desarrollado más aplicaciones webcam iPhone/Mac, sobre todo teniendo en cuenta el impresionante desempeño de las cámaras del iPhone (tan sólo la camarita frontal del iPhone SE –el nuevo chico de la banda– tiene 7 MP, ni caso tiene hablar de las impresionantes prestaciones de las cámaras de 12 MP del iPhone 11 Pro) o del iPad y sus cámaras de 7 y 8 MP o que ya Apple tiene disponibles cables USB-C a Lighting para transferencias de alta velocidad ni mencionar que una webcam de 1080p como la del Mac Pro anda por los $1,000.00, pero una webcam 4K como la de la iMac21.5" 4K cuesta más de $25,000.00.


Fecha estelar 6421.24

viernes, 20 de diciembre de 2019

Apple en 2020

Originalmente este post iba a ser de protesta por el amarillismo y la mala interpretación de algunas estrategias de Apple:

Apple desapareció iTunes a partir de la actualización macOS Catalina, muchas voces, muy alarmadas, decretaron la muerte de iTunes.

Cuando en realidad Apple dividió la funcionalidad de iTunes en cuatro aplicaciones: Musica para reproducir música tanto en la biblioteca de uno como en servicio streaming (Apple Music), videos musicales y acceso completo la tienda iTunes. Podcast para reproducir podcast, TV para películas y videos y Libros (bueno, esa ya existía y manejaba todo lo de eBooks, incluyendo la tienda de libros; solamente le dieron una manita de gato).
El asunto es que iTunes desapareció en la Mac, pero sigue intacto en Windows. Sin embargo, también en Win se va dividir en 2020. Es decir, igual que en macOS, iTunes ya no va a existir y en su lugar van a haber cuatro aplicaciones. Eso es todo. Es parte de la estrategia que sigue Apple. No es dramático ni escandaloso ni un volantazo empresarial.

Y sin embargo, algunos medios lo utilizaron como una noticia escandalosa y dramática:

Apple "apostará" por Windows.
Apple 💓 ARM (y a iOS).
La verdadera noticia ocurrió el año pasado, en 2018, cuando Apple anunció que tenía planeado reemplazar los CPUs de las Macs con sus chips ARM para 2020. Esto se relaciona con pequeñas pista que han venido sucediendo en macOS desde hace algunos años: a partir de Mac OS X Yosemite (10.11) lanzado en 2014, Apple empezó a enfocarse en la interacción Mac - iPhone y en darle un aspecto más "a la iOS" a OS X. Obviamente que hubo muchas voces escandalosas e histéricas (como las de la noticia de arriba) que clamaban que ahora Mac OS X iba a ser un iOS grandote igual a un iPhone grandote.
Poco a poco Apple parecía darles la razón a estas voces: Mac OS X no sólo se parecía más a iOS: empezaba a copiar mucho de su funcionalidad, teníamos detección de gestos en las touchpad, llegó la touch bar a las laptop, la intercomunicación entre dispositivos móviles y las desktop era cada vez más poderoso y flexible..., hasta que empezaron a pasar cosas en sentido contrario: Mac OS X pasó a llamarse macOS, las iPads iban a tener su propia versión de iOS llamada iPadOS que le iban a dar un aspecto y funcionalidad muy parecida a la Mac. ¿Entonces? ¿No que todo unificado?

Nop, cada familia de aparatos (computadoras, iPhones, iPads, Apple watch y –ya empezando a desfasarse- Apple TV*) tiene su propio sistema operativo (macOS, iOS, iPadOS, watchOS y –ya desfasado– tvOS*); el objetivo NO es que todo se unifique, sino que todo sea compatible y tenga un tronco común. Y aquí es donde entra lo de los chips ARM.

Una nota para nerds que se pueden brincar todos los demás: desde los inicios de la computación se definieron dos arquitecturas de microprocesadores: la CISC (Complex Instruction Set Computer) que tiene un amplio abanico de instrucciones que se ejecutan en sus registros internos o en memoria RAM. El mejor ejemplo de microprocesadores CISC es el Motorola 6800, Zilog Z80, la familia x86 de Intel y AMD x86-64, entre otros. La arquitectura RISC (Reduced Instruction Set Computer) tiene un conjunto reducido de instrucciones, el tamaño de cada instrucción es fijo y tienen pocos formatos y solamente  las instrucciones de carga y almacenamiento pueden acceder a la RAM (lo que es muy bueno para modelos de seguridad), esto, aunado a que facilitan mucho la segmentación de ejecución (pipeline) y el paralelismo hace que se prefiera sobre el modelo CISC. Ejemplos son el PowerPC (inicialmente desarrollado por Motorola, IBM y Apple, pero abandonado por razones comerciales hasta que solamente quedó IBM), Alpha de DEC (compañía comprada por Compaq comprada a su vez por HP), MIPS de MIPS Technology (no se usa directamente, se compra una licencia y se adapta), ARM de ARM Holdings, su uso es igual a MIPS (aquí es donde entra Apple y su familia de chips A*), SPARC de Sun (comprado por Oracle).
Chips desarrollados bajo arquitectura ARM que a su vez se basa en RISC.

Todos los aparatos de Apple están basados en chips propietarios de la familia A* (A11, A13, A13 Bionic, etc.) menos los Macs que todavía se basan en chips Intel (familia Core i*).
En lo que se hace la sustitución de CPUs de las Macs, Apple proporciona compatibildad de aplicaciones macOS - iOS por medio de la librería Catalyst (bueno, en realidad es un poco más complicado que una simple librería, en el bajo mundo de los desarrolladores se le conoce como "Proyecto Catalyst"). Este punto merece especial atención porque otra vez Internet se ha llenado de voces escandalosas y dramáticas (bueno, no todo Internet, solamente los sitios de noticias Apple). Catalyst es una herramienta de desarrollo que ayuda a los programadores a que las aplicaciones que hacen puedan usar recursos de la Mac (como teclado y mouse) y también de iPhone o iPad (como pantalla táctil y reconocimiento de rostros), es decir, desarrollar aplicaciones compatibles entre plataformas.

No hay que exagerar pensando que puede uno comprar una app para iPhone en la appStore y luego correrlo en la Mac gracias a Catalyst. No. No es así. Que no los engañen.
Catalyst es una herramienta auxiliar de desarrollo, no es una aplicación mágica universal.

Y aquí es donde entra la exagerada noticia de la muerte de iTunes: se dividió en las cuatro aplicaciones que ya existen en iOS y en iPadOS, y en macOS están desarrolladas usando Catalyst. Compatibilidad, no unificación. Y también por eso dejaron el desarrollo para Windows al último; Windows es muy importante comercialmente, sin iTunes para Win y su sincronización con el iPod e iPhone, posiblemente Apple no hubiera llegado a las alturas en las que está ahorita. Obviamente que las aplicaciones no se van a desarrollar con catalyst, posiblemente por eso la nota del principio decía que Apple estaba buscando a desarrolladores con experiencia en UWP (Universal Windows Plataform): no porque Apple ya se vaya a enfocar a Windows, sino porque quiere que sus aplicaciones sean lo más abiertas y compatibles posible.

Por cierto, entre las cuatro aplicaciones está "Libros", y que yo sepa, jamás ha estado disponible para Win, los eBooks de Apple nunca se han podido leer en Win. Lo más seguro es que Apple siga sin desarrollar "Libros" para Win, pero va a ser interesante ver qué es lo que pasa...


Fecha estelar 6301.15

* El aparato Apple TV y el sistema operativo tvOS se están desfasando y –probablemente– sean sustituidos por la Apple TV app y por el servicio de streaming Apple TV+.

miércoles, 30 de octubre de 2019

Las bibliotecas de Música.

La aplicación que más directamente heredó las capacidades de iTunes es "Música":
El icono, ventana principal y menú de Música, la aplicación de audio heredera de iTunes.

Esta es la configuración estándar de Música, y si ven en el lado izquierdo de la ventana principal, aparece el grupo "Biblioteca" y las diversas opciones de ver toda la biblioteca musical: agrupados por artista, por álbum, por canciones o mostrar videos musicales.
Solamente que yo tenía el problema de que la opción que más usaba era "Géneros", es decir, ver toda mi biblioteca según el género que yo le había asignado a cada álbum, pero ya no aparecía.
Sucede que cuando pasa el puntero del mouse (o touchpad) sobre las opciones "Biblioteca" y "Playlist", se muestran opciones para personalizar la opción. Para la opción "Biblioteca" aparece un letrerito que dice "Editar" que es la que tenemos que usar:

Cuando se pasa la flechita del apuntador por la etiqueta "Playlists", aparece la etiqueta "Ocultar" que lo único que hace es ocultar/mostrar las playlists. Las etiquetas "Apple Music" y "Tienda" ya están fijas, cuando la flechita del apuntador pasa sobre ellas, no aparecen otras etiquetas.










Cuando edité el grupo Biblioteca fue que me encontré la opción para regresarme mi agrupación por géneros.









Se da click en "OK" ya ya quedó restaurada la opción.









Esta opción de agrupación también está disponible en los menús de Música (Visualización -> "Ver como Géneros"):




Fecha estelar 6257.08

miércoles, 23 de octubre de 2019

macOS Catalina y la sincronización del iPhone

Uno de los cambios más dramáticos de macOS vino con la versión 10.15 Catalina: iTunes se dividió en 4 aplicaciones:

  • Música para oir música, videos musicales, accesar a Apple Music (el servicio de audiostreaming de Apple) y a la tienda Apple (sección música).
  • Pocasts para oir todos los podcasts disponibles y entrar a la tienda Apple (sección podcasts).
  • TV para ver todas las películas y videos compradas en la tienda Apple (sección películas) y todos los que uno haya convertido al formato correcto.
  • Libros para leer todos los libros y escuchar audiolibros comprados en la tienda Apple, ePubs y PDFs que uno compre o consiga por otro lado y entrar a la tienda Apple (sección libros y revistas).
Pero Catalina también tiene otro cambio importante: ahora la sincronización de los dispositivos (iPhone, iPad, etc.) se hace a través del Finder.

Ventana del Finder de mi Mac mostrando que mi iPad, aunque viejita (todavía es iPad 2), todavía puede sincronizarse en mi Mac también viejita (en la primera imagen puede verse que es una iMac late 2012). 
Un detalle medio molesto que me pasó: cuando actualicé mi macOS de Mojave a Catalina y conecté mi iPhone, el finder no lo reconocía: simplemente no lo mostraba en el Finder.
Este comportamiento se puede controlar en Preferencias del Finder:


En el tab "Barra Lateral", macOS Catalina incluyó la opción de mostrar dispositivos iOS:


En mi caso, solamente activé esta opción y ya aparecieron el iPhone e iPad en el Finder.

Fecha estelar  6251.04

domingo, 22 de octubre de 2017

Programación en la Mac: editores gráficos de texto.

Como mencionaba en el post pasado (Programación en la Mac: los editores básicos), el ambiente de línea de comandos de la Mac (Terminal), macOS X ya tiene instalado el editor vim en ambiente no gráfico; por eso me sorprendió saber que existe un proyecto open source com MacVIM, una versión gráfica de vim para Mac:

MacVIM - Editor de texto para macOS X.
El primer editor de texto gráfico que se viene a la mente es el que ya está incluido en el sistema, TextEdit:
Código de un shell en TextEdit.
Aunque TextEdit no permite marcar la sintaxis mediante diferentes colores, ni tiene funciones de editores de código (autotabs, comentar/descomentar bloque, identación, etc.), tiene la inteligencia suficiente para saber si estamos editando un programa o script o estamos escribiendo un documento:

Si TextEdit detecta que se está editando un texto humano, automáticamente poner la barra de herramientas de formato de texto (tipo de letra, tamaño, color, etc.).
Y aparte tiene la ventaja de que ya está incluido en el sistema.
Hay muchos editores de texto en el mercado (algunos en el App Store –como los que voy a mostrar– y otros no, como MacVIM), por lo que no puedo mostrarlos todos; solamente voy a mencionar algunas características que tienen los editores de código que los hacen más útiles en estas tareas sobre editores como TextEdit:
  • Necesario: que reconozcan la sintaxis de uno o más lenguajes de programación y la pongan en diferentes colores.
  • Necesario: que el texto escrito se vaya ajustando a la pantalla, pero que el editor reconozca cuando uno escribe una sola línea de código sin meter carateres adicionales.
  • Necesario: tener valores configurables para características de fin de línea (CR –mac pre-OS X–, CR/LF –Windows–, LF –todos los SO derivados de UNIX)
  • Deseble: que tengan controles para cambiar los colores del editor.
  • Deseable: que tengan opciones para identación/desidentación.
  • Deseable: que tengan opciones para comentar/descomentar líneas/bloques de código.
  • Deseable: que cuenten con ayuda y soporte técnico (ya sea local, en un sitio web o por teléfono). Nota. Esto es necesario si el editor tiene más características de lo necesario (por ejemplo, acceso a consola).
  • Bonificación: que tengan características base de un IDE (acceso a la consola, compilación y ejecución de scripts interpretados).
  • Bonificación: acceso a servidores FTP y SFTP.
Ejemplo 1: Albatross TE. Es un buen editor, con muchas herramientas –incluido acceso a la consola y posibilidad de correr scripts shell y Python e incluso reconoce scripts make. Desgraciadamente no es muy personalizable y no le dio tiempo al autor para hacer la ayuda.

Ejemplo 2: TextWrangler. Muy buen editor altamente configurable y personalizable con herramientas muy útiles y avanzadas. Aparte de poder interactuar con AppleScript tiene una ayuda y manual muy completos.
Existen muchos otros editores como Smultron (disponible como app de pago en la Mac App Store), Komodo Edit (muy avanzado y open source, también existe el Komodo IDE), Textmate, Fraise, Sublimetext 2...
Quizá ya hayan salido actualizaciones u otros nuevos, si conocen de algún otro, pasen la información, no sean envidiosos.
Nota: También la app de sistema Notes se puede usar como editor de texto, pero es muy trabajoso y no recomendable.


5619.45

lunes, 9 de octubre de 2017

Programación en la Mac: los editores básicos.

La Macintosh y su sistema operativo macOS X (la X en un número diez romano, no debe pronunciarse "equis" sino "diez": macOS Diez) es un poderoso sistema basado en el sistema operativo Darwin (es un SO tipo UNIX compatible con POSIX que a su vez está basado en NeXTSTEP, Mach,BSD y otros proyectos de software libre. Aunque Darwin fue liberado como un proyecto libre de código abierto, macOS también está formado por componentes y bibliotecas –conocidas como "librerías" en el bajo mundo informático– de código propietario, es decir, bajo licencia de Apple, como Cocoa y Carbon). Como SO tipo Unix, también se puede manejar mediante línea de comandos (la aplicación Terminal sirve para esto, está en Aplicaciones → Utilidades:

Ubicación de la aplicación Terminal para accesar la línea de comando.

Dentro del ambiente de línea de comando ya se tienen instalados y accesibles los editores:

vi:
El editor clásico vi en la terminal.
vim:
El editor vim (vi improved) en la terminal.
emacs:
El editor emacs en la terminal.

Aparte de los filtros y editores clásicos de Unix: ed, cat, ....



5608.22

sábado, 9 de septiembre de 2017

El peligroso, salvaje e indispensable GOTO

Para Dante,
aunque sea con cerca de
30 años de retraso.


En marzo de 1968, el científico de computación holandés Edsger W. Dijkstra (conocido en occidente como Edgar Dijkstra) publicó el influyente artículo "Go To statement considered harmful" (La instrucción Go To considerada dañina) en el boletín de Comunicaciones de la ACM (Association for Computing Machinery), también conocida como CACM. En este artículo señalaba que el uso creciente del salto incondicional estaba ocasionando que los programas se volvieran ilegibles y muy propensos a errores y reflexionaba y disertaba como el mantener cierta disciplina en la programación permitiría hacer no solamente programas legibles y confiables, sino hacerlos más grandes y propensos a modificarlos en vez de rehacerlos (es decir, hacerlos más flexibles).

Por un lado, esto dio inicio a la disciplina llamada Programación Estructurada donde todo el flujo del programa está basado en bloques bien definidos y que no deben traslaparse ni intereferir entre sí.

Pero esto también ocasionó una gran polémica que, aunque es muy técnica y se ha ido acallando, sigue siendo escabrosa.
Desde el principio muchos programadores protestaron porque la sentencia GO TO era su principal herramienta de control de flujo, no había otra cosa; en 1974 el propio Donald Kunth (matemático considerado el mayor experto en algoritmos computacionales y profesor emérito en Stanford) argüía que a veces el uso del GO TO mejoraba la eficiencia de ejecución, de forma era mejor alternativa que el detrimento en legibilidad; en 1978 los diseñadores del lenguaje C, Brian Kernighan y Dennis Ritchie dijeron que "se podía abusar infinitamente del GO TO", pero de todas maneras lo incluyeron en las especificaciones de C.
El también científico de la computación, el suizo Niklaus Wirth, jefe del equipo de diseño de los lenguajes académicos Euler, Algol W, Pascal, Modula, Modula-2 y Oberon (que por cierto era el editor del CACM cuando se publicó la carta de Dijkstra), diseñó los lenguajes para impulsar la disciplina del estructuralismo en la programación, aunque incluyó el GO TO por si acaso. Esto dio origen a una de las preguntas más peliagudas y difíciles que influyen aun ahora en el diseño de lenguajes modernos: ¿las reglas en la sintaxis del lenguaje usado fomentan la buena programación?

El lenguaje JAVA, por ejemplo, tiene reservada la instrucción goto aunque no la usa. Esto es principalmente porque en los lenguajes modernos se usa pero con formatos muy específicos y con nombres diferentes: son la sentencias exit, continue, break y exception (o try-catch); esto es, hay que ver su uso, es equivalente a la función que desempeñaba el goto:

exit. Salida incondicional de un programa.
continue. Salta incondicionalmente a la siguiente iteración en un ciclo.
break. Sale incondicionalmente de un ciclo.
exception (o try-catch). Esta es la instrucción menos parecida al GO TO, aparentemente, pero si uno analiza su funcionamiento, su objetivo es casi el mismo: cuando se ejecutan algunas sentencias y operaciones ocasionan errores (por ejemplo, en una operación cuando se intenta dividir ente cero o cuando se le pide a la máquina que lea un número, pero la entrada contiene letras o símbolos no numéricos) y en este caso, se ejecuta la sentencia exception (o la parte equivalente, catch) que sirve como etiqueta o punto de entrada para ejecutar una subrutina o un bloque para manejar el error (recuperarse o al menos morir graciosamente). Esto es el equivalente a una sentencia GO TO condicionada y la ejecución de un bloque etiquetado:

if [ocurrió un error] goto excepcion
excepcion:
{ ....
   líneas de código para manejar el error
   ....
   ....
}

En resumen:

  • La sentencia GO TO no es mala per se, solamente cuando se usa sin control y en exceso es cuando es dañina.
  • La sentencia GO TO ya amaestrada se usa actualmente para manejo de excepciones, por ejemplo, mediante sentencias ejecutables ya más evolucionadas.
  • La sentencia GO TO se puede usar cuando el uso de otras sentencias o estructuras de control puedan conducir a un flujo complejo del programa (nota. Cuidado en este caso, si pasa esto, puede ser indicador de que el flujo completo del programa necesite rediseñarse, si nos gana la flojera, puede pasarnos lo mismo que al monito de la historieta del principio del post: en vez de un bug horriblito, le salió un velocirraptor salvaje).



5582.30