Archive

Archive for February, 2010

¡Migra tu plataforma a Chamilo, también es muy fácil!

Hola soy Carlos Vargas, continuando con los artículos para migrar de Dokeos a Chamilo, en esta ocasión voy a explicar como migrar todo un campus desde ciertas versiones de Dokeos a Chamilo sin ningún problema, cabe resaltar que este artículo es de mayor interés para administradores de plataformas Dokeos, a los cuales los invitamos a formar parte de Chamilo. Lo que voy a explicar a continuación también es válido para migrar de una versión de Dokeos a otra, además explicaré como exportar usuarios, cursos y hasta sesiones, salvo que algunos de estos exportes están disponibles solo a partir de Chamilo 1.8.6.2

¡Empezemos!

Si tienes instalado un Dokeos en tu servidor y quieres migrarlo a otra versión, lo que muchos usuarios han hecho es borrar toda su plataforma y volver a hacer todo de nuevo, es más, en el mundo hay varias instalaciones de Dokeos 1.8.4 o 1.8.5, que los administradores no actualizan, simplemente porque no quieren perder sus contenidos, al final eso es un poco absurdo, no tiene sentido usar un software que nunca vas a poder actualizar, y esto se debe a la ignorancia de las ventajas y funcionalidades que hemos ofrecido desde Dokeos.

Lo primero que hay que hacer para actualizar tu plataforma a una versión superior es asignarle permisos a las carpetas de los archivos de instalación y configuración, la cual al terminar de instalar Dokeos, se recomienda lo siguiente “Para proteger su sitio, configure main/inc/conf/configuration.php y main/install/index.php como archivos de sólo lectura (CHMOD 444)”. Pues bien, justamente a estas carpetas hay que darle nuevamente los permisos (777) para poder modificar el archivo de configuración y poder ejecutar la actualización.

Para saber si tienes la última versión del software, en el panel de administración, en la parte inferior derecha, aparece un botón que dice: “Activar la verificación de versiones”, al darle clic, puede aparecer el mensaje “Su versión no está actualizada. La última versión es Dokeos 1.8.6.1. Su versión es Dokeos 1.8.6. Por favor, visite Dokeos”, si tienes la 1.8.6.1, dirá que tu plataforma está actualizada, sin embargo recuerden que Chamilo es un nuevo proyecto, asi que esta advertencia será válida para Chamilo, cuando salga la versión 1.8.7, eso será muy pronto.

Por otro lado debes descargar la última versión de Chamilo 1.8.6.2 Salto, disponible en nuestro sitio web http://www.chamilo.org/es/download, y darle clic a la descarga de la versión: 1.8.6.2 estable (al lado está la versión 2.0 aún en desarrollo).

Una vez descargado el archivo, aunque no lo creas debes descomprimirlo encima de los ficheros actuales /var/www/chamilo/ (esta forma es para servidores en Linux) o quizas C:\\xampp\httdocs\www\chamilo u otra dependiendo del servidor de aplicaciones y sistema operativo que uses. Una vez sobrepuestos los archivos ya no podrás usar el campus, es ahí cuando debes empezar la migración, para ello debes escribir en la url, despues del dominio que tenga tu campus, la dirección de instalación por ejemplo http://www.campus.com/main/install, es decir debes añadir main/install (si hacías esto antes, el sistema no lo iba a permitir pues la carpeta no tenía permisos) luego volverás al formulario de instalación, pero omitiendo algunos pasos.

Primero debes seleccionar el idioma, en la siguiente página salen los requerimientos necesarios, abajo salen cuatro botones: “previous”, “New installation”, “Upgrade from Dokeos 1.8.x”, “Upgrade from Dokeos 1.6.x”. Para este caso debes tener cuidado y escoger el tercero “Upgrade from Dokeos 1.8.x” que justamente se trata de actualizar tu plataforma a 1.8.x, pues Chamilo sigue siendo 1.8. Después debes confirmar el directorio principal, luego saldrá nuevamente la licencia GNU/GPL. Igual que en la instalación, confirmar la base de datos, siguiente, siguiente “Install Chamilo” y listo.

Asi de simple es migrar a una nueva versión y mantener tus usuarios cursos etc. Los cursos creados en la versión anterior mantendrán sus contenidos y las nuevas herramientas en la versión actual aparecerán desactivadas, solo debes darle clic en el ojo.

Ahora bien, en el artículo anterior explique lo fácil que era migrar tu curso de una plataforma a otra, este trabajo lo puede hacer el mismo profesor del curso, sin embargo, el profesor no puede importar a los alumnos que estaban inscritos en su curso (esto lo digo en respuesta a un comentario en el artículo anterior).

Sin embargo el adminstrador de la plataforma, puede exportar en un fichero a todos los miembros de su plataforma, este fichero puede ser de dos tipos: XML/CSV y de la misma manera como se puede exportar, también se puede importar, para esto la solución es muy fácil: Si no quieres migrar tu plataforma con tus cursos quizas porque son obsoletos u otra cosa, pero si quieres recuperar los usuarios, es decir para que estén en la nueva plataforma sin tener que registrarse nuevamente, debes usar esta función. Entonces en el panel de administracíon de Dokeos exportas a los usuarios, para ello aparecerá un formulario para seleccionar el tipo del archivo de exporte (XML y CVS) y podrás descargar el archivo, o para un caso específico, puedes escoger exportar solo a los usuarios de un curso en particular.

Para la importación hay que hacer lo opuesto, pero es así de simple. En Chamilo, entras al panel de administración y haces clic en importar fichero CVS/XML, seleccionas el tipo que vas a subir, cargas el fichero y listo, aunque aqui surge un pequeño problema, es que cuando se crea la cuenta para un usuario, entre sus datos hay uno que obligatorio, pero que está encriptado, obviamente me refiero a la contraseña, por temas se seguridad usamos uno de los tipos de encriptación MD5 o SHA1, estas encriptaciones son irreversibles, razón por la cual no se pueden exportar, pues en la base de datos esta la contraseña encriptada. La solución larga es entrar a cada cuenta y generar una nueva clave, o sino que el mismo usuario solicite una nueva contraseña ingresando su correo y su nombre de usuario. Puedes olvidar todo esto sobre las contraseñas si al instalar tu Dokeos donde dice seleccionar tipo de encriptación escogiste “Ninguna”. También es posible enviar un correo a los usuarios ya que uno de los campos es justamente de la dirección de correo electrónico.

En Chamilo 1.8.7, también será posible exportar e importar cursos con un fichero CSV o XML, para evitar volver al crearlos, y tener tus cursos (vacios de conenido) en tu nuevo campus.

Como siempre esperaré sus comentarios y aportes gracias.

Categories: Chamilo, Dokkeos, e-learning, Spanish Tags:

Aprende PHP desde la misma fuente de PHP en Español

February 25, 2010 Leave a comment

Como sabran, PHP es la “Biblia” de todo programador PHP y donde mas encontrar toda documentación que en su pagina web http://www.php.net, pero como esta en el idioma Ingles por defecto, la mayoria no lo usa por el idioma (aunque deberia ser asi :P ) pero para las personas que inician no saben que la documentación tambien se encuentra en Español para ello aqui les dejo el enlace, derepente es un poco dificil de llegar ahí, pero esta la documentacion, aquí el enlace:
http://docs.php.net/manual/es/
Aunque ahi dice language English, la documentación esta en español.

Categories: php, Spanish Tags:

¡Migra tu curso a Chamilo, es muy fácil!

Hola soy Carlos Vargas, hace ya algún tiempo que no escribíamos artículos, desde que nos acomodámos al cambio de Dokeos a Chamilo, sin embargo también era necesario, pues la actual versión de Chamilo 1.8.6.2 y la próxima 1.8.7, tienen muchos cambios y nuevas funcionalidades para hacer más simple el uso de la plataforma.

A partir de ahora escribiré artículos sobre temas que funcionan desde Chamilo 1.8.6.2, pues nosotros dejamos Dokeos en la versión 1.8.6.1 y en esta nueva versión algunas cosas se ven de forma distinta pero a la vez mucho mejor.

Quizás estés preocupado, porque tienes cursos que funcionan muy bien en Dokeos y ahora no sabes si van a funcionar en Chamilo y seguro crees que lo tienes que volver a hacer, pues no te preocupes, no es necesario, a continuación voy a explicar como usar una herramienta de la Administración de los cursos, estas herramientas que quizás nunca las hayas usado, son cuatro: Gestión de blogs; Informes; Configuración del curso y Mantenimiento del curso.

La que se usa para la exportación e importación del contenido de tus cursos es esta última la de Mantenimiento del curso, la pantalla principal de esta herramienta es así:

Aquí encontraremos cuatro opciones, las cuales nos servirán para la migración, un comentario que puedo añadir aqui es el siguiente: “Cuando estábamos en Dokeos, en el campus.dokeos.com, cada cierto tiempo era necesario limpiar el campus, sea para actualizarlo de una versión a otra o porque habían demasiados usuarios y cursos, razón por la cual el sistema se ponía muy lento y al ser un servicio gratuito contaba con un servidor simple, pues se suponía que el campus libre era sólo para pruebas; pues bién era ahi, cuando nosotros en la página principal de la plataforma poníamos un anuncio recomendando hacer una copia de sus cursos, para luego volver a subirlas cuando se actualize el nuevo campus, sin embargo muchas usuarios no tenían idea de cómo hacerlo, y simplemente se lamentaban por la noticia y esperaban para empezar de nuevo”. Bueno justamente por eso me animé a escribir este artículo para que aquellas personas que no saben como exportar su curso, puedan hacerlo sin problemas, además es muy fácil, asi que si tienes tu curso en Dokeos puedes migrarlo a Chamilo de la forma como explicaré a continuación.

Quiero aclarar también, que esta misma operación funciona igual, para migrar tu curso de una versión de Dokeos a otra, para ser más específicos se puede migrar cursos desde Dokeos 1.8.2, es decir:

  • Dokeos 1.8.2 a Chamilo 1.8.6.2 (Salto)
  • Dokeos 1.8.4 a Chamilo 1.8.6.2 (Salto)
  • Dokeos 1.8.5 (Valparaíso)a Chamilo 1.8.6.2 (Salto)
  • Dokeos 1.8.6 (Svalvard) a Chamilo 1.8.6.2 (Salto)
  • Dokeos 1.8.6.1 a Chamilo 1.8.6.2 (Salto)

Bueno empézemos, la primera opción es hacer una “Copia de seguridad del curso” y dentro tiene dos opciones más, que son:

  • Crear copia de seguridad
    Puede seleccionar los contenidos del curso que constituirán la copia de seguridad.
  • Importar una copia de seguridad
    Puede transferir una copia de seguridad desde su ordenador o bien usar una copia de seguridad ya disponible en el servidor.
Pues ahí todo está claro, sin embargo voy a detallar de que se trata: Crear una copia de seguridad, significa que Chamilo va a guardar todo el contenido de tu curso, o bueno no todo pero si la parte que vale la pena guardar, para ser más específicos hace el backup de :  Agenda, Anuncios, Enlaces, Textos de introducción, Wiki, Documentos, Descripción del curso, Ejercicios, Encuestas, Lecciones y Glosario. Solo es posible con estás herramientas, pues la idea de esta función es la de recuperar contenidos importantes en un curso para poder reutilizarlos en un nuevo curso, con nuevos alumnos, entonces por eso no es necesario el foro, porque este tiene contenidos de los alumnos, tampoco las tareas, o las evaluaciones, sin embargo quizás tampoco te sean necesarios los anuncios o la agenda, que si estan disponibles para el exporte, es por eso que Chamilo ofrece dos formas para la exportación: una total en le que se hace para todas la herramientas mencionadas y una parcial en la cual te propone seleccionar no solo que herramientas exportar, sino tambien que contenidos, es decir, si tan solo quiero expotar la herramienta de documentos, pero de ahi solo la carpeta de imágenes, para esto se muestra la lista de herramientas y en cada una la lista de cada contenido cada uno con una checklist y las opciones para seleccionar Todo o Nada, como siempre Chamilo es muy amigable y fácil de usar.
Bueno con eso ya está todo listo, solo debes hacer clic en Aceptar y esperar a que se genere la copia de seguridad, para ello aparecerá una barra de progreso, al terminar lo que habrá hecho Chamilo es generar un archivo comprido ZIP y lo guardará en una carpeta en el servidor, este archivo lo debe descargar, para esto debes hacer clic en el botón que aparece debajo del mensaje “Se ha generado la copia de seguridad del curso. La descarga de este archivo se producirá en breves instantes. Si la descarga no se inicia, haga clic en el siguiente enlace”, este archivo tiene un nombre el cual es generado automáticamente con el código del curso y la fecha y hora en que fue creado, por eso puedes hacer varias copias y cada una tendrña un nombre distinto, ese archivo Chamilo lo interpretará para la situación opuesta, es decir la importación y dejará cada una de las herramientas en el mismo lugar en el nuevo Curso.
Lo opuesto a la copia de seguridad es el Importar una copia de seguridad. Esta operación se realizará en un nuevo curso, es decir la Copia de seguridad la hiciste en tu curso de Dokeos, ahora la importación la debes hacer en un curso nuevo que hayas creado en Chamilo. Para el ello el escenario es similar al anterior, pero con unos campos mas como: Seleccionar el fichero de copia de seguridad, el cual está en tu disco duro, o si no descargáste el fichero, Chamilo lo guarda en el servidor y tan solo debes seleccionarlo, luego aparecen dos opciones ya conocidas, para hacer el importe total o parcial del curso y tienes las mismas subopciones para seleccionar las herrmamientas y contenidos necesarios. Sin embargo aquí surge un problema ¿Que pasa si los contenidos que voy a migrar a mi nuevo curso, ya existen o hay contenidos con los mismos nombres que los que habían en el curso anterior?, Pues Chamilo piensa en todo, y para este caso ofrece tres alternativas distintas para que se haga lo que más te convenga:
  • Saltar los ficheros con el mismo nombre (es decir si hay un contenido con el mismo nombre, el contenido nuevo no se importará)
  • Renombrar el fichero (ej. archivo.pdf se convierte en archivo_1.pdf)
  • Sobreescribir el fichero (significa que el nuevo contenido reemplazará al actual)

Luego aparcerá un mensaje de exito “Importación finalizada”, ahora solo debes entrar al curso y comprobar que estén todos los contenidos en las herramientas respectivas.

En la siguiente opcion Chamilo permite copiar, parcial o completamente, un curso en otro; Esta herramienta sirve para hacer lo mismo que la copia y la importación, pero dentro del mismo campus, para ello el curso de destino debe estar vacío.

Los pasos para realizar esta operación son similares a lo expuesto anteriormente. Primero hay que seleccionar el curso de destino, para ello se mostrará una lista desplegable con todos los cursos creados por tí, luego aparecerá la misma opcion de copia completa o parcial y de seleccionar ciertos contenidos de ciertas herramientas y si los contenidos tienen los mismos nombre que algún contenido en el curso destino. Luego solo debes hacer clic en Copiar Curso -> Aceptar y aparecerá un mensaje de exito “La copia ha finalizado”. Después solo debes ingresar al curso y verificar los contenidos presentes en tu nuevo curso. Como ves así de sencillo es mantener los contenidos en tus cursos sin la preocupación de tener que volverlos a hacer en caso de migración o inicio de un nuevo Curso.

Así como es posible crear copias de seguridad e importar contenidos dentro de los cursos, Chamilo ofrece la posibilidad de reciclar parte de o todo un curso, esto si no deseas crear uno nuevo y mantener el actual, cuando termina el periodo académico y tienes nuevos alumnos, o si la información que ahi tienes ya es obsoleta etc, esto tambien lo puedes hacer entrando en cada herramienta y borrando en cada una lo que ya no deseas, pero como Chamilo es muy fácil e intuitivo ofrece esta opción para hacerlo todo más rápido para ello debes hacer clic en Reciclar este curso y aparecen nuevamente las ya conocidas opciones de completa o parcial y las opciones para escoger los contenidos de cada herramienta, tan solo debes dar clic y aparecerá el mensaje “El reciclado ha finalizado”.

La última opción solo debe ser usada en caso que desees eliminar totalmente el curso de la plataforma. Para suprimir el sitio web de este curso Haz clic en el enlace para eliminar cualquier rastro del curso en el servidor. ¡Esta funcionalidad debe ser usada con extrema precaución!. Pues es definitiva (Bueno si se puede recuperar, pero un trabajo adicional de expertos). Luego de esto tu curso estará fuera de la plataforma.

Bueno espero que te haya servido y hayas aprendido algo nuevo, recuerda que ahora somos Chamilo, la mejor plataforma de E-learning y colaboración 100% software libre y Open Source y BeezNest (la empresa para la que trabajamos) es partner oficial.

Muy pronto escribiré nuevos artículos. Recuerden que sus comentarios son importantes para nosotros.

¡Hoy Chamilo cumple su primer mes!

Estamos muy contentos de celebrar el primer mes de Chamilo, considerado como la plataforma de cursos en línea más simple de uso, 100% Open Source y Software Libre.

Es grato para nosotros tener en tan solo un mes.

Recuerden que recién estamos empezando, la idea de la separación tiene varios meses de historia, sin embargo fue ejecutada recién el 18 de Enero, y BeezNest como partner principal estará presente organizando una serie de eventos para anunciar al mundo la existencia de Chamilo.

Nuestro próximo evento local (en Lima, Perú), será el 13 de Marzo en la tarde.

Gracias por confiar en Chamilo y por poder contar con ustedes.

Categories: Chamilo, News, Spanish Tags:

Chamilo 1.8.7 to manage timezones

February 17, 2010 Leave a comment

Well, it was rather a low priority task (due to its possible difficulty), but it has been advancing so well in just two days that I think I can already make a little preview on this…

First of all, I’d like to officially welcome Guillaume Viguier-Just, who joined forces with us just yesterday. Guillaume has a considerable PHP development experience, so it’s been pretty easy for me to give him a few basic tasks in Chamilo and it’s apparently been pretty easy for him to honor them. I’m looking forward to all the good things he will be able to give the Open Source community in the next few months of his collaboration with us. No need to explain Mercurial, PHP, timezones, Ubuntu or coding conventions: he’s been getting to work straight on. Great time savings!

Then let’s explain the timezones problem…

We had a problem in Chamilo, that all instances of Chamilo portals installed on the same server have to share the same timezone (namely because there was no timezone management in Chamilo or its ancestors). This effectively meant that we, as hosting providers, had to have 1 server for each timezone available in the world if we wanted to have customers all over the world, which would have meant much more expenses and hosting prices shooting up.

So I decided to go ahead and create requirement #599, which is in fact a group of 3 tasks:

  • identify and analyse what the current time management process generates (in terms of times recorded on the system) and consequently all timestamp fields were converted to datetime (to have a unique time base all over Chamilo)
  • implement a portal-based timezone feature (allowing various portals on the same server to serve distinct timezones)
  • implement a user-based timezone feature (allowing users from the same portal but living in areas with distinct timezones to see all hour-based time references in their own time-base)

My estimation was that it would be a “20 points” task in our own SCRUM-based estimation, and it seems I’ve been right (it will take a few days to implement).

We discovered that the MySQL TIMESTAMP field type is UTC-based (Universal Time), while DATETIME is not. DATETIME is based on a parameter of MySQL, called time_zone, which holds the difference between the local time and UTC. Taking into account the fact that TIMESTAMP also has a logical limit at 2038-01-19 (which is already giving us problems in Chamilo) while DATETIME has a limit at 9999-12-31, we decided to switch everything to DATETIME in the Chamilo database. Of course, this is all taken care of by the migration scripts, and we checked that the difference between UTC and local time was not lost.

With this basis analysis and type changes, Guillaume was ready to implement a global function (api_get_local_time()), which will be used from now on to display time in the timezone set inside the portal configuration, and later to display it in the user’s own timezone. So finally, we will have timezones management (at the same time as UTF-8 management) in Chamilo. A great leap forward for the software and our community. I will discuss the move to UTF-8 later on, on this blog.

This means that, starting next week, we will update our development portal (still to be moved to another URL) and you will be able to try out the timezone feature for yourself through your user profile! Stay tuned for an update to this post…

Let me mention that we wouldn’t be able to do all this without the financial investments of our customers and community members who help us making Chamilo a far better software than its ancestor, the “D” project, used to be.

Top projects of January 2010

February 12, 2010 Leave a comment

This year has taken a good start for us at BeezNest worldwide, and between writing around 3 times more offers than usually and launching new projects, we have been busy on a series of important missions that I’d like to take the opportunity to mention.

Gallery 2 and slow disk accesses

First of all, we’ve been busy trying to debunk a really well hidden flaw in an install of Gallery 2, whereby the “Comments” feature was so quickly getting spammed that the server could just not handle the number of requests sent by the application and a lot of other applications were slowing down.

Trees management

Second, we’ve been working a lot (in terms of development) on a system to manage… trees! What? Yes, trees (and green areas as well). You know, trees are like medical patients after all. Although they tend to fall less ill, there tends to be a whole lot of trees in our cities. Well, we’ve got one great system to do that, that we are working on with one of our partners. Thanks to the system, you can easily plan lifespans of the trees in a city or a larger entity, pinpoint them on a map, and make sure their illnesses and history is stored on something else than an easily lost/stolen/burnt piece of paper. Of course, you can assign tasks, classify trees by street or park, take photos, specify their height, level of danger, or protection put in place. It’s even compatible with Oracle Locator databases! Contact us if you’re looking for something like that.

Chamilo, a fresh e-learning project with experience

Ah well, we’ve decided to drop our support of the Dokeos platform and went on to create a fork, called Chamilo, which will defend a more open approach to e-learning platform development. At first, we thought we would need like half a year to get up and running with the project, but we’ve pretty much been overwhelmed by the overall surge of activity and the massive support and active contributions we’ve already received, while we haven’t setup the bank account for the association defending the project just yet. A great, positive sign for the first month of the project.

Flash stuff

We’ve also been working on a clothing application for a company selling custom t-shirts, whereby the visitor can try its own logos on the shirt he likes most. It was still not ready at the end of January, but we hope you’ll see it soon.

New support lines

We’ve started developing Spanish-based phone support services because a lot of our customers were asking for just that: a way to understand their problems fast and find a way to avoid them. Of course, we’ve also got a whole lot of development-type support coming out of that, but we’re just starting the first line support and it’s taking a good shape. If you are in need if this type of service, just call +51 1 719 51 92 and we’ll quickly deal the contract details with you before you can get access to our support.

Preparing international events

We’re going to be involved in two massive events this year: Expoelearning Lima, a huge e-learning event that will attract a hundred of e-learning companies from around Latinamerica; and the Software Freedom Day, also in Lima, to which we are planning to give a special taste of open knowledge by inviting a hugely famous (still secret) guest of the open knowledge area. We’ve also been dealing with all the graphical design aspect of these events, and our designer has been even more active during the end of January, but we’ll discuss this at the end of February.

Automated tests coverage

A considerable effort has been put into automating tests for Chamilo through SimpleTest, Phing and Xinc. We hope we’ll be able to show you the results very soon.

625 days uptime

We’re always informing our customers that a Linux server that we take time to configure can cut down on future management expenses considerably. One of our customers has just had one of its servers reach 620 days uptime at the end of January. This means the server has been working for almost 2 years (we’ll reach that point in a few months time) without reboot of any kind. This server is used as a web server and has only required a few updates during the last 2 years. This effectively means that this in-house server maintenance costs were brought down to a minimum, while continuing to server its visitors reliably.

Contributing to FLOSS

As usual, the Peruvian offices (Lima, Miraflores) has been hosting meetings from the Python Perú and Drupal Perú groups, and will be hosting additional PHP and Chamilo meetings in March. Of course, we’ve continued working on key open-source projects like Chamilo and OpenC2C

Categories: English, News Tags: , , , , ,

Chamilo on to a real good start, translation module almost ready

February 6, 2010 Leave a comment

In just three weeks since the announcement of the split between Dokeos and Chamilo, Chamilo has already received support from many organizations and independents that seem to have thought alike for a long time. We also received about 10 successful patches in this period, which is more than I can remember receiving in the whole year of 2009 for Dokeos.

Finally, we’ve been working a lot this week (kudos to scaramanga and svennie) to get you a brand new translation system that we hope will help you get more productive, faster. For example, you now have a “next untranslated term” icon which lets you do the translation in one straight line, and the possibility to translate to various languages (for those of you who are professional translators, this will probably help you help us a lot more! ;-)

Importantly, you can also download, modify and upload translation files which, in combination with the phpLangEditor plugin for Firefox (from one of the developers of Claroline, by the way), will help you get über-efficient.

We are also gathering new translators and people that will want to get involved deeply into the translations by taking the role of translation coordinators.

Last but not least, Chamilo 1.8.7 will be fully-UTF-8 compliant, which will trigger a massive opening of our community to the East of Europe with known interest from China, Japan, Russia and Arab-writing countries!

If you want to know more, just make sure you watch http://www.chamilo.org next week!

%d bloggers like this: