Blog
Notas entre bastidores: cómo se construyen nuestros juegos de puzles, de dónde vienen los puzles clásicos y qué aprendemos al hacerlos.
- Por qué mi enlace de la App Store dio 404 y la página mostraba capturas de 2018Notas de desarrollo sobre dos sorpresas con una app antigua de iPhone que recibió una versión nueva: un enlace genérico de la App Store que daba «no encontrado» fuera de un país y una ficha que seguía mostrando capturas de 2018.
- Guía 2.1 de App Store «Information Needed»: lo que enviéNotas de desarrollo: tres de mis últimos nueve envíos para iPhone volvieron como Rejected por la Guideline 2.1 Information Needed. No era un informe de errores, sino una petición de información. Esto es lo que Apple pidió en mi caso y lo que envié.
- Capturas de App Store sin teléfono: Robolectric, un cargador de imágenes falso y un navegador sin interfazNotas de desarrollo: cómo hago capturas de 1206x2622 para App Store de mis apps de iPhone en un portátil con Windows, sin dispositivo y sin minutos de compilación en la nube, dibujando la interfaz Compose compartida en pruebas unitarias con Robolectric.
- Un código QR para dos tiendas de apps: una pequeña página de redirecciónNotas de desarrollo: cómo mi web pasó de un código QR de Google Play a un único QR universal que lleva un teléfono Android a Google Play y un iPhone a la App Store, con una página de redirección corta, las trampas que encontré y los inconvenientes.
- Reescribir para Kotlin Multiplatform sin cambiar el comportamiento: el código antiguo como oráculo de pruebasNotas de desarrollo: cómo sustituí XmlPullParser, HtmlCompat, SimpleDateFormat y java.util.Random por Kotlin común puro para iOS, manteniendo el código antiguo en las pruebas para demostrar que el resultado sigue idéntico, y qué no cubre esa prueba.
- Una lista remota sin servidor para «Más juegos»: un archivo JSON en GitHub PagesNotas de desarrollo: cómo la lista de promoción cruzada de una docena de juegos Android pasó del código de la app a un único archivo JSON en GitHub Pages, con caché, copia sin conexión y comprobaciones estrictas, de modo que un juego nuevo no exige actualizar los demás.
- Depurar un iPhone desde Windows por USB: capturas y registros con PythonNotas de desarrollo: cómo hago capturas, lanzo una app y leo su registro en un iPhone 7 desde un portátil con Windows con la app Apple Devices y la herramienta de Python pymobiledevice3, con un ejemplo real de por qué un banner de anuncios estaba vacío.
- Migrar una app Android a Kotlin Multiplatform con AGP 9: siete trampasNotas de desarrollo: siete cosas que se rompieron o se quedaron en silencio al pasar un juego Android con Compose a un módulo compartido de Kotlin Multiplatform con Android Gradle Plugin 9, y cómo una comparación de capturas detectó una.
- Publicar una app de iPhone sin Mac: Kotlin Multiplatform, un Mac en la nube y TestFlightNotas de desarrollo: cómo llevé un juego Android en Kotlin y Compose a TestFlight y a la revisión de la App Store desde un portátil con Windows, con Kotlin Multiplatform, un runner de macOS en GitHub Actions y una clave de API de App Store Connect.
- Sensación de juego en Jetpack Compose sin motor de juegoSquash, stretch, partículas, sonido sintetizado y vibración en Jetpack Compose: cómo un puzle de bloques gana sensación de juego con un Canvas y un bucle.
- Detectar un anuncio intersticial bloqueado en Android con eventosUn jugador dice que la pantalla se congeló tras un anuncio, pero no hay fallo. Cómo registrar el ciclo de vida de AdMob en Firebase Analytics para verlo.
- Dos docenas de apps Android mantenidas por un solo devCómo un desarrollador comparte avisos de actualización, guardado en la nube, promoción cruzada remota y un sitio generado en unas dos docenas de apps.
Cómo se genera un cartón de Tómbola: seis cartones, noventa númerosNotas de desarrollo: cómo Tombalings crea series de seis cartones que cubren del 1 al 90 exactamente una vez, y cómo se temporiza a los rivales para que parezcan humanos.
Cómo creamos niveles de pentominós con Dancing LinksUna historia de desarrollo: cómo la cobertura exacta y los Dancing Links de Knuth resuelven y generan niveles de Pentolings, de 63 posiciones a puzles únicos.
Pentominós: la historia de las 12 piezas y de GolombQué es un pentominó, cómo Solomon Golomb los nombró y estudió en los años 50, cómo Martin Gardner los hizo famosos y por qué un 6x10 tiene 2339 soluciones.- Cumpleaños del 29 de febrero: ¿cómo se cuenta la edad?Cómo cuentan la edad y celebran los nacidos un 29 de febrero: regla del año bisiesto (4, 100, 400), 28 de febrero o 1 de marzo y cómo lo tratan las apps.
- Cómo calcular la edad exacta en años, meses y díasCómo calcular la edad exacta en años, meses y días a mano, con ejemplos de préstamo, los días hasta tu cumpleaños y el problema de los meses desiguales.
- Errores y límites del IMC: deportistas, edad, embarazo, unidadesErrores comunes y límites del IMC: por qué deportistas, mayores, embarazo y niños requieren cuidado, y cómo la confusión de cm/kg y ft/lb arruina el dato.
- Qué es el IMC: cómo se calcula y cómo interpretar el resultadoQué es el índice de masa corporal (IMC), la fórmula kg/m2, las categorías de la OMS para adultos, ejemplos y cómo hallar el peso saludable para tu altura.
- ¿De dónde vienen los datos de terremotos? AFAD, Kandilli, USGS¿Por qué dos instituciones dan magnitudes distintas para el mismo sismo? Cómo publican, revisan y actualizan AFAD, Kandilli y otros sus listas recientes.
- Terremoto: qué hacer antes, durante y después (guía AFAD)Una lista tranquila basada en las guías de AFAD: mochila de emergencia, Agacharse-Cubrirse-Agarrarse durante el temblor y pasos posteriores. Llama al 112.
- Magnitud e intensidad de un terremoto: cuál es la diferenciaLa magnitud mide la energía liberada por un sismo; la intensidad, la sacudida en un lugar. Así se diferencian las escalas de Richter, Mw y Mercalli.
- Tres en raya: historia de un juego resuelto y sus variantesDel OXO en EDSAC en 1952 al tres en raya definitivo: por qué es un juego resuelto, qué tan pequeño es su árbol de juego y qué variantes existen.
- Cómo se generan y verifican cientos de niveles de puzleCómo crean los juegos de puzles cientos de niveles sin dibujarlos a mano: generadores, solucionadores, medir la dificultad, ir hacia atrás y escalada.
- Cómo dar el mismo puzle diario a todos sin un servidorCómo un juego puede dar el mismo puzle diario a todos sin servidor: semilla a partir de la fecha, aleatoriedad determinista, husos horarios y trampas.
Historia del Mahjong Solitario y su diferencia con el MahjongBreve historia del Mahjong Solitario, desde un juego de ordenador de 1981 hasta los móviles de hoy, y en qué se distingue del Mahjong clásico.
Cómo garantizamos que un Mahjong Solitario tenga soluciónCómo construye Tilelings cada reparto de Mahjong Solitario hacia atrás desde un tablero vacío para que siempre exista una solución.