Archive
Videoconferencia nativa en el navegador con WebRTC
WebRTC (Comunicaciones en Tiempo Real para la Web) está madurando muy rápido. Para los muy interesados y algo pacientes, este vídeo de Google I/O 2012 les interesará un montón!
Para los que, como nosotros, están interesados en lo que se puede hacer con esto y Chamilo LMS, pues queda claro que muchísimo.
A partir de la red social de Chamilo, uno se podría directamente conectar a otro usuario por videoconferencia sin sobrecargar el servidor de Chamilo (conexión directa). Con IPv6 y un poco de multicast, podríamos tener un solo docente dictando a miles de estudiantes en simultáneo sin necesidad de integración de Ustream, Livestream, JustinTV ni nada de esto.
Para probar WebRTC con la videoconferencia en Firefox en Ubuntu *hoy*, aquí va un pequeño procedimiento a seguir en el navegador para, primero, instalar una versión inestable de Firefox nocturno (versión 21 al momento de escribir estas líneas) en paralelo a su versión actual (cortesía de otro blog):
sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa sudo apt-get update sudo apt-get install firefox-trunk
Después de esto, un enlace “Navegador Web Nightly” aparecerá en el menú de Ubuntu: Aplicaciones > Internet > Navegador Web Nightly.
Una vez lanzada esta versión, ir aquí con esta nueva versión. Al momento de escribir estas líneas, los demos son un poco inestables todavía, pero la idea es que por lo menos uno puede verificar que su webcam y su microfono están tomados en cuenta por los distintos demos disponibles.
Pues ahí va… El futuro de Chamilo tiene videoconferencia como Skype integrada al navegador (si tienes el buen navegador)!
Cursos de desarrollo especializado Chamilo LMS 1.9
En BeezNest estamos actualizando nuestro equipo de desarrollo a las
nuevas estructuras de desarrollo en Chamilo LMS 1.9.
Por ello, de todas maneras estaremos dictando unos cursos internos
*informales* en las oficinas de BeezNest Latino (oficina de Miraflores, Lima, Perú)
Nuestra infraestructura no nos permite trasmitir en buena calidad estos
cursos en streaming (principalmente por una obra que se está ejecutando
al costado de nuestro edificio), pero si desean, y aunque nuestro local
esté modesto y les advertimos con muy poca anticipación (falta menos de
una hora para el primero), estos cursos son abiertos a paticipación de
personas externas, y ustedes tanto como sus colegas están bienvenidos (previa
coordinación telefónica para evitar reventar el local) para participar
en ellos. Coordinar con Michela al 01/7195191.
Lunes 4/02/2013: 10am-1pm:
* El proceso de validación y calidad de código en Chamilo LMS
* Proceso de instalación (a nivel de código y estructura de datos) de
Chamilo LMS 1.9
* Global.inc.php: inicialización del sistema
* Estructura de página principal de cursos
Martes 5/02/2013: 10am-1pm
* Pruebas unitarias y sus ventajas para la calidad de software
* Generar pruebas unitarias
* Herramientas de curso (estructura de datos y requerimientos para crear
más herramientas)
Miércoles 6/02/2013: 10am-1pm
* Sistema de plantillas Twig
* Herramienta de ejercicios
* Herramienta de foros
Jueves 7/02/2013: 10am-1pm
* Sesiones
* Herramientas de reportes
* Herramientas de administración
No habrá entrega de certificados. Se trata de un curso de participación
libre con el objetivo de capacitar a futuros desarrolladores de Chamilo.
No es necesario participar a todos los cursos, pero no habrà material
digital/impreso distribuido, por lo que… lo que no se ve, se pierde.
Aprendizaje basado en el funcionamiento del cerebro
Según investigaciones en el ámbito de como el cerebro aprende (“Brain-Based Learning”, por On Purpose Associates, 2004), los siguientes elementos son válidos para un mejor aprendizaje:
- El cerebro puede encargarse de varias actividades a la vez (por ejemplo, escuchar y oler)
- El aprendizaje implica todo el cuerpo
- La búsqueda del sentido de las cosas es inato y viene por aplicación de patrones
- Las emociones son críticas para la generación de patrones
- El cerebro procesa el todo y las partes en simultáneo
- El aprendizaje involucra la atención concentrada y la percepción periférica
- El aprendizaje involucra procesos conscientes e inconscientes
- Tenemos dos tipos de memoria: espacial y “rote” (memoria por repetición sin ser necesario el entendimiento)
- El aprendizaje y el entendimiento se mejoran si los hechos están insertados en memoria espacial, o memoria natural
- Los retos y las amenazas disminuyen la eficiencia del aprendizaje
Chamilo LMS favorece varios de estos elementos:
- Chamilo permite el uso de varios medios (vídeos, audios, textos, imágenes y juegos) y facilita su elaboración por el docente (herramientas de dibujo, grabación y generación de audio, etc)
- El docente puede fácilmente transmitir elementos de cursos que involucren el resto del cuerpo. El uso de Chamilo desde su casa permite a los alumnos practicar gestualmente sin el freno de la vergüenza
- La integración de definiciones propias de vocabulario, incluyendo, por ejemplo, elementos históricos mediáticos, permite encontrar sentido en lo enseñado. Generar sentido y emociones depende altamente de la manera en la cual el docente decide presentar el contenido.
- (idem punto 3)
- La presentación de contenido de aprendizaje en formato de cursos (todo) con varias herramientas para temas específicos (partes) permite al cerebro trabajar sobre ambos contextos (global y parcial)
- Presentar contenido que combine concentración y percepción es hecho factible por la facilidad con la cual Chamilo permite la integración de medios
- (idem punto 6)
- A través de la posibilidad, para Chamilo, de elaborar lecciones con mini-pruebas tras cada capítulo, se pueden “animar” las memorias espaciales y ote para cada tipo de contenido presentado. Típicamente, 5 páginas de texto/medios serán seguidas de una mini-prueba de 5 preguntas que asegura que el cerebro del estudiante se despierte al objetivo concreto del aprendizaje
- (idem punto 8)
- Por el uso de una herramienta de aprendizaje como Chamilo LMS, que permita el aprendizaje al ritmo personal del estudiante, se puede reducir las amnazas y el estrés y optimizar el ambiente de aprendizaje. El aprendizaje durante espacios temporales más tranquilos (en casa, de vacaciones, etc) permite la elaboración mental de conceptos más complejos y su respectivo aprendizaje. La capacidad, para Chamilo LMS, de funcionar en ambientes móviles, le permite fácilmente ser usado en cualquier situación.
Chamilo LMS es un sistema de gestión y distribución de cursos virtuales desarrollado, entre otros, por BeezNest. Se puede descargar en la página oficial de Chamilo. Puede contactar a BeezNest para una propuesta formal de implementación y asistencia en ventas@beeznest.com.
Cursos presenciales de configuración de Apache, Lima, Perú
Frente a la maduración progresiva de los servicios digitales orientados a consumo masivo, por internet, de servicios brindados por empresas peruanas, hemos detectado un gran incremento, durante los últimos meses, del interés hacia la optimización de configuraciones web para la disminución del uso de recursos y la entrega rápida y a menor costo de productos o servicios a los consumidores, ya sea a través de dispositivos móviles (menor contenido, más necesidad de velocidad) como de dispositivos clásicos (mayor contenido sobre líneas más rápidas).
Por ello, BeezNest, consultora con especialización en optimización de sitios web y desarrollo de soluciones e-learning en internet, decidió plantear una propuesta de cursos adaptada a la demanda creciente, empezando por un curso sobre el elemento más básico y esencial de la optimización de servicios web: el servidor web.
Este mes de Marzo 2013, estamos planificando una serie de mini-talleres de 4 horas para aprender en más detalles lo que es Apache 2.2 y como configurarlo bien.
Cada curso tendrá un costo de S/.100 (US$35) por persona, y el programa está indicado a continuación. Para iniciar el curso, se requiere de un mínimo de 10 participantes.
El último curso será seguido de un examen (opcional) de 20 preguntas (de un valor de S/.100 también) que llevará a la certificación (o no) de las personas que han tomado el curso por parte del grupo BeezNest. También entregará una constancia a los participantes del conjunto completo de cursos (con la excepción del curso 1 que es opcional). NO se entregarán constancias para participaciones parciales (que no hayan asistido a todos los cursos). Los alumnos tendrán acceso al material del curso en línea en nuestro portal Chamilo de cursos por un plazo de un año.
Las personas que pasen (con éxito) el examen de certificación serán publicadas, con sus detalles de contacto, en la página correspondiente del sitio web de BeezNest, la cual será promocionada por el equipo de BeezNest frente a cualquier consulta por técnicos con habilidades de cofiguración de Apache.
Ciertos (pocos) elementos del curso usan ejemplos de PHP, pero serán fácilmente adaptables a otros lenguajes.
Curso 1: Introducción a la noción de servidores web (4h, S/.100)
- Que es un servidor web?
- Que servidores web existen en la actualidad?
- Que son los VirtualHosts y como usarlos?
- Que es Apache y como configurarlo de forma básica?
Curso 2: Configuración básica de Apache (4h, S/.100)
- La configuración por defecto de Apache: como modificarla
- Access y Error logs: formatos por defecto y custom-made
- Como declarar Virtual Hosts de la manera correcta
- Directiva <Directory>
- Directivas de configuración de PHP (mod_php)
Curso 3: MPMs, Rewrite y Aliases: como manipular y modificar las pedidas usuarios (4h, S/.100)
- Que son los MPMs y como afectan el rendimiento de mi sitio? MPM-event, MPM-prefork, MPM-worker
- ModRewrite: Redirigir y generar URLs amigables: introducción
- ModAlias: Incluir carpetas externas dentro de un sitio
Curso 4: Optimización de Apache: Haz que tu sitio vuela! (parte 1) (4h, S/.100)
- Entender los tipos de datos: medios estáticos, medios dinámicos y páginas dinámicas
- Entender el flujo de datos. HTTP, HTML, AJAX y PHP
- Sprites y agregación CSS/JS: Entender el peso de muchos archivos
Curso 5: Optimización de Apache: Haz que tu sitio vuela! (parte 2) (4h, S/.100)
- Content Delivery Networks (CDN): multiplicar las pedidas simultáneas para acelerar su sitio
- ModRPAF: Usar Apache con un reverse proxy
- ModExpires: aprovechar del caché del navegador del usuario para reducir el tráfico
- ModHeaders: cambiar las cabeceras de los archivos para customizaciones más finas
Para inscribirse, escribir a ventas@beeznest.com, con asunto: “Curso Apache Marzo 2013″.
Sobre BeezNest
BeezNest es un grupo empresarial fundado en el 2002 y presente en Europa (sede Bélgica) y América Latina (sede Perú) con especialización en soluciones e-learning y optimización de infraestructura. BeezNest es la empresa atrás del software libre Chamilo LMS, que cuenta con 3 millones de usuarios libres a través del mundo, que usan este sistema para aumentar la disponibilidad de recursos y servicios educativos de calidad. BeezNest también se encarga de optimizar grandes sitios web en infraestructuras dedicadas seguras, y vigilar parques de servidores contra ataques, sobrecargas y vulnerabilidades.
Contacto: info@beeznest.com
Funcionamiento de sesiones en Chamilo LMS 1.10
“Sesiones” es un término ambiguo, el problema siendo encontrarles un nombre adecuado para todos los usos. Algunos otros nombres son:
- Programas
- Programas académicos
- Periodos (aunque esta denominación es algo equivocada – existe otra noción que conviene más, que es la categoría de sesiones)
- Ciclo (de aprendizaje)
- Sección
- …
En realidad, las sesiones representan un periodo (generalmente limitado) de tiempo durante el cual un grupo de alumnos sigue uno o más cursos con el acompañamiento de un profesor designado para este curso durante este periodo. Por ello, en muchas ocasiones usamos en el pasado la representación siguiente

Sesiones
A la izquierda del diagrama, reconocemos el tríangulo clásico Profesor – Curso – Alumnos, y al centro del diágrama vemos que el mismo curso se encuentra con otro curso al mismo nivel, y con un responsable distinto del profesor quien elaboró el curso inicialmente.
En las versiones de Chamilo anteriores a la 1.10, disponíamos de 4 fechas para cada sesión:
- Inicio de acceso para los docentes
- Inicio de acceso para los alumnos
- Fin de acceso para los alumnos
- Fin de acceso para los docentes
La lógica de la diferencia de fin de acceso entre docentes y alumnos, es que el docente pueda preparar su curso (previamente a la apertura a los alumnos) y recuperar datos importantes (después delcierre para los alumnos), y que la sesión pueda “vencerse” y disaparecer del listado del docente, para que este pueda concentrarse sobre las sesiones más recientes.
En Chamilo LMS 1.10, agregamos dos fechas más, que son únicamente informativas. Así, tenemos las 6 fechas siguientes:

Fechas de sesiones
- Inicio de acceso para los docentes
- Inicio de acceso para los alumnos
- Inicio oficial del ciclo/programa/sesión
- Fin oficial del ciclo/programa/sesión
- Fin de acceso para los alumnos
- Fin de acceso para los docentes
En la imagen lateral, podemos ver, por ejemplo, la selección de las fechas siguientes:
- Inicio de acceso para los docentes: 2012-11-01 (un mes antes)
- Inicio de acceso para los alumnos: 2012-11-26 (unos días antes)
- Inicio oficial del ciclo/programa/sesión: 2012-12-01 (el día de lanzamiento, como visto en la lista de cursos)
- Fin oficial del ciclo/programa/sesión: 2012-12-31 (el día de cierre, como visto en la lista de cursos)
- Fin de acceso para los alumnos: 2013-01-04 (unos días después)
- Fin de acceso para los docentes: 2013-01-31 (un mes después)
Como si esto no fuera suficiente a nivel de flexibilidad, también es posible cambiar el comportamiento de las sesiones cuando pasó la fecha de cierre (para alumnos o para docentes).
Los tipos de acceso son:
- Acceso completo
- Acceso en lectura sola
- Sin acceso
El caso “Acceso completo” sirve para *ignorar* las fechas definidas. Por ejemplo, por un tiempo limitado, se reabre la sesión para el acceso de todos.
El caso “Acceso en lectura sola” permite acceder pasada la fecha de cierre. En este caso, la sesión aparece en la página “historial de cursos” y el acceso para consultas es posible pero no se puede participar más en ninguna herramienta de participación (foro, ejercicios, wiki, etc).
El caso “Sin acceso” cierra por completo el acceso a la sesión a partir de la fecha de cierre para el rol correspondiente. Por ejemplo, si soy alumno y estoy inscrito en la sesión que tiene como fecha de fin de acceso para alumnos el 04/01/2013, al pasar al 05/01/2013, disaparece esta sesión de mi lista. Tampoco se puede ver en mi historial de curso. El docente, no obstante, seguirá viéndola en su lista de cursos hasta el 31/01/2013.
Porque cobramos por media hora?
Para las empresas que recién se lanzan en temas de sopoprte en el mundo del software, y para nuestros clientes que quizás se preguntan porqué cobramos un mínimo de media hora por intervención, me gustaría explicar un poco mejor lo que hacemos.
Nuestro negocio, básicamente, es desarrollar sistemas de información (en particular Chamilo, Drupal y Dolibarr) y dar soporte sobre ellos (esto incluye también cuidar los servidores que los alojan). Toda esta actividad radica en los servicios “humanos” de personas altamente calificadas para brindar estos servicios a quien los necesiten.
Para definirlo de forma simplística, alquilamos actividad cerebral, es decir que damos acceso a nuestros clientes a mentes brillantes para que resuelvan problemas para ellos, y les permitimos alquilar estas mentes brillantes solo cuando las necesiten.
Por lo tanto, también estamos tomando una gran cantidad de riesgo al poner estas mentes brillantes a su disposición (si nadie las quiere por un tiempo, tenemos que seguir asgurando sus ingresos).
También pueden haber cantidades de discusiones sobre la manera en la cual un cierto problema es considerado resuelto o no, pues los problemas de software muchas veces se indican de forma interpretada, dando las impresiones personales de cada uno porque cada uno tiene circonstancias particulares y vive sus problemas de maneras distintas. Mucho de este trabajo no puede ser contabilizado sin generar frustraciones. Por lo tanto, el trabajo de nuestros responsables de soporte, responsables del diálogo con los clientes y de ser más explícitos para facilitar este diálogo, está contabilizado como parte del tiempo de resolución del problema.
Analizando el tiempo necesario para un ingeniero para resolver un problema, aparecen de forma más clara las razones por las cuales se considera un tiempo mínimo de atención. Estos son tiempos mínimos aproximados basados en la realidad de la mayoría de los casos que atendemos. Se considera (en este caso) que la ficha del cliente, indicando los accesos comunes al sistema del cliente ya fueron registrados:
- 60s: Lectura del correo/mensaje del cliente
- 240s: Registro de la incidencia (incluye: clasificación, designación de título claro que permitirá luego apoyarse en esta incidencia para cortar el tiempo de tratamiento de otras, indicación copiado-pegado del detalle del reporte por el cliente, asignación de las personas que deben estar al tanto de esta incidencia, asignación de un tiempo aproximado de resolución, asignación de un momento aproximado de entrega, definición de dependencias con otras incidencias, etc)
- 60s: Conexión al sistema del cliente (o a una copia local) y reproducción del problema
- 60s: Creación de nuevo contexto de prueba que permita reproducir la incidencia en un sistema que no afecte al cliente (para el tiempo de trabajo en este)
- 300s: Investigación y, quizás, resolución del problema (se trata de un tiempo mínimo, en caso de poder aprovechar a su máximo la experiencia de nuestros ingenieros, pero no son raros los casos en los cuales esta resolución pueda tomar más de 2h)
- 120s: Verificar, una última vez, que la corrección resolvió el problema
- 60s: Registrar el cambio en nuestros repositorios de historial para cada cliente – esto implica también vincularlo con el código de la incidencia y darle un comentario adecuado
- 180s: Reportar al cliente (y en la incidencia) sobre la resolución (o no) de la incidencia
- 120s: Terminar, reportar su tiempo consumido, tomar 1 minuto de relajación para pasar a otra tarea
En total, el tratamiento de una sola incidencia representa un trabajo mínimo de 20 minutos, y en promedio (con la resolución de temas más complejos) más de media hora.
Por esta razón, nos es imposible asegurar, en buenas condiciones de seriedad y concentración, asegurar un tiempo de intervención menor a 20 minutos.
Tunel SSH revertido
Si tienes la suerte de tener un servidor al cual te puedes conectar en SSH, y tienes que conectarte (en terminal, en SSH) a la compu de un amigo que está atrás de un router, este tutorial es para ti!
Un tunel SSH es un especie de “canal” virtual dentro del cual los datos pueden pasar de una compu a otra. Como SSH es un protocolo seguro, se asume que estos datos, pasando ahí, son tan seguros que SSH mismo.
Cuando una compu está a trás de un router, el problema es que uno puede acceder al router pero no a la compu misma. Se puede arreglar configurando un firewall con redirección de puertos en el router, pero ya es algo avanzado, y si no tienes la mano sobre el router y tu amigo no sabe como configurarlo… estás frito.
La solución entonces es:
- que el amigo se conecte a tu servidor en SSH (le puedes habilitar una cuenta o dar tu cuenta con otra contraseña)
- que te conectes también al mismo sevidor
- en el servidor mismo, que te conectes al puerto en el cual tu amigo se conectó
Por ejemplo…
Tu amigo:
ssh -R 54321:localhost:22 usuariocompartido@138.47.99.99
Tu:
ssh usuariocompartido@138.47.99.99 ssh localhost -p 54321
Y ya está! Estas en el servidor de tu amigo, conectado en SSH!
Un Varnish gracioso
Varnish tiene una funcionalidad interesante llamada “grace” (gracia). Cuando se usa esta funcionalidad, el efecto es que, si el (o los) servidor web que está atrás de el no responden por unos segundos, Varnish puede responder al usuario una versión anterior de la página (si la tiene). Esto permite reducir altamente la cantidad de casos en los cuales un usuario se encuentra con una página tipo “Guru meditation”.
Para implementar esta funcionalidad, lamentablemente, no basta de simplemente poner req.grace = 30s o algo así, como la documentación básica de Varnish lo podría hacer pensar, sino es necesario implementar una configuración un poco más compleja. La página siguiente lo explica en muchos detalles: https://www.varnish-software.com/static/book/Saving_a_request.html
Principalmente, se trata de hacer algo de este tipo (es solo lo necesario, sabiendo que la parte del backend se declara para poder tener una noción de cuando consideramos que está enfermo – el objetivo de la sección .probe – asumiendo que el lector ya sabe de la configuración del módulo server-status de Apache, y estas cosas):
#1. Definición del backend
backend default {
.host = "192.168.1.5";
.port = "80";
.probe = {
.url = "/server-status";
.interval = 3s;
.window = 5;
.threshold = 2;
}
}
sub vcl_recv {
#2. Definición del tiempo de grace cuando el backend está bien
if (req.backend.healthy) {
set req.grace = 10s;
} else {
#3. Definición del tiempo de grace cuando el backend no responde
set req.grace = 10m;
}
# Activaremos lo siguiente luego
#unset req.http.Cookie;
}
#4. El tiempo de grace del backend mismo siempre debería ser
# mayor o igual al tiempo de grace de Varnish. Este tiempo representa
# el tiempo durante el cual Varnish guarda una copia local de cualquier
# archivo, así que puede impactar mucho en uso de memoria.
sub vcl_fetch {
set beresp.grace = 10m;
}
Obviamente hay que entender bien lo que esto provoca para poder adaptarlo a cada caso de uso.
Aquí va un pequeño procedimiento de pruebas. Tengo una máquina Varnish local (192.168.1.4) y un servidor web (Apache, en 192.168.1.5) al cual llama el Varnish. Así estoy seguro de isolar los puntos de manera adecuada. Inicio sin niguna configuración particular de ttl en Varnish.
- Los dos sistemas (Varnish y Apache) están corriendo. Cargo una página de mi sitio. La veo. Todo bien.
- Apago el servidor web. Refresco la página (F5). Tengo un error Varnish (Guru meditation).
Ahora aplico los cambios sugeridos en vcl_recv y vcl_fetch (a parte de beresp.ttl que no defino) en mi configuración de Varnish:
- Cargo la página. Se ve.
- Apago el servidor web. Recargo (F5). Error. Re-inicio el servidor web. Se ve de nuevo.
- Agrego parámetros en Varnish para la gestión de Drupal (por si a caso). Re-inicio Varnish.
- Cargo la página. Se ve.
- Apago el servidor web. Recargo (F5). Error. Re-inicio el servidor web. Se ve de nuevo.
- Agrego beresp.ttl = 1m; Reinicio Varnish.
- Cargo la página. Se ve.
- Apago el servidor web. Recargo (F5). Error. Re-inicio el servidor web. Se ve de nuevo.
Obviamente, es probable que Drupal esté afectando algo, ya que es dinámico. Probemos con algo más estático.
En el servidor web, me creo un archivo abc.html en la raíz.
- Cargo la página (estática abc.html). Se ve.
- Apago el servidor web. Recargo (F5). Error. Re-inicio el servidor web. Se ve de nuevo.
El problema es que los recursos que estamos pidiendo, los estamos pidiendo con Cookies activados. Esto depende de como está la configuración de Varnish acerca de los cookies, pero si, como yo, usan Drupal atrás, hay una serie de cosas que no van a funcionar simplemente porque tener un cookie implica que Varnish desconsidera poner estos recursos en “estado de gracia”. Por lo tanto, podemos hacer una prueba simple…
Dentro de la configuración de Varnish, vamos (para la prueba) a eliminar cualquier Cookie:
sub vcl_recv {
#2. Definición del tiempo de grace cuando el backend está bien
if (req.backend.healthy) {
set req.grace = 10s;
} else {
#3. Definición del tiempo de grace cuando el backend no responde
set req.grace = 10m;
}
unset req.http.Cookie;
}
Lo demás lo dejamos como indicado arriba. Ahora hacemos una prueba.
- Cargo la página (raíz del sitio, página dinámica). Se ve.
- Apago el servidor web. Recargo (F5). Se ve!!!
Esto lo logramos porque ninguna regla posterior invalida el caché de Varnish.
Ahora obviamente hay que afinar. El problema con Drupal es que, si uno lo deja, agrega un paquete de Cookies que se vuelve incontrolable. Para analizarlos, podemos usar Firebug, ponernos en la pestaña de Cookies, y recargar la página. A todo lo que *no* sea drupal_uid, DRUPAL_UID o drupal_user (si usa authcache, puede ser un caso particular) puede ser eliminado.
Curso: Medición con XHProf y técnicas comunes de optimización, con diferencias entre PHP4 y PHP5
Como de toda forma tengo que preparar el programa de mi curso: Medición con XHProf y técnicas comunes de optimización, con diferencias entre PHP4 y PHP5, lo cuelgo por aquí por si interesa alguien.
PHP
- Historia del proyecto PHP (15′)
- Diferencias entre PHP4.3, PHP5, PHP5.2, PHP5.3 y PHP5.4 (30′)
Profiling
- Zend Debugger, XDebug y XHProf (15′)
- Instalación y configuración XHProf (30′)
- Medición con XHProf, Xdebug y KCacheGrind (30′)
Optimización
- Optimización de servidores (hardware + SO) (10′)
- Optimización de servidores web (10′)
- Optimización de bases de datos (10′)
- Técnicas de micro-optimización de PHP (15′)
- Caché: system, opcode, script/variables (30′)
- PHP-FPM (15′)
- Integración continua con Jenkins PHP (30′)
Referencias
Retrospectiva de TechCamp Lima 2012
La semana pasada he participado a uno de los eventos más gratificantes de desarrollo de “responsabilidad social” para llamarlo algo que no es exactamente correcto pero que, en falta de mejores palabras, tendrá que ser mi descripción corta.
El TechCamp es una iniciativa del Departamento de Estado de los Estados Unidos de América con la cual se busca desarrollar colaboraciones duranderas entre instituciones de la sociedad civil y tecnólogos con un fuerte sentido de responsabilidad ciudadana.
La organización es simple:
- los tecnólogos exponen un tema cada uno (en metodología de cita-rápida)
- representantes de organizaciones de la sociedad civil escogen un tecnólogo que parece poder solucionar problemas comunes que enfrentan
- se desarrollan modelos para solucionar estos problemas
Esto se hace en un ambiente convivial, poniéndo de lado los asuntos comerciales, buscando soluciones o compartiendo problemas para elaborar soluciones que cubran las necesidades de varias organizaciones en conjunto (de esta forma es mejor aún ya que permite lograr una sostenibilidad mayor, dividiendo los costos de implementación y mantenimiento a futuro, si estos existieran en la solución propuesta).
Esta actividad se desarrolla durante dos días completos (más una noche de preparación y unas horas de retrospectiva). El Departamento de Estado se encarga de financiar razonablemente (para el contexto laboral local se podría decir generosamente en este caso) los tecnólogos, de tal forma que puedan dedicar toda su energía durante estos 2 días (y un poco más) en encontrar soluciones.
Los temas tratados durante este TechCamp fueron variados (creo que fueron 11 temas en total):
- la problemática de la traducción (localización) en idiomas nativas, tema crítico para un país como Perú que cuenta con más de 30 idiomas indígenas usados a nivel nacional, de las cuales solo 3 son reconocidas.
- la elaboración de sistemas automatizados para la propagación de noticias (“robots”)
- el propio uso de redes sociales para la difusión de sus actividades
- el uso de mapas para representar datos de forma atractiva
- … una serie de otras que no recuerdo bien (pues tuve que concentrarme en lo mio) …
- el uso de la tecnología para capacitar a personas en lugares poco accesibles
Hagamos un “fast-forward” para llegar a la conclusión de 2 días de trabajo intenso para mi grupo. Yo me encargué (obviamente, debido a mi especialización en el campo de la capacitación a distancia) del último tema.
Durante este TechCamp, llegamos a las siguientes constataciones
- las instituciones de la sociedad civil tienen dificultad en armar propuestas que permitan a sus empleados o sus miembros desarrollarse como profesionales, pues no tienen un mecanismo que permita enseñar a distancia y la movilización de los recursos humana es costosa o impráctica (pasajes, seguridad, grupos locales de pocas personas pero presencia nacional dispersa, …)
- una plataforma como Chamilo puede solucionar una parte de estos problemas. Sin embargo, representa un costo mantener un sistema de este tipo y el tiempo necesario para rentabilizar un nuevo modelo de capacitación puede ser largo
- Chamilo es (también) una asociación sin fines de lucro, por lo que comprende la situación de las instituciones como las de mi mesa, y justamente soy representante legal de esta asociación
- Las instituciones que tienen esta necesidad tienen contenidos de cursos que permitirían lanzar distintos cursos rápidamente si una plataforma de enseñanza a distancia les estuviera proveida, dado el know-how de como gestionar estos contenidos

El equipo de tecnólogos trabaja hasta tarde en la noche para clasificar y validar los problemas que aparecieron durante el primer día
Estas llevaron a una feliz conclusión:
- La asociación Chamilo, a través de mi persona, se compromete a mantener un portal de capacitación abierto a todas las instituciones presentes (y posiblemente más) y a capacitar (brevemente) las instituciones presentes en el manejo de cursos en línea
- Las instituciones, a cambio, se comprometen a desarrollar cursos de acceso gratuito y libre (licencia Creative Commons BY-SA) destinados a sus públicos respectivos, pero con libertad para otros de registrarse en ellos
- Las insituciones podrán promocionar sus actividades a través de estos cursos
- Escuelab provee el espacio para la capacitación
Hemos quedado en organizar una capacitación en Escuelab en 4 semanas de este evento (ya va una semana) y de ahí tener cursos corriendo a las 8 semanas. A través de un intercambio dinámico, se espera lograr un proyecto funcional, eficiente y atractivo con el cual las instituciones lograrán:
- reducir sus costos de capacitación
- mejorar el acceso a la capacitación para todos sus miembros, empleados o el público en general
- promocionar mejor sus servicios a través de estos cursos gratuitos y de buena calidad
- aumentar la calidad de vida de los ciudadanos peruanos a través de mayores logros, gracias a un acceso a la información aumentado y medible
Me acordaré con mucho enthusiasmo de este evento que no solo me ha permitido aportar mis competencias al servicio del ciudadano, sino también me ha permitido aprender sobre problemas en el campo en términos de conectividad, idiomas nativos como el Yime Yame (los que viven cerca de los árboles) que no conocía, y mecanismos para lograr financiamientos municipales (SNIPs) en Perú.
Lo que mejoraría:
- más tiempo de preparación para los tecnólogos (permitir más intercambio entre ellos)
- un mini-fondo para cubrir las necesidades de los distintos proyectos que surgen (o el compromiso de los tecnólogos en reservar parte de su financiamiento para esto)
- ambiente distinto (con más separaciones)
- grabar cada una de las mesas de trabajo





