//publish/ Ireland [event - summary]

During the last May 16th the staff @ ITT and myself carried out the satellite edition of the Windows //publish/ event in Ireland.

The event aimed to facilitate local developers and enthusiasts to publish their Windows Store and Windows Phone Apps.

At the end of the evening two winners were presented with one Nokia Lumia 1520 (first place) and one Dell Venue 8 Pro (second place).

The first place went for Neil, a Dubliner building a promising Power Check application. His application uses data from the ESB to show where all the power cuts currently are, and when they will be likely fixed.

The second place was for Breda, a Kerry woman who coded her first application in Windows Phone. That was such as an amazing achievement because proves that determination pays off.

Dell Pro winner

Cheers,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

[Windows Phone Event] //publish/ Ireland

14MDV0016_Banners_Unity-v2

Come and learn to develop Windows Phone apps!

Receive onsite support to help you overcome the technical blockers and get your app submitted to the Windows Phone Store.

This time the event will be held in the Institute of Technology Tralee, North Campus on May 16 from 18.00 to 21.00

The best two applications will be awarded with the following amazing prizes

  1. First place: One Lumia 1520
  2. Second Place: One Dell Venue 8 Pro

Agenda

  • 18:00 Welcome
  • 18:05-19:00 Developing Windows Phone Apps (by Microsoft MVP Javier Andres Caceres Alvis)
  • 19:00-21:00 Attendees code or finalize -if already started- their app projects with peers and expert support
  • 21:00 Prizes award and wrap up

Free admission, registration is required in the following link: https://publishwindows.com/view/48fd56d71bd44ba985dec8a6bf98a022

 

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

[OT] Becoming a… researcher?

This is a quick note just to let you know that I’ve started a mid-term plan to become a PhD. The first stage is undertaking a MSc in something I love: Software Architecture. I’ve started an academic project to define a Software Architectural Pattern for sensor/massive data. Attached you’ll find the current draft. If you have any contribution to this work please let me know. Working and studying is something I love to do.

Cheers,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

CRM Dynamics Development: the basics

If you’re like me, probably your primary activity is not related with the CRM world, however from time to time probably you have been involved in CRM development. This post is to get you from 10mph to 45mph and for myself for future reference. Please bear in mind that this is not a post for experts, it’s a post for people not familiar or not directly linked in CRM stuff.

You can develop the following kind of code in Microsoft Dynamics:

-Client side JavaScript: this kind of development is very useful when customizing forms or event-oriented functionality. In general I’d say this kind of development fits if and only if you don’t need more than one page of code or when the functionality you need is web in nature (e.g.: integration with mapping services). Dynamics has its own object model, so you will find all the common information in easy to get properties or functions. Usually this code is embedded in the same form or external in another site. When your code is external you’ll need to provide a link or button to access it and that’s when a handy tool like Ribbon Workbench comes to help. The next step is passing parameters from a CRM view. If you need parameters like the current row selected in a grid use the API offered by Dynamics.

-Server side .Net code: you’ll find yourself writing this kind of code if you want to perform a synchronous/asynchronous task as response to an event. An event could be creating a new account or updating an incident. This event-oriented code is called a plug-in or an action. A plug-in is simply an interface implementation that must be registered. An action is a customized step in a workflow/process. The difference between them is that a workflow is always async and it could be scheduled; in other hand a plug-in is always on-demand, sync or async.

Other common task is reporting. Reports can be designed using the built-in Wizard (which has some limitations) or Business Intelligence Development Studio, which is sort of a Visual Studio based report builder installed by SQL Server. Here there is a good step by step guide about that

Finally I would like recommend this article about good practices to follow.

Cheers,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

Visual Studio 2013 Preview – Event Summary

On December 3rd, 2013 I presented a preview of Visual Studio 2013 in the local technology user group, in Kerry, Ireland. During the event other technologies were showcased like Scala and Racket programming. I was glad to learn new stuff and share the new VS release and details about the .Net Framweork 4.5.1.

There was a nice discussion regarding C# support for Dynamic Dispatch (actually I bloged about it as well) and unique features of C# compared with other platforms like delegates, which are not a first class citizen in Java. Also during the presentation of Scala and the related Actor pattern (which is implicitly supported) I partially agreed with Peter Norving in his popular statement: “design patterns may just be a sign of some missing features of a given programming language” because in some programming languages/frameworks (e.g. Scala) the patterns are built-in the programming model. In the following picture some assistants keep the discussion going even during the coffee break because it was very interesting.

VS2013–Event-Summary

I would like to share the slides I used and thank to everyone who made this talk happen.

Cheers,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

Implementing Multi-Methods (aka Multi-Dispatch, Dynamic Dispatch)

Multi-methods / Multi-Dispatch / Dynamic dispatch is a mechanism to dispatch a message to the run-time type (if two input parameters are bound to their runtime types then it’s known as double dispatch). Usually compiler keeps a table (known as virtual table or vtable) to know the objects’ dynamically bound methods. Before C# 4.0, this table was constructed in compilation time, but since the introduction of the dynamic keyword the vtable is built in runtime. I wanted to write this post because I found several blogs implementing the “asteroid collides planet” sample, which I think provide little insight.
The following example shows a base interface (IMessageStream) and concrete implementations (classes Message and MessageV2):

    public interface IMessageStream
    {
        void Read();
    }

    public class Message : IMessageStream
    {
        public void Read() { }
    }

    public class MessageV2 : IMessageStream
    {
        public void Read() { }
    }

The class DataContext stores messages into database using the data returned by the interface implementations. More exactly, the DataContext delegates to the input parameter (msgObj) the task of getting the message raw data to be stored. The following code shows the DataContext class with 3 overloads of the SaveMessage method, one per type/subtype:

    public class DataContext
    {
        public void SaveMessage(IMessageStream msgObj)
        {
            Console.WriteLine("Using IMessageStream");
            msgObj.Read();
        }

        public void SaveMessage(Message msgObj)
        {
            Console.WriteLine("Using Message");
            msgObj.Read();
        }

        public void SaveMessage(MessageV2 msgObj)
        {
            Console.WriteLine("Using MessageV2");
            msgObj.Read();
        }
    }

Now consider the following code to inject the IMessageStream dependency in the SaveMessage method:

            dynamic msg = new Message();           //typed at runtime
            IMessageStream msg2 = new Message();   //typed at compile time
            IMessageStream msg3 = new MessageV2(); //typed at compile time
            dynamic msg4 = new MessageV2(); 	   //typed at runtime

            DataContext db = new DataContext();
            db.SaveMessage(msg);    //prints: Using Message
            db.SaveMessage(msg2);   //prints: Using IMessageStream
            db.SaveMessage(msg3);   //prints: Using IMessageStream
            db.SaveMessage(msg4);   //prints: Using MessageV2

Multi-Methods/Multi-Dispatch (or double dispatch if two dynamic input parameters are used) /Dynamic Dispatch allows to select at runtime the specific implementation (for interfaces) or subclass (for classes/abstract classes) to be used. Without dynamic the implementation is selected at compilation time (which is usually a base interface/class). With dynamic the implementation is selected at runtime, so the specific class is selected. This example showed a flavor or abstraction using different data types (subtyping) and different behaviors (polymorphism).

Many authors agree in a single class (e.g. DataContext) with polymorphic methods as the way to use the specific types. I also think you should have a good reason to implement techniques like this (e.g.: replacing a “bad” looking switch block) because it increases the complexity of your design. From a simplistic (kind of) end users’ point of view the dynamic keyword duck types because it says the compiler that an object support any method, then the run-time matches the method signature with the actual type. Bear in mind than dynamic is about deferred binding time and the var keyword is simply a shortcut to avoid writing twice a type, so the following two lines are the same:

 Program myProgram = new Program();
 var myProgram = new Program();

Cheers,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

Visual Studio 2013 Preview – Event

Hello everybody!

On December 03rd, 2013 I’ll be showcasing to the local Technology User Group some of the new features of Visual Studio 2013 and related components (e.g. TypeScript and the Framework 4.5.1). This is not intended to be a full review/lab of new features but it’s more a quick talk to get you from 0mph to 60 mph. This is the agenda:

  • Using TypeScript (types, classes and modules) – (just in case: I do know TypeScript is not exclusively of Visual Studio 2013, but it’s actually the first time that is included in the Editor, so it does not look like an add-on anymore).
  • New Editor Features: Peek Definition and Scroll Bar new features
  • CodeLens, CodeMaps and Memory Analysis
  • Collecting diagnostics information of server and cloud applications.

The place is the IT Tralee (North Campus), Co. Kerry, Ireland at 07:00 PM, room to be defined (possibly T105, I’ll update this post when the room number is available). Also, if you have some free time remember that Scott Gu will be in Dublin talking about Azure on December 2nd.
See you there,

Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 236 seguidores