Entradas

No hemos cambiado nada

Dentro de unos días, en Uruguay vamos a tener elecciones parlamentarias y presidenciales. Como siempre en estos casos hay campaña y hay temas que se destacan por sobre otros. Uno de los temas a los que más importancia se le ha dado, es el de la seguridad pública. Más allá de los argumentos y posturas que cada uno pueda tener, me interesaba comentar una frase que leí hace poco. Para ponerle un poco de contexto, es una frase en medio de un diálogo, que transcribo: - ¿Hablan ustedes del asesinato [...]? - Sí. ¿Ha oído usted hablar de este crimen? - ¿Cómo no? Ha ocurrido en las cercanías de la casa donde me hospedo. - ¿Conoce usted los detalles? - Los detalles, no, pero este asunto me interesa por la cuestión general que plantea. Dejemos a un lado el aumento incesante de la criminalidad durante los últimos cinco años en las clases bajas . [...] Y resalto " el aumento incesante de la criminalidad durante los últimos cinco años ". Parece sin duda una frase sacada del debate

GX24

Imagen
Se terminó otro Encuentro GeneXus, el número 24 en esta oportunidad. Otra vez un muy buen evento con una organización impecable y charlas de muy buen nivel. Hubo muchas charlas interesantes, no pude ver todas las que quería así que ahora me tengo que poner al día. Sobre la temática de las charlas, vi que hubo muchas charlas sobre diseño. Es una opinión subjetiva, pero creo que muchas más que en eventos anteriores. No creo que sea casualidad que se hable tanto de diseño: en la medida que maduran las plataformas (Smart Devices en particular, pero también Web) y los usuarios se acostumbran a aplicaciones de mejor nivel de diseño, nos exige a nosotros los desarrolladores de aplicaciones a pensar más en este tema. Una conclusión a la que todos llegan, es que el diseño tiene que ser parte del desarrollo de la aplicación desde el primer momento, y no ser algo que se agrega luego de terminar la funcionalidad. También vi que hubo muchas charlas sobre "cloud computing", otro

I Maratón de Montevideo

Imagen
El pasado domingo 11 de mayo de 2014 se llevó a cabo la primer edición de la Maratón de Montevideo . Con un tiempo de 4 horas y 43 minutos logré completar el recorrido de 42.195 metros, por lo que ahora puedo decir que soy maratonista :) Por qué correr una maratón es una pregunta que me han hecho bastante. Seguramente haya tantas respuestas como corredores, en mi caso lo que quería era demostrarme a mi mismo que era capaz de hacerlo. Habiendo corrido 21 kilómetros en 2013 , parecía un desafío interesante. No me había puesto meta de tiempo, sabía que bajar de 4 horas y media iba a ser difícil por los tiempos que estaba haciendo en los entrenamientos, y esperaba poder hacerlo en menos de 5 horas. El límite máximo, puesto por la organización, era de 6 horas. Hablando del entrenamiento, fueron 16 semanas de actividad cada vez más exigente, con 4 actividades semanales y llegando a correr más de 60 kilómetros por semana, con un máximo de 32km en una oportunidad. Es un entrenamiento

Disparo de eventos desde un User Control GeneXus en iOS

Imagen
Los User Controls en GeneXus permiten extender la funcionalidad provista por los generadores, para resolver escenarios de User Interface que no están resueltos en los controles estandar. Hay varios controles interesantes en el Marketplace , principalmente para Web pero también para Smart Devices . Si bien estos User Controls se utilizan mayormente para cambiar el aspecto visual de las aplicaciones, puede haber casos donde sea necesario ejecutar código del usuario. En iOS esto es muy fácil de hacer, si la implementación del control hereda de la clase GXControlBase o alguna de sus clases derivadas. Hay dos forma de hacerlo: disparando una acción del panel o disparando un evento del control. Disparar una acción del panel Para disparar una acción definida en el panel donde se encuentra el User Control, alcanza con incluir el siguiente código: [self fireActionWithName:actionName userInterfaceContext:nil withEntityData:nil]; donde self es la implementación del user control

Cómo hacer una aplicación para iOS en 45 minutos

Imagen
Es verdad, lo reconozco, el título de la nota es un poco tendencioso (1) ... Pero también es verdad lo que dice, que pude hacer una aplicación e instalarla en mi teléfono en 45 minutos, desde la idea hasta tenerla en ejecución. La aplicación es muy simple, obviamente. Necesitaba tener algunas notas para una presentación que iba a ser sin PPTs, para no olvidarme de decir nada. En realidad me hubiera servido cualquier aplicación de notas, pero se me ocurrió que podría ser divertido hacer la aplicación, y con GeneXus es realmente fácil, así que me animé. La aplicación tiene dos entidades con sus respectivos "work with": Presentaciones y Notas. Las Presentaciónes tienen un Título, las Notas tienen un Titulo y una Descripción. Solo eso. La otra pantalla que tiene la aplicación es el "modo presentación", donde se elige la presentación que voy a hacer y se muestran las notas en un Paged Grid , el título más grande y la descripción al pie. Para pasar de una nota

Operador condicional ternario en Objective-C

Imagen
En la muchos lenguajes de programación (en los que provienen de C al menos...) existe un operador condicional ternario de la forma condición ? expresión1 : expresión2 que evalúa la condición , y el resultado de la expresión completa será expresión1 o expresión2 según el la condición evalúe a true o false respectivamente. En Objecive-C, la condición debe ser evaluable como una expresión booleana, por lo que se puede usar un objeto, y en ese caso el significado es el mismo que preguntar si el objeto es distinto de nil . Por otro lado, Objective-C adopta una convención del compilador GCC (según esta respuesta en StackOverflow), donde la expresión1 es opciona, pudiendo escribir condición ? : expresión2 y en ese caso, si la condición es verdadera, será además el resultado de la expresión completa. ¿Para qué sirve todo esto? Sirve por ejemplo para escribir una asignación cuando el valor asignado puede ser nil y en ese caso queremos asignar un valor por defecto. Al

Finanzas.app

Imagen
Como comentaba Rodrigo en su blog Neurona Financiera , el registro de nuestros gastos es fundamental si queremos tener controladas nuestras finanzas. Yo también pasé como él por varias etapas: una planilla Excel, un programa Visual Fox Pro hecho con GeneXus 9.0 que después migró a .Net, una aplicación web en Google App Engine. Finanzas.app es la siguiente iteración en este ciclo, está desarrollada en GeneXus Tilo B3 , y es una aplicación que funciona completamente desconectada. El hecho de que sea Offline es el punto fuerte de la aplicación. Seguramente no se compara en funcionalidad con las alternativas (por ejemplo ZetaCuentas por nombrar otra hecha con GeneXus), pero me permite tener los datos locales sin que intervenga un tercero. No me considero extremadamente paranoico, pero cuando hablamos de dinero, prefiero no darle la información a otros... Cómo obtener la aplicación La aplicación la estoy desarrollando para uso personal, por lo que no me interesa distribuirla en fo