<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Andrés Moschini</title>
 <link href="http://andresmoschini.github.com/atom.xml" rel="self"/>
 <link href="http://andresmoschini.github.com"/>
 <updated>2013-01-24T10:30:53-08:00</updated>
 <id>http://andresmoschini.github.com</id>
 <author>
   <name>Andres Moschini</name>
   <email>andresmoschini@gmail.com</email>
 </author>

 
 <entry>
   <title>My Menu - Instructivo</title>
   <link href="http://andresmoschini.github.com/2013/01/24/my-menu-instructivo"/>
   <updated>2013-01-24T00:00:00-08:00</updated>
   <id>http://andresmoschini.github.com/2013/01/24/my-menu-instructivo</id>
   <content type="html">&lt;p&gt;Al entrar a la página principal &lt;strong&gt;&lt;em&gt;&lt;code&gt;1&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;, se muestra el plato y lugar seleccionado para el día actual &lt;strong&gt;&lt;em&gt;&lt;code&gt;2&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src='/img/posts/2013-01-24-my-menu-instructivo/01.jpg' alt='Pantalla principal' /&gt;&lt;/p&gt;

&lt;h3 id='configuracin'&gt;Configuración&lt;/h3&gt;

&lt;p&gt;En la solapa de &lt;strong&gt;Configuración&lt;/strong&gt; definir el &lt;strong&gt;lugar por defecto&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;&lt;code&gt;3&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; donde se espera el almuerzo.&lt;/p&gt;

&lt;p&gt;&lt;img src='/img/posts/2013-01-24-my-menu-instructivo/02.jpg' alt='Menú semanal' /&gt;&lt;/p&gt;

&lt;p&gt;En las solapas de las semanas (&lt;strong&gt;Semana 1&lt;/strong&gt;, &lt;strong&gt;Semana 2&lt;/strong&gt;, &lt;strong&gt;Semana 3&lt;/strong&gt;, &lt;strong&gt;Semana 4&lt;/strong&gt;, &lt;strong&gt;Semana 5&lt;/strong&gt;) seleccionar el plato deseado para cada día &lt;strong&gt;&lt;em&gt;&lt;code&gt;4&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;. También puede modificarse el lugar &lt;strong&gt;&lt;em&gt;&lt;code&gt;5&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La fecha &lt;strong&gt;&lt;em&gt;&lt;code&gt;6&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; está a modo de referencia e indica la fecha más cercana en que corresponde ese menú. Por ejemplo, en la imagen vemos que yo seleccioné &lt;em&gt;&amp;#8220;Milanesa de Zapallitos&amp;#8230;&amp;#8221;&lt;/em&gt;: esa será mi comida el día &lt;em&gt;11 de febrero&lt;/em&gt; y, a menos que algo cambie, también lo será el &lt;em&gt;día 18 de marzo&lt;/em&gt; (cinco semanas después).&lt;/p&gt;

&lt;p&gt;&lt;img src='/img/posts/2013-01-24-my-menu-instructivo/03.jpg' alt='Días específicos' /&gt;&lt;/p&gt;

&lt;p&gt;En la solapa &lt;strong&gt;Días específicos&lt;/strong&gt; puede agregarse días en que se modifica la selección semanal. Se debe ingresar la fecha &lt;strong&gt;&lt;em&gt;&lt;code&gt;7&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; y un comentario &lt;strong&gt;&lt;em&gt;&lt;code&gt;8&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;. Se puede cancelar totalmente la comida &lt;strong&gt;&lt;em&gt;&lt;code&gt;9&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;, cambiar el plato &lt;strong&gt;&lt;em&gt;&lt;code&gt;10&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; o indicar que se espera la comida en otra oficina &lt;strong&gt;&lt;em&gt;&lt;code&gt;11&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATENCION&lt;/strong&gt;: Recordar guardar los cambios &lt;strong&gt;&lt;em&gt;&lt;code&gt;12&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id='hora_lmite'&gt;Hora límite&lt;/h3&gt;

&lt;p&gt;A las 9:30 AM de cada día se genera el pedido correspondiente, por lo que cualquier cambio realizado luego de esa hora no se verá reflejado.&lt;/p&gt;

&lt;p&gt;&lt;img src='/img/posts/2013-01-24-my-menu-instructivo/04.jpg' alt='Pedido no realizado' /&gt;&lt;/p&gt;

&lt;p&gt;Es fácil saber si el pedido ya se ha realizado observando la barra indicativa verde o naranja &lt;strong&gt;&lt;em&gt;&lt;code&gt;13&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src='/img/posts/2013-01-24-my-menu-instructivo/05.jpg' alt='Pedido ya realizado' /&gt;&lt;/p&gt;

&lt;p&gt;Como se ve en la captura anterior, luego de realizado el pedido los cambios para el día no se aplican.&lt;/p&gt;

&lt;h3 id='disclaimer'&gt;Disclaimer&lt;/h3&gt;

&lt;p&gt;Recordar que &lt;a href='http://commonjobs.makingsense.com/documentation'&gt;CommonJobs&lt;/a&gt; y MyMenu son desarrollos OpenSource realizados en ratos libres. Cualquier mejora es bienvenida, descargá el &lt;a href='https://github.com/CommonJobs/CommonJobs'&gt;código fuente de GitHub&lt;/a&gt; y hacé tu &lt;em&gt;Pull Request&lt;/em&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>A blogging framework for hackers (Continuación)</title>
   <link href="http://andresmoschini.github.com/2013/01/22/a-blogging-framework-for-hackers-continuacion"/>
   <updated>2013-01-22T00:00:00-08:00</updated>
   <id>http://andresmoschini.github.com/2013/01/22/a-blogging-framework-for-hackers-continuacion</id>
   <content type="html">&lt;p&gt;Luego de desahogarme en un &lt;a href='http://makingsensers.wordpress.com/2012/12/27/a-blogging-framework-for-hackers/'&gt;post anterior&lt;/a&gt;, continué investigando y probando opciones de blogs basados en &lt;a href='http://jekyllrb.com/'&gt;jekyll&lt;/a&gt; y GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html'&gt;La idea&lt;/a&gt; es interesante: preparamos los fuentes jekyll del sitio y los post, luego GitHub se encarga de generar el sitio HTML. Los fuentes de posts son archivos HTML con Liquid o Markdown y tenemos total libertad en cuanto a la estructura del sitio y el contenido. Además, no tenemos que lidiar con esos editores de texto online pseudo WYSIWYG ya que trabajamos con archivos de texto y la publicación la realizamos con nuestro sistema de control de versiones preferido: &lt;strong&gt;Git&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id='intento_1__preparar_un_sitio_desde_cero'&gt;Intento 1 - Preparar un sitio desde cero&lt;/h3&gt;

&lt;p&gt;En principio intenté preparar un sitio desde cero, o copiando otros como el de &lt;a href='http://erjjones.github.com/'&gt;Eric Jones&lt;/a&gt;. Dado mi escaso conocimiento de &lt;em&gt;Ruby&lt;/em&gt;, &lt;em&gt;Jekyll&lt;/em&gt; y &lt;em&gt;Liquid&lt;/em&gt;, creo que no fue una buena elección ya que la estructura no resultó la mejor y algunos literales como la URL base del sitio quedaron repartidos por todo el código. De cualquier manera, rescaté la experiencia y unos snippets de código que utilicé luego.&lt;/p&gt;

&lt;h3 id='intento_2__octopress'&gt;Intento 2 - Octopress&lt;/h3&gt;

&lt;p&gt;&lt;a href='http://octopress.org/'&gt;Octopress&lt;/a&gt; está muy bien, es muy completo y tiene buena terminación.&lt;/p&gt;

&lt;p&gt;Pero, el sitio no es generado por GitHub sino que cuenta con unos scripts para generarlo localmente. Para un blog personal no me parece una mala opción, pero si son muchos los editores, creo que se vuelve un poco más incomodo. Además, perdemos la posibilidad de postear directamente desde GitHub con la &lt;a href='https://github.com/blog/1327-creating-files-on-github'&gt;feature de crear archivos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Como en el caso anterior, Octopress será una buena &lt;em&gt;cantera&lt;/em&gt; para extraer ejemplos, snippets e ideas para utilizar.&lt;/p&gt;

&lt;h3 id='intento_3__jekyllbootstrap'&gt;Intento 3 - Jekyll-Bootstrap&lt;/h3&gt;

&lt;p&gt;&lt;a href='http://jekyllbootstrap.com/'&gt;Jekyll-Bootstrap&lt;/a&gt; resultó ser la opción elegida. Tiene un diseño modular, con templates y helpers. No está tan pulido como Octopress, pero es un buen punto de partida para comenzar a personalizar el sitio.&lt;/p&gt;

&lt;h3 id='mi_prueba_de_concepto'&gt;Mi prueba de concepto&lt;/h3&gt;

&lt;p&gt;El objetivo era que las mejoras en estilos, templates y layout no se mezclen con la instancia del sitio, de manera de que se puedan utilizar en otros blogs.&lt;/p&gt;

&lt;p&gt;Preparé un repositorio &lt;a href='https://github.com/makingsense/jekyll-bootstrap-ms'&gt;Jekyll-Bootstrap-MS&lt;/a&gt;, basado en Jekyll-Bootstrap, con algunas modificaciones y adaptaciones. Es aquí donde se deberían realizar las mejoras y personalizaciones de estilos, templates y layout que puedan reutilizarse.&lt;/p&gt;

&lt;p&gt;Por otro lado, creé otro &lt;a href='https://github.com/andresmoschini/andresmoschini.github.com'&gt;repositorio&lt;/a&gt; para mi &lt;a href='http://andresmoschini.github.com'&gt;blog personal&lt;/a&gt; basado en el anterior. Aquí publicaré mis posts, realizaré cambios puntuales en el layout e ire mergeando las mejoras realizadas en Jekyll-Bootstrap-MS.&lt;/p&gt;

&lt;h3 id='para_probar_jekyllbootstrapms_desde_github'&gt;Para probar Jekyll-Bootstrap-MS desde GitHub&lt;/h3&gt;

&lt;p&gt;El &lt;a href='https://github.com/makingsense/jekyll-bootstrap-ms/tree/gh-pages'&gt;branch gh-pages de Jekyll-Bootstrap-MS&lt;/a&gt; está publicado en &lt;a href='http://makingsense.github.com/jekyll-bootstrap-ms'&gt;http://makingsense.github.com/jekyll-bootstrap-ms&lt;/a&gt;. Es posible realizar un &lt;a href='https://github.com/MakingSense/jekyll-bootstrap-ms/fork_select'&gt;Fork de este repositorio&lt;/a&gt; y probarlo con la propia cuenta de GitHub, sin necesidad de descargar nada, utilizando las herramientas provistas por GitHub.&lt;/p&gt;

&lt;h3 id='para_probar_jekyllbootstrapms_localmente_en_windows'&gt;Para probar Jekyll-Bootstrap-MS localmente en Windows&lt;/h3&gt;

&lt;h4 id='requistos'&gt;Requistos&lt;/h4&gt;

&lt;h5 id='cliente_git'&gt;Cliente Git&lt;/h5&gt;

&lt;p&gt;Yo utilizó &lt;a href='https://code.google.com/p/gitextensions/'&gt;Git Extensions&lt;/a&gt; que ya incluye MINGW y Git Bash.&lt;/p&gt;

&lt;h5 id='instalar_de_ruby'&gt;Instalar de Ruby&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;Desde &lt;a href='http://rubyinstaller.org/downloads/'&gt;Ruby Installer&lt;/a&gt; descargar e instalar la última versión de Ruby.&lt;/li&gt;

&lt;li&gt;Verificar que Ruby esté en el Path o agregarlo.&lt;/li&gt;

&lt;li&gt;También desde &lt;a href='http://rubyinstaller.org/downloads/'&gt;Ruby Installer&lt;/a&gt; descargar el Development Kit, descomprimirlo.&lt;/li&gt;

&lt;li&gt;Desde &lt;em&gt;Git bash&lt;/em&gt; ejecutar:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='nv'&gt;$ &lt;/span&gt;&lt;span class='nb'&gt;cd &lt;/span&gt;C:/RubyDevKit
&lt;span class='nv'&gt;$ &lt;/span&gt;ruby dk.rb init
&lt;span class='nv'&gt;$ &lt;/span&gt;ruby dk.rb install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h5 id='instalar_python_requerido_si_hay_pginas_con_resaltado_de_sintaxis'&gt;Instalar Python (requerido si hay páginas con resaltado de sintaxis)&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href='http://www.python.org/getit/'&gt;Descargar Python 2.7&lt;/a&gt; e instalar&lt;/li&gt;

&lt;li&gt;Verificar que Python esté en el Path o agregarlo.&lt;/li&gt;
&lt;/ol&gt;

&lt;h5 id='instalar_jekyll'&gt;Instalar Jekyll&lt;/h5&gt;

&lt;p&gt;Desde &lt;em&gt;Git bash&lt;/em&gt; instalar Jekyll:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='nv'&gt;$ &lt;/span&gt;gem install jekyll
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id='descargar_jekyllbootstrapms'&gt;Descargar Jekyll-Bootstrap-MS&lt;/h4&gt;

&lt;p&gt;Desde &lt;em&gt;Git bash&lt;/em&gt;:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='nv'&gt;$ &lt;/span&gt;git clone https://github.com/MakingSense/jekyll-bootstrap-ms.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id='ejecutar_jekyll'&gt;Ejecutar Jekyll&lt;/h4&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='nv'&gt;$ &lt;/span&gt;&lt;span class='nb'&gt;cd &lt;/span&gt;jekyll-bootstrap-ms
&lt;span class='nv'&gt;$ &lt;/span&gt;jekyll --server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Abrir &lt;a href='http://localhost:4000'&gt;http://localhost:4000&lt;/a&gt; en el navegador&lt;/p&gt;

&lt;h3 id='pendiente'&gt;Pendiente&lt;/h3&gt;

&lt;p&gt;Algunas posibles mejoras (ver &lt;a href='https://trello.com/board/jekyll-bootstrap-ms/50fd498b591dbec63d0081d1'&gt;board en trello&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Estaría bien agregar los números de línea en los snippets de código&lt;/li&gt;

&lt;li&gt;Definir mejor la estructura por defecto del sitio. Por ejemplo, en lugar de un listado de posts en la página de indice, se podrían mostrar los últimos posts completos y la posibilidad de ver los anteriores.&lt;/li&gt;

&lt;li&gt;Link a la página de GitHub de la cuenta asociada al blog.&lt;/li&gt;

&lt;li&gt;Link al source en GitHub del post o página actual.&lt;/li&gt;

&lt;li&gt;Mejorar la utilización de Twitter Bootstrap, por ejemplo utilizando &lt;code&gt;fluid rows&lt;/code&gt;&lt;/li&gt;

&lt;li&gt;Personalizar Twitter Bootstrap y los estilos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id='invitacin'&gt;Invitación&lt;/h3&gt;

&lt;p&gt;Creo que este es el motor ideal para un blog de desarrolladores de software. Espero su feedback, críticas, refutaciones, consultas o &lt;em&gt;pull requests&lt;/em&gt; en &lt;a href='https://github.com/makingsense/jekyll-bootstrap-ms'&gt;Jekyll-Bootstrap-MS&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>My Menu - Invitación</title>
   <link href="http://andresmoschini.github.com/2013/01/21/my-menu-invitacion"/>
   <updated>2013-01-21T00:00:00-08:00</updated>
   <id>http://andresmoschini.github.com/2013/01/21/my-menu-invitacion</id>
   <content type="html">&lt;p&gt;Trabajamos en una empresa de soft, desarrollamos software y somos buenos haciendoló. Por eso, creo que es bueno que participemos en el desarrollo y mejoras de las aplicaciones que utilizamos día a día. Ese es el caso del sistema de selección de las comidas diarias: nosotros deberíamos arreglarlo, mejorarlo, optimizarlo y, llegado el caso, reemplazarlo completamente.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My Menu&lt;/em&gt; (sistema que presenté en un &lt;a href='http://makingsensers.wordpress.com/2012/12/26/self-training-my-menu/'&gt;post anterior&lt;/a&gt;) fue creado con el objetivo principal de probar y conocer algunas tecnologías, sé que el código y diseño no es el mejor. Tampoco está en producción actualmente.&lt;/p&gt;

&lt;p&gt;Igualmente, creo que tiene algunas características interesantes y que puede ser una buena base para continuar juntos el desarrollo de una herramienta que utilizamos todos los días. Por eso me decidí a invitar a que visiten el código fuente y a que propongan cambios y mejoras.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My Menu&lt;/em&gt; forma parte de &lt;em&gt;&lt;a href='http://commonjobs.makingsense.com/documentation'&gt;CommonJobs&lt;/a&gt;&lt;/em&gt;, un sistema de uso interno del área de recursos humanos de la empresa, y utiliza su base de datos y servidores.&lt;/p&gt;

&lt;p&gt;En el assembly &lt;a href='https://github.com/CommonJobs/CommonJobs/tree/master/source/CommonJobs/CommonJobs.Domain.MyMenu'&gt;CommonJobs.Domain.MyMenu&lt;/a&gt; se describe el dominio; en &lt;a href='https://github.com/CommonJobs/CommonJobs/tree/master/source/CommonJobs/CommonJobs.Application.MyMenu'&gt;CommonJobs.Application.MyMenu&lt;/a&gt; se utiliza la infraestructura de &lt;em&gt;CommonJobs&lt;/em&gt; para persistencia, y tareas recurrentes; y el grueso del código está en el proyecto &lt;a href='https://github.com/CommonJobs/CommonJobs/tree/master/source/CommonJobs/CommonJobs.Mvc.UI'&gt;CommonJobs.Mvc.UI&lt;/a&gt; donde están los &lt;em&gt;ViewModels&lt;/em&gt; y los &lt;em&gt;templates&lt;/em&gt; de las páginas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href='https://github.com/CommonJobs/CommonJobs/blob/master/source/CommonJobs/CommonJobs.Mvc.UI/Scripts/my-menu.ts'&gt;my-menu.ts&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='https://github.com/CommonJobs/CommonJobs/blob/master/source/CommonJobs/CommonJobs.Mvc.UI/Scripts/my-menu-pages.ts'&gt;my-menu-pages.ts&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='https://github.com/CommonJobs/CommonJobs/blob/master/source/CommonJobs/CommonJobs.Mvc.UI/Scripts/my-menu-admin-page.ts'&gt;my-menu-admin-page.ts&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='https://github.com/CommonJobs/CommonJobs/blob/master/source/CommonJobs/CommonJobs.Mvc.UI/Scripts/my-menu-order-page.ts'&gt;my-menu-order-page.ts&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href='https://github.com/CommonJobs/CommonJobs/tree/master/source/CommonJobs/CommonJobs.Mvc.UI/Areas/MyMenu'&gt;CommonJobs.Mvc.UI.Areas.MyMenu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espero en futuros posts ir más en detalle sobre los puntos o tecnologías interesantes. Mientras tanto, ¡espero pull requests en GitHub!&lt;/p&gt;

&lt;h3 id='bonus_track'&gt;Bonus Track&lt;/h3&gt;

&lt;p&gt;Dado que no encontré ningún &lt;em&gt;datepicker&lt;/em&gt; con las características deseadas y que se integrara correctamente con &lt;em&gt;TypeScript&lt;/em&gt;, &lt;em&gt;Bootstrap&lt;/em&gt;, &lt;em&gt;Knockout&lt;/em&gt; y &lt;em&gt;Moment.js&lt;/em&gt;, preparé &lt;a href='http://makingsense.github.com/moment-datepicker/'&gt;moment-datepicker&lt;/a&gt; basado en bootstrap-datepicker de Stefan Petre. Es simple, fácil de usar y tiene su &lt;a href='https://nuget.org/packages/MomentDatepicker'&gt;paquete de nuget&lt;/a&gt; listo para utilizar en Visual Studio.&lt;/p&gt;</content>
 </entry>
 
 
</feed>