MVC 4 investigating best practices

I’m starting to investigate on the topic. We are looking for improvements on MVCdevelopment.

One point have noticed: improve usability of UI. How to avoid having to jump to other views to realize actions over current object instances?

I think we can help on this problem using partial views and or Ajax. Will keep looking for these alternatives more deeply.

Que estoy haciendo hoy 29 julio?

Excelente avance en el protecto sistema de trazabilidad de proteina con Zgura, implementando en Windows Azure, MVC 4 y code first. En Zgura desarrollamos calidad, aplicaciones usables y sostenibles.

Actividades fuera del trabajo (o más bien, continuo disfrutando lo que me gusta hacer!): estudiar para tomar examen 70-480, para certificación desarrollo de aplicaciones WEB.

Leer libro The New Digital Age y, tentado a comprar y empezar a leer el libro The Zealot, de Reza Aslan, alcancé ver una entrevista que le hizo al autor Piers Morgan de CNN y ahora que lo pienso dos veces, entiendo porque Amazon me lo estaba sugiriendo esta pasado fin de semana, se ha generado una polémica por una entrevista que le hicieron al mismo autor en la cadena Fox.

Nota importante: quiero felicitar a los organizadores de Linkin Nicaragua, que tuvo lugar en el Hotel Barcelo Managua el sábado 27 recién pasado fue todo un éxito!

Styling for jquery UI in MVC 4

This is going to be a very short post: I was having an issue with the DatePicker from jquery UI: widget was appearing without any style, I found I was missing  references for jquery UI css at BundleConfig:

var jqueryUI=new StyleBundle("~/Content/themes/base/css").Include(
                             "~/content/themes/base/jquery.ui.theme.css" 
                                );
            bundles.Add(jqueryUI);

Then, you add the following code at your _Layout View:

@Styles.Render(("~/Content/themes/base/css")

At the beginning I added jquery.ui.theme.css, after that, I was getting the DatePicker like this:
jscriptUI1

Do you see the weird characters? it solved when I changed the referenced css file for: jquery.ui.all.css at BundleConfig.cs. Now it looks like:

jscriptUI2

Happy weekend.

 

Nicaragua, Ley Proteccion Consumidor (842)-Comercio electrónico

El martes 23 de julio apareció un editorial del presidente del COSEP en La Prensa, artículo sobre la ley del título. Citando el articulo: “Otro de los avances fue la regulación de las transacciones por medios electrónicos, para lo cual se dispuso que es obligación de la persona proveedora utilizar sistemas tecnológicos y elementos técnicos confiables para brindar seguridad y confidencialidad a la información transmitida y proporcionada por la persona consumidora en las transacciones electrónicas.”.

Me llamo mucho la atención y quise buscar un poco más de información. Pueden encontrar el texto completo de la ley aquí: Texto de la ley 842.

Lo referido a comercio electrónico se encuentra a partir del artículo 77. Lo que yo interpreto es que:

  • Habra una ley específica sobre la materia (no indica cual es), la dejan como pendiente.
  • Por otro lado, menciona que el proveedor deberá proveer comprobante de compra electronica, ¿significa esto que el medio electronico, como factura, por ejemplo, es válido y suficiente? para mi si (y veo oportunidades para la oferta de sistemas factura electronica, tipo TradeShift, para apoyar a los negocios en el mantenimiento y facilitación de registro factura electronica a como lo manda la ley, entre otros).

¿Otras opiniones?

 

MVC 4 Views and Razor code (and showing an aggregation from an entity)

This is an example situation where Razor can be useful to allow code on a view: in this case, I have a view model like this one (very simplified):

public class Product
{
public Guid ProductId {get;set;}
public string Description {get;set;}

public virtual List ProductTransactions {get;set;}

}

public class ProductTransaction
{
public Guid TransactionId {get;set;}
public decimal Amount {get;set;}

public Guid ProductId {get;set;}
[ForeignKey("ProductId")]
public virtual Product Product {get;set;}

}

then, if I want to see a list of products with total amounts, in my view, I could use something like this:

<table>
  <thead>
    <tr>
      <td>
          @Html.LabelFor(x => x.Product[0].Description)
      </td>
      <td>
           @Html.LabelFor(x => x.Product[0].ProductTransactions[0].Amount)
      </td>
     </tr>
   </thead>
   <tbody>
    @foreach (var product in Model.Product) 
      {
       <tr>
         <td>
             @Html.DisplayFor(x => product.Description)
         </td>
        <td>
           @{ decimal totalAmount=0;
           foreach (var transaction in Product.ProductTransactions)
              {
                totalAmount= totalAmount+ transaction.Amount;
               }
            @Html.DisplayFor(x => totalAmount)
            }
       </td>
      </tr>
      }
    </tbody>
</table>

Of course this is not the complete code of the View, I just focused on what’s relevant to the use of code inside the view using Razor, for a specific purpose, in this case, obtain aggregation of the Amount for each one of the products in the corresponding entity (at the DB).

Cheers.

La identidad en línea en el futuro

Que les parece, dentro de algunos años habrán más identidades en línea que físicas! Esto es porque uno podria tener más de un perfil en línea correspondiente a cada cuenta de un servicio en línea como una red social o una subscripción.

Si lo anterior ocurre se vuelve cada ves más importante aprender a protegerse, cuidar su identidad en línea. Los autores del libro “The New Digital Age” sostienen que se deberia enseñar, incluso desde la escuela.

New ways technology relates with us

I learnt a new word today in English (least to me) haptic (or “táctil” in Spanish). It is not just a new word but an interesting concept on how devices interact with us.

We should expect our devices to give us alerts using this type of technology, also virtual experiences like games will be (and actually are) complemented through this.

More on haptic devices: http://en.m.wikipedia.org/wiki/Haptic_technology

windows Azure Platform as a Service (PAAS)

Two of the main PaaS components in Windows Azure are Azure Websites and cloud services.

As a developer of applications, based on advice of friends and experience, I recomend using Websites for testing, proof of concept and applications not requiring acess to the virtual machine that support the service. In addition. I’ll use a cloud service if require a staging environment for deployments, so, once new version gets approved I will just swap virtual IP addresses and new version gets in production.

This is a running example of a website we deployed at Coding Dojo, past June 23rd: http://codingdojo2.azurewebsites.net

Costs: free the website. If you want to use a custom domain name (e.g.,myapp.mydomain.com) you have to upgrade to Shared Website, another category of service inside websites in Azure that has a monthly cost of approximately $10/month.

There is more information at: http://www.windowsazure.com/en-us/
I’ll be wrting soon on samples based on my exoerience.

Cheers.

La clave es la conectividad

Los autores del libro The New Digital Age (E. Schmidt y J.Cohen) sostienen en el libro la idea de que el primer factor de influencia de cambio es la conectividad. Cada vez mas gente tiene acceso a otra gente, a otras ideas. Por supuesto, en muchos lugares este progreso esta limitado a las tecnologias mas simples como SMS, interesante, hice una busqueda por Google y encontre varios proyectos en Nicaragua usando SMS para proveer servicios a intituciones de salud u ONG (Telecom Sans Frontier, Universidad Vilanova, 2 ejemplo).

Otro punto es que los cambios son mas rapidos, en muchos lugares se pasara de simple telefonia celular a acceso a datos utlizando banda ancha. Me parece que con el acceso creciente de la poblacion a los servicios de dstos de banda ancha es una obligacion para personas y empresas que quieran compartir contenidos, de proveer versiones para dispositivos móviles.

En fin, la conectividad y consiguiente globalizacion nos afecta, de una u otra manera y nos va a permitir tener acceso a otras personas y mrrcados para los que nos debemos preparar, dominando la tecnología.