miércoles, 28 de diciembre de 2016
Sin duda, el equipo de marketing de Microsoft es conocido por su gran habilidad y creatividad a la hora de nombrar los nuevos productos que la fábrica de Redmond va lanzando al mercado. Pero no sólo eso, también son realmente buenos sabiendo cuándo hay que hacerlo para conseguir captar la atención y elevar el hype.
Ya lo demostraron meses atrás con el renombrado de toda nueva pila de tecnologías relacionadas .NET, cuando decidieron cambiar de ASP.NET 5 a ASP.NET Core, una idea que sirvió para centrar las expectativas del producto y entusiasmó a los autores de contenidos (blogs, podcasts, libros, cursos, presentaciones, etc.), sobre todo por lo oportuno de tan estratégico movimiento.
Y el renombrado de la suite de desarrollo por excelencia ya se estaba haciendo de esperar, aunque esta vez no nos ha pillado desprevenidos. De hecho, más o menos era un secreto a voces e incluso había algún leak donde se había adelantado la noticia: Visual Studio 2017 se llamará finalmente Visual Studio Core 1.0, rompiendo así con la tradición de versionarlos según el año de aparición, como se lleva haciendo desde el año 2003.
Ayer mismo se publicó la Release Candidate 2, en la que ya figura el nuevo nombre del producto. También es posible descargar ya las actualizaciones de componentes y herramientas de terceros (como JetBrains, Telerik, Component One, DevExpress y otros) con adaptaciones a estos cambios, así como acceder a documentación y materiales actualizados.
Como consecuencia de este cambio, y dado que existe un parecido razonable del nuevo nombre con el popular Visual Studio Code, éste último pasará a denominarse Code Studio Visual, eliminando así toda posibilidad de confusión entre ambos productos, pero manteniendo al mismo tiempo el "aire" de familia entre ellos.
La nueva versión disponible a día de hoy, versionada como 2.0, ya hace efectivo este cambio, como podéis ver en la captura de pantalla adjunta.
Pero la oleada de renombrados en la organización no queda aquí, pues lo mismo ocurre con los servicios para desarrolladores en la nube. Con objeto de hacer más sencilla la adopción de la nueva nomenclatura, los servicios conocidos como Visual Studio Online, que luego pasaron a denominarse Visual Studio Team Services, pasarán ahora a llamarse Visual Studio Core Team Online Services, dejando así más patente su relación con la familia de productos y su enfoque de plataforma completamente online.
Aunque algo más adelante, también se verán afectados los servicios generales en la nube, lo que hasta ahora conocíamos como Microsoft Azure, que pasarán a denominarse Microsoft Cloud Core Services. Sin duda, todo un acierto el eliminar la palabra "Azure", que al fin y al cabo no dice nada, y comunicar más claramente dónde se encuentra la aportación de valor del producto, como ya hacen otros proveedores como Amazon, IBM o Google.
Según Patrick Iñuelas, product manager de Microsoft Naming Core Team (la división de marketing encargada de poner en marcha estos cambios) están ahora trabajando en el próximo paso, que es renombrar Xamarin a Silverlight Core, en palabras textuales, "porque tenemos el nombre de dominio disponible".
¿Y mi opinión respecto a todos estos cambios? Pues, por supuesto, absolutamente favorable. Los nombres anteriores sonaban ya algo añejos y a los jóvenes desarrolladores les sonaba a algo “legacy”; es lógico que cada cierto tiempo haya que hacer un reboot para poner los contadores a cero y comenzar de nuevo. En cuanto a los nombres elegidos, creo que son totalmente acertados porque son fáciles de recordar, tienen gancho, y se alinean correctamente con la tendencia "Core" de los últimos tiempos, dando una imagen mucho más fresca y moderna de los productos.
Publicado en Variable not found.
Y el renombrado de la suite de desarrollo por excelencia ya se estaba haciendo de esperar, aunque esta vez no nos ha pillado desprevenidos. De hecho, más o menos era un secreto a voces e incluso había algún leak donde se había adelantado la noticia: Visual Studio 2017 se llamará finalmente Visual Studio Core 1.0, rompiendo así con la tradición de versionarlos según el año de aparición, como se lleva haciendo desde el año 2003.
Ayer mismo se publicó la Release Candidate 2, en la que ya figura el nuevo nombre del producto. También es posible descargar ya las actualizaciones de componentes y herramientas de terceros (como JetBrains, Telerik, Component One, DevExpress y otros) con adaptaciones a estos cambios, así como acceder a documentación y materiales actualizados.
La nueva versión disponible a día de hoy, versionada como 2.0, ya hace efectivo este cambio, como podéis ver en la captura de pantalla adjunta.
Pero la oleada de renombrados en la organización no queda aquí, pues lo mismo ocurre con los servicios para desarrolladores en la nube. Con objeto de hacer más sencilla la adopción de la nueva nomenclatura, los servicios conocidos como Visual Studio Online, que luego pasaron a denominarse Visual Studio Team Services, pasarán ahora a llamarse Visual Studio Core Team Online Services, dejando así más patente su relación con la familia de productos y su enfoque de plataforma completamente online.
Aunque algo más adelante, también se verán afectados los servicios generales en la nube, lo que hasta ahora conocíamos como Microsoft Azure, que pasarán a denominarse Microsoft Cloud Core Services. Sin duda, todo un acierto el eliminar la palabra "Azure", que al fin y al cabo no dice nada, y comunicar más claramente dónde se encuentra la aportación de valor del producto, como ya hacen otros proveedores como Amazon, IBM o Google.
Según Patrick Iñuelas, product manager de Microsoft Naming Core Team (la división de marketing encargada de poner en marcha estos cambios) están ahora trabajando en el próximo paso, que es renombrar Xamarin a Silverlight Core, en palabras textuales, "porque tenemos el nombre de dominio disponible".
¿Y mi opinión respecto a todos estos cambios? Pues, por supuesto, absolutamente favorable. Los nombres anteriores sonaban ya algo añejos y a los jóvenes desarrolladores les sonaba a algo “legacy”; es lógico que cada cierto tiempo haya que hacer un reboot para poner los contadores a cero y comenzar de nuevo. En cuanto a los nombres elegidos, creo que son totalmente acertados porque son fáciles de recordar, tienen gancho, y se alinean correctamente con la tendencia "Core" de los últimos tiempos, dando una imagen mucho más fresca y moderna de los productos.
[Actualizado 30/12] Nota para despistados: pues no, no es una noticia real, simplemente se trata de una broma por el 28 de diciembre, día de los inocentes en España. Visual Studio 2017 seguirá llamándose así, Azure no cambiará de nombre, y tampoco Xamarin... al menos de momento ;D
Publicado en Variable not found.
Publicado por José M. Aguilar a las 12:01 a. m.
Hay
3 comentarios, ¡participa tú también!
Etiquetas: inocentadas, noticias, novedades, visualstudio
martes, 27 de diciembre de 2016
.NET
- C# 7–Default method implementation?
Eduard Tomás - Qué son los tipos por valor y por referencia en .NET y C#
José Manuel Alarcón - The week in .NET – .NET Core triage on On .NET, ShareX
Bertrand Le Roy - Performance exercise: Minimum
Andrey Akinhin - Time Period Library for .NET
Jani Giannoudis - Decimal vs Double and Other Tips About Number Types in .NET
Matthew Jones
viernes, 23 de diciembre de 2016
Os deseo unas muy felices fiestas navideñas y
un 2017 lleno sólo de cosas buenas.
un 2017 lleno sólo de cosas buenas.
martes, 20 de diciembre de 2016
Aunque esta tarea es algo que pueden (y suelen) realizar servidores frontales como IIS o Apache, a veces puede ser interesante que sea nuestra aplicación la que se encargue de ello, por ejemplo si estamos ofreciendo servicios directamente desde los servidores Kestrel o WebListener, o si deseamos aplicar algún tipo de compresión personalizada.
Conceptualmente, la tarea de compresión del resultado de una acción es una buena candidata para ser implementada como filtro. Los filtros son capaces de tomar el control antes y después de la ejecución de las acciones, por lo que, al menos en teoría, serían un buen lugar para implementar la lógica de compresión y retorno al cliente de los resultados, y su uso tendría la siguiente pinta:
public class HomeController : Controller { [Compress] public IActionResult Test() { var text = new string('x', 1000000); return Content(text); } }En este post vamos a ver cómo implementar ese filtro
[Compress]
. Y bueno, aunque implementarlo a mano y desde cero podría tener su gracia, lo que vamos a hacer es aprovechar dos de las últimas e interesantes novedades introducidas recientemente en ASP.NET Core 1.1: el middleware de compresión y la capacidad de utilizar middlewares como filtros de MVC.
lunes, 19 de diciembre de 2016
.NET
- Eliding Async and Await
Stephen Cleary - The Year in .NET – Visual Studio 2017 RC and .NET Core updated, On .NET with Stephen Cleary and Luis Valencia, Ulterius, Inferno, Bastion, LoGeek Night
Bertrand Le Roy - GAMBADAS: Los tres principales pecados al gestionar errores y excepciones
José Manuel Alarcón - Why is reflection slow?
Matt Warren - .NET Framework December Monthly Rollup is Now Available
Stacey Haffner - How to Use Your GPU in .NET
D. Infuehr - Loading .NET Assemblies out of Seperate Folders
Rick Strahl - Research papers in the .NET source
Matt Warren
martes, 13 de diciembre de 2016
EnumDropDownListFor()
para simplificar la creación de cuadros desplegables cuyos elementos eran valores de una enumeración, un escenario relativamente frecuente al desarrollar aplicaciones.Su uso era bastante sencillo, como se puede observar en el código mostrado a continuación:
// Model: public enum Language { CSharp, VbNet, FSharp, NodeJs } public class CodeGenerator { public string ApplicationName { get; set; } public Language Language { get; set; } ... } // View: @model CodeGenerator ... @Html.LabelFor(m => m.Language) @Html.EnumDropDownListFor(m => m.Language)Pues bien,
EnumDropDownListFor()
ha dejado de existir en ASP.NET Core MVC, aunque por supuesto se ha incluido una alternativa, que incluso diría que es bastante más acertada, para conseguir el mismo objetivo, pues se ha separado de forma clara la generación del desplegable de la obtención de datos para poblarlo.
lunes, 12 de diciembre de 2016
.NET
- The week in .NET – On .NET on MyGet – FlexViewer – I Expect You To Die
Bertrand Le Roy - Fun with the HttpClient pipeline
Thomas Levesque - Here's how to detect installed 'Antivirus' software name (using C#)
Kunal Chowdhury - SmartFormat.NET /2 - Enhancing string.Format to new levels
Axuno - Performance of different lock methods in .net
Eowind
lunes, 5 de diciembre de 2016
.NET
- The week in .NET – Cosmos on On.NET, GongSolutions.WPF.DragDrop, Transistor
Bertrand Le Roy - LINQ Debugging and Visualization
Michael Sorens - Implementing a simple retry pattern in c#
Alastair Crabtree - Do not misuse or over abstract AutoMapper
Andriy Buday - Beware of the .NET HttpClient
Nima Ara - Novedades en C#7
Sebastian Henzenn
martes, 29 de noviembre de 2016
A la hora de registrar las trazas es posible indicar uno de los niveles definidos en la enumeración
LogLevel
, cuyos miembros son Trace
, Debug
, Information
, Warning
, Error
y Critical
. Estos miembros definen jerárquicamente la "importancia" de los acontecimientos que registramos, de forma que luego podemos configurar los proveedores para que sólo muestren o persistan mensajes a partir de un nivel determinado.
lunes, 28 de noviembre de 2016
.NET
- .NET Standard 2.0 - Making Sense of .NET Again
Rick Strahl - Beware of the IDictionary<TKey, TValue>
Nima Ara - .NET Standard and Testing Partially Trusted Code
Steve Wilkes - Problems with AsParallel
Szymon Warda - The week in .NET – .NET Core, ASP.NET Core, EF Core 1.1 – Docker – Xenko
Bertrand Le Roy - Cómo leer y escribir archivos de texto con .NET
José Manuel Alarcón - Open Source .NET – 2 years later
Matt Warren - MVP Hackathon 2016: Cool Projects from Microsoft MVPs
Jeffrey T. Fritz - Mapper vs Mapper: Performance
Steve Wilke - Novedades de C#7: Literales binarios.
Leo Micheloni
martes, 22 de noviembre de 2016
A continuación desgranaremos un poco qué se incluye en esta entrega, pero gracias al uso de versionado semántico, sin entrar en más detalles ya podemos saber que esta nueva versión añade características adicionales y mejoras compatibles hacia atrás, por lo que no tendríamos que preocuparnos por romper algo si actualizamos a ella (¡al menos en teoría, claro! ;)).
jueves, 3 de noviembre de 2016
Pues de nuevo este año voy a tener inmensa fortuna de dar el salto a la otra parte del mundo para asistir al eventazo anual que Microsoft organiza para sus MVP. Una nueva ocasión para salir un poco de la cueva y conocer lo que se está cociendo en los hornos del gigante, en el marco incomparable de su campus en Redmond.
Aunque por supuesto, los cientos de sesiones técnicas a las que podré asistir son uno de los grandes motivos para hacer un viaje de esta magnitud, he de reconocer que una de las cosas que más valoro de mi asistencia es pasar unos buenos ratos con colegas y amigos a los que sólo veo en ocasiones como estas y de cuya compañía disfruto cada minuto.
Y dicho esto, cierro las maletas y casi salgo pitando para el aeropuerto, que ya voy tarde ;D
¡Nos vemos a la vuelta!
Publicado en Variable not found.
lunes, 31 de octubre de 2016
.NET
- How does the 'fixed' keyword work?
Matt Warren - The week in .NET – .NET, ASP.NET, EF Core 1.1 Preview 1 – On .NET on EF Core 1.1 – Changelog – FluentValidation – Reverse: Time Collapse
Bertrand Le Roy - Interception in .NET – Part 4: An Interception Framework
Ricardo Peres - Roslyn - How to create a custom debuggable scripting language?
Michal Komorowski
martes, 25 de octubre de 2016
maxlength
en los cuadros de texto, máxime cuando esta información solíamos incluirla en anotaciones de las clases del modelo con atributos como StringLength
o MaxLength
.Y ha llovido bastante desde entonces, incluso el framework MVC se ha "reseteado" y ahora es ASP.NET Core MVC, pero seguimos sin disponer de esa posibilidad, que cubre un escenario muy frecuente al desarrollar aplicaciones con este framework.
En este post vamos a ver, paso a paso, cómo utilizar los maravillosos tag helpers para incluir este atributo de forma automática en los tags
<input>
vinculados a propiedades del modelo cuyos metadatos indiquen un tamaño máximo para el campo.
lunes, 24 de octubre de 2016
Como de costumbre, espero que os resulten interesantes :-)
.NET
- You're using HttpClient wrong and it is destabilizing your software
Simon Timms - Making .NET code less allocatey - Allocations and the Garbage Collector
Maarten Balliauw - Serialización de datos: Protocol Buffers
Javier Torrecilla - The week in .NET – Bond – The Gallery
Betrand Le Roy - Notes from the ASP.NET Community Standup – October 11, 2016
Jeffrey T. Fritz - Interception in .NET – Part 3: Static Interception
Ricardo Peres
martes, 18 de octubre de 2016
Me consta que muchos lo estabais esperando con impaciencia, así que me complace anunciaros que desde hace unos días tenéis disponible mi nuevo curso sobre ASP.NET Core MVC en CampusMVP.
Su creación sido un proceso realmente largo y laborioso porque, a diferencia de ediciones anteriores, los cambios que trae consigo el nuevo marco de trabajo han obligado a replantear desde el principio los contenidos, pero creo que el resultado ha valido la pena: un curso potente y completo en el que recorremos el marco de trabajo desde las bases que lo sustentan (ASP.NET Core) hasta la programación de aplicaciones y servicios con el framework ASP.NET Core MVC.
En este post intentaremos responder a las siguientes preguntas:
- ¿En qué consiste el curso de ASP.NET Core MVC?
- ¿Cuáles son los contenidos del curso?
- ¿Es este curso para mi?
- ¿Qué conocimientos previos necesito para seguir el curso?
- ¿Y qué ocurre con MVC 5 o los demás frameworks basados en ASP.NET 4.x?
- Me convence, ¿cuándo empezamos?
martes, 11 de octubre de 2016
El framework nos ofrece distintas fórmulas para generar direcciones, aunque la más básica es utilizar extensores de
IUrlHelper
como Action()
, Link()
o RouteUrl()
. Tenemos instancias de dicho interfaz disponibles en la propiedad Url
de controladores y vistas, pero también podemos reclamarlas directamente al sistema de inyección de dependencias en otros contextos. Asimismo, en las vistas podemos utilizar helpers específicos para generar hipervínculos, como el clásico Html.Action()
, o el más reciente tag helper <a>
.
lunes, 10 de octubre de 2016
.NET
- Audit.NET: A small framework to audit .NET object changes
Federico Daniel Colombo - New Features of C# 7.0
Prasad kulkarni - Screen Recorder in .NET
Arun Chandrasekhara Pillai - The week in .NET – On .NET on Cecil – NAudio – SpeechCentral – Hand of Fate
Bertrand Le Roy - Story of Equality in .Net - Part 6
Ehsan Sajjad - Pluralization: The missing part of .NET & PluralNet: Pluralization for your .Net application
Rudy Huyn
martes, 4 de octubre de 2016
Startup
es donde introducimos el código de inicialización de nuestras aplicaciones. En sus métodos Configure()
y ConfigureServices()
encontraremos aspectos de todo tipo, como los siguientes, por citar sólo algunos:- La configuración del sistema de settings
- Definición de destinos de logs y niveles de trazas
- Configuración de componentes de tratamiento de errores y sistemas de depuración y profiling adicionales
- Configuración de servicios como caching o estado de sesión
- Inserción y configuración de servicios y middlewares del framework, como los destinados al proceso de contenidos estáticos, internacionalización, CORS, u otros
- Middlewares personalizados
- Registro de servicios en el sistema de inyección de dependencias
- Inicializaciones específicas de la aplicación, como seeds de bases de datos o configuración de mapeos entre objetos
- Configuración de rutas de la aplicación
- …
lunes, 3 de octubre de 2016
.NET
- Optimising LINQ
Matt Warren - Convirtiendo Entidades de Dominio a Dtos y viceversa, parte I & parte II
Javier Torrecilla - Un-swallowing Swallowed Exceptions with Fody and IL Weaving
Nick Chamberlain - The week in .NET: On .NET on Orchard 2 – Mocking on Core – StoryTeller – Armello
Bertrand Le Roy - Introducing .NET Standard
Immo Landwerth - .NET Standard, una única Library para gobernarlos a todos!
Bruno Capuano - Yield or Not To Yield
Pavel Rytikov
martes, 27 de septiembre de 2016
En más de una ocasión me he topado con artículos que sugerían que ASP.NET Core MVC es un middleware y de hecho, incluso en algunos momentos yo también he tenido la sensación de que podía serlo.
Sin embargo, y esta es la respuesta corta si quieres ahorrar tiempo de lectura, estrictamente hablando no lo es.
lunes, 26 de septiembre de 2016
.NET
- When a disk cache performs better than an in-memory cache (befriending the .net GC)
Dan Roberts - Asynchronous Programming in C# using Async Await – Best Practices
Damir Arh - The week in .NET: On .NET with Steeltoe – C# Functional Extensions – Firewatch
Bertrand Le Roy - Inspecting aspects and interception in .NET, part I, II & III
Erik Heemskerk - Compact strings in the CLR
Matt Warren - Designing with Exceptions in .NET
Jonathan Allen - Channelling my inner geek
Marc Gravell
miércoles, 20 de julio de 2016
Parecía que no llegaban, pero por fin están aquí las vacaciones :)
Como suele ser habitual por esta época, colgaré temporalmente los hábitos digitales y durante las próximas semanas el blog quedará a merced de las olas. Aunque la mayor parte del tiempo seguiré trabajando en distintos temas, espero poder reducir un poco la intensidad y tomar aunque sea algunos días de descanso para poder disfrutar de la familia y darme algún que otro bañito relajante en las costas de Cádiz.
Espero que nos veamos a la vuelta, todos morenitos y con las pilas al 100%, ya en el mes de septiembre.
¡Felices vacaciones, amigos!

Imagen: Atardecer en Costa Ballena (Rota-Cádiz)
Autor: Ramón Sobrino https://trapatroles.wordpress.com/2015/04/08/rota-cadiz/
Como suele ser habitual por esta época, colgaré temporalmente los hábitos digitales y durante las próximas semanas el blog quedará a merced de las olas. Aunque la mayor parte del tiempo seguiré trabajando en distintos temas, espero poder reducir un poco la intensidad y tomar aunque sea algunos días de descanso para poder disfrutar de la familia y darme algún que otro bañito relajante en las costas de Cádiz.
Espero que nos veamos a la vuelta, todos morenitos y con las pilas al 100%, ya en el mes de septiembre.
¡Felices vacaciones, amigos!
Imagen: Atardecer en Costa Ballena (Rota-Cádiz)
Autor: Ramón Sobrino https://trapatroles.wordpress.com/2015/04/08/rota-cadiz/
martes, 19 de julio de 2016
Hoy vamos a hablar de las variables de sesión, un tema que ya tratamos por aquí hace bastante tiempo, pero que conforme evolucionaba el producto ha cambiado lo suficiente como para dedicarle un nuevo post.
lunes, 18 de julio de 2016
.NET
- The cost of garbage collection
Szymon Warda - Cambios de zona horaria en .NET
CampusMVP - Accessing and deleting large e-mails in Gmail with C#
Bruno Sonnino - LongRunning Is Useless For Task.Run With async-await
Bar Arnon - Fast Deep Copy of Objects by Expression Trees (C#)
Fakon - Simplest C# code to post a tweet using OAuth
Danny Tuppeny
martes, 12 de julio de 2016
Pero como sabemos, en ASP.NET Core el sistema de configuración ha cambiado para mejor, y ahora los settings podemos almacenarlos en archivos JSON independientes del resto de configuraciones del proyecto, así como en otros formatos y ubicaciones. Y ya que se ponían con el tema, el equipo de ASP.NET ha aprovechado para hacer que podamos modificar los settings sobre los archivos de configuración y que éstos sean aplicados sobre la marcha, sin necesidad de volver a arrancar la aplicación.
lunes, 11 de julio de 2016
.NET
- Upload File to SFTP Site with C# in Visual Studio .NET
Slccocdev - Avoidable colletion mistakes in C#
Trevor Ash - AutoMapper 5.0 Released
Jimmy Bogard - How to Write Your Own Programming Language in C#
Vassili Kaplan - .NET Backward Compatibility – Part 1, Part 2 & Part 3
Bastian Eicher - Story of Equality in .Net - Part 3 & Part 4
Ehsan Sajjad - Querying JSON using LINQ
Mahesh Sabnis - What is the Extension Method in C#?
Dhananjay Kumar - The async/await model and its perils
& The cost of the async state machine
Ayende Rahien
lunes, 4 de julio de 2016
Para contaros penas ya están los telediarios, así que simplemente quería compartir vosotros una alegría de la que, de alguna u otra forma, sois también artífices: el pasado viernes me notificaron desde Microsoft que he sido reconocido nuevamente como MVP :)
Supongo que todos habréis visto ya la pinta que tiene este ansiado mail, pero para los que acabéis de llegar, el mensaje de notificación del nombramiento viene a ser más o menos como sigue:
Esta vez me ha pillado por sorpresa porque en el fragor de la batalla diaria no me había dado cuenta de que era día uno de julio, que es la fecha en la que conozco si me otorgan o no esta distinción, por lo que no he tenido la tensa espera de otras veces… y os confirmo que, a pesar de ser la sexta vez, la mezcla de emoción, alegría y orgullo es la misma :)
Una novedad curiosa es que dejo de ser MVP en ASP.NET/IIS, como ocurría años anteriores, y paso a ser MVP en la categoría Visual Studio and Development Technologies . Pero no, no es que haya cambiado de especialidad; este cambio es debido a las modificaciones al programa MVP que anunció Microsoft meses atrás, que introducía nuevas categorías de "grano grueso" en las que englobarían especializaciones más concretas:
![image[20] image[20]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5oqleoTTBHdTywJKDYeY3ih2Qa_pN1UGxU2l3WDAuPYWml_gD3hGY2r0EK65yWvAAE80mHu2LpAkU5fm1FZxabfxl0i8eK9HDVGnCVctj0aciKbuR0AoMr6c89bp5U7RCAwsnLw/?imgmax=800)
Muchas gracias al equipo del programa MVP en Microsoft, a la gran Cristina González, MVP lead para esta parte del mundo, y a todos vosotros, amigos de Variable not found, por hacerlo posible.
Es un honor seguir formando parte de este privilegiado grupo de personas que cada día dedican su tiempo y entusiasmo para compartir conocimientos con la comunidad de desarrolladores, y entre los que cuento ya grandes amigos. Sinceramente, cada vez me siento más afortunado de pertenecer a esta pandilla y, como sé que esto es algo que lógicamente en algún momento habrá de acabarse, estoy disfrutando el momento como nadie :)
Ah, y ¡enhorabuena al resto de MVP nombrados el mismo día!
Publicado en Variable Not Found.
Supongo que todos habréis visto ya la pinta que tiene este ansiado mail, pero para los que acabéis de llegar, el mensaje de notificación del nombramiento viene a ser más o menos como sigue:
De: support@mvpaward.com Asunto: ¡Enhorabuena MVP de Microsoft 2016! Estimado/a Jose Maria Aguilar, Enhorabuena. Nos complace anunciarle el Premio MVP de Microsoft® de 2016. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa con otras personas su profundo conocimiento técnico así como su experiencia en el uso de la tecnología. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Visual Studio and Development Technologies a lo largo del pasado año. |
Esta vez me ha pillado por sorpresa porque en el fragor de la batalla diaria no me había dado cuenta de que era día uno de julio, que es la fecha en la que conozco si me otorgan o no esta distinción, por lo que no he tenido la tensa espera de otras veces… y os confirmo que, a pesar de ser la sexta vez, la mezcla de emoción, alegría y orgullo es la misma :)
Una novedad curiosa es que dejo de ser MVP en ASP.NET/IIS, como ocurría años anteriores, y paso a ser MVP en la categoría Visual Studio and Development Technologies . Pero no, no es que haya cambiado de especialidad; este cambio es debido a las modificaciones al programa MVP que anunció Microsoft meses atrás, que introducía nuevas categorías de "grano grueso" en las que englobarían especializaciones más concretas:
Muchas gracias al equipo del programa MVP en Microsoft, a la gran Cristina González, MVP lead para esta parte del mundo, y a todos vosotros, amigos de Variable not found, por hacerlo posible.
Es un honor seguir formando parte de este privilegiado grupo de personas que cada día dedican su tiempo y entusiasmo para compartir conocimientos con la comunidad de desarrolladores, y entre los que cuento ya grandes amigos. Sinceramente, cada vez me siento más afortunado de pertenecer a esta pandilla y, como sé que esto es algo que lógicamente en algún momento habrá de acabarse, estoy disfrutando el momento como nadie :)
Ah, y ¡enhorabuena al resto de MVP nombrados el mismo día!
Publicado en Variable Not Found.
domingo, 3 de julio de 2016
Y hoy el algoritmo cuasimágico de generación de números pseudoaleatorios ha determinado que los ganadores son:
Ibai Imaz @ibaiimaz Euskal Herria | ||
L. Alberto Baigorria @uialberto Santa Cruz de la Sierra, Bolivia |
Y así, damos por finalizada la ronda de sorteos por la celebración del décimo aniversario del blog. Al comenzar esta iniciativa quería que fuera algo grande y espero haber conseguido al menos un poco de dicho objetivo: todos os habéis llevado un libro de O'Reilly, muchos de vosotros conseguisteis grandes premios, pero lo más importante es que con todo esto espero haber sido capaz de transmitiros mi agradecimiento por estar siempre ahí, ayudándome a encontrar la variable.
Venga, ¡a por los próximos diez años!
Publicado en Variable not found
miércoles, 29 de junio de 2016
Sorteo finalizado, ya tenemos los ganadores. ¡Muchas gracias a todos por participar!
Personalmente le tengo bastante aprecio a estos chicos desde que conocí su popular Resharper, una herramienta que uso a diario desde hace años, por lo que no dudé en contactar con ellos y, por supuesto, se ofrecieron amablemente a colaborar en la celebración.
Y gracias a ello, hoy sorteamos dos suscripciones a Resharper Ultimate, la suite de productos que incluye:
- Resharper para .NET. Indispensable. Creedme, una vez lo probéis os haréis adictos ;)
- Resharper para C++.
- DotTrace el profiler de rendimiento para .NET
- DotMemory, un profiler de memoria para aplicaciones .NET
- DotCover, runner de pruebas unitarias y control de cobertura de código
- DotPeek, el descompilador para.NET (que por cierto, de todas formas es gratuito y podéis descargar desde su página).
martes, 28 de junio de 2016
La verdad es que hace tan sólo unos años, presentar la nueva versión de ASP.NET en la conferencia Red Hat DevNation habría resultado una auténtica osadía y probablemente habría acabado con tomates volando hacia el escenario. Pero esto es agua pasada, y este simple gesto es una prueba más de que realmente las cosas han cambiado en Microsoft.
Con el lanzamiento de la versión 1.0 de la infraestructura .NET Core y el conjunto de frameworks basados en ella (ASP.NET, MVC, Entity Framework), iniciamos una nueva época en la que aquél sueño de desarrollar o ejecutar fácilmente aplicaciones .NET en cualquier plataforma es ya una realidad, y con todo el soporte y las bendiciones del gigante de Redmond. Escenarios antes impensables, como desarrollar desde Mac para desplegar en Linux, o crear nuestras aplicaciones en Windows y explotarlas desde un contenedor Docker, son ya posibles.
Estamos ante un reboot en toda regla: todos estos frameworks han sido construidos desde cero teniendo en mente conceptos actuales que ni siquiera existían cuando empezaron a gestarse las versiones iniciales de .NET o ASP.NET "clásicos": la nube, alto rendimiento, escalabilidad, APIs, múltiples dispositivos y plataformas, contenedores, microservicios etc. Y creados usando principios y buenas prácticas que tampoco eran los habituales antaño: inyección de dependencias, clases con responsabilidades limitadas, modularidad, componibilidad, abstracciones basadas en interfaces, pruebas unitarias…
lunes, 27 de junio de 2016
Promoción finalizada. Muchas gracias a los más de mil lectores que habéis participado!
Sólo quería recordaros que la promoción finaliza el próximo 30 de junio (no sé si ese día aún se podrá, así que, por si acaso, mejor que asumáis que no).
Por si no os enterasteis en su momento, estamos hablando de que para celebrar el aniversario del blog, O'Reilly regala a todos los lectores un libro en formato electrónico, a elegir entre estos diez títulos de programación, o un vídeo-tutorial sobre Web API:
Mastering Cross-Platform Development with Xamarin By Can Bilgin Más info | C# 6 and .NET Core 1.0: Modern Cross-Platform Development By Mark J. Price Más info | ||
jQuery Essentials By Troy Miles Más info | C# 6.0 in a Nutshell, Sixth Edition By Joseph Albahari & Ben Albahari Más info | ||
CSS: The Missing Manual, Fourth Edition By David Sawyer McFarland Más info | Learning NHibernate 4 By Suhas Chatekar Más info | ||
Learning .NET High-performance Programming By Antonio Esposito Más info | Code-First Development with Entity Framework By Sergey Barskiy Más info | ||
AngularJS: Up and Running By Shyam Seshadri, Brad Green Más info | Concurrency in C# Cookbook By Stephen Cleary Más info | ||
Vídeo (2h): RESTful Services with ASP.NET Web API By Fanie Reynders Más info |
Además, O'Reilly ofrece a los lectores de Variable not found descuentos del 40% en libros en papel, y de 50% en libros electrónicos y video training utilizando el código PCVW al realizar la compra.
¿Y cómo podéis conseguir vuestro regalo?
Recordad que tenéis hasta el próximo 29 de junio de 2016 para obtener vuestro regalo. Sólo tenéis que lo siguiente:- Ayudarme a difundirlo para darle el mayor alcance posible, pues estaréis contribuyendo a que más personas puedan conseguir su regalo. Por tanto, os agradecería mucho:
- Que lo comentéis con vuestros compañeros, amigos y conocidos que aún no se hayan beneficiado de esta iniciativa.
- Que publiquéis en vuestra cuenta de Twitter, Facebook u otras redes sociales un enlace hacia este post. Por ejemplo, estaría bien algo como lo siguiente, aunque podéis demostrar vuestra creatividad y poner otras cosas siempre que vayan en la dirección de los objetivos propuestos :)
Sólo HOY, @oreillymedia te regala un e-book por ser seguidor de @variablnotfound. ¡Ve a por el tuyo! http://bit.ly/295LSAJ
- O, como mínimo, para los más perezosos, que retuiteéis en Twitter o compartáis en vuestras redes sociales los mensajes de otras personas que ya lo hayan publicado.
- Que lo comentéis con vuestros compañeros, amigos y conocidos que aún no se hayan beneficiado de esta iniciativa.
- Si os apetece estar informados de las novedades del blog, seguir la nueva cuenta del blog en Twitter, @variablnotfound. A largo plazo pretendo que sea un canal exclusivo para el blog, separándolo de mi cuenta personal @jmaguilar.
- Finalmente, reclamar vuestro libro o vídeo utilizando este enlace: http://oreil.ly/1W9VAFL. El proceso es muy simple: tendréis que registraros como usuario, elegir el contenido que os interese (uno por persona), y en pocas horas tendréis acceso al mismo.
Publicado en Variable not found
domingo, 26 de junio de 2016
Así que, siguiendo la tradición, nos hemos reunido un servidor y su habitual instancia de System.Random para echar en el bombo las papeletas virtuales y elegir al azar los ganadores del sorteo de licencias de la suite DevCraft Complete de Telerik.
Y hoy la suerte ha señalado a:
Carlos Gómez @devcfgc Bilbao | ||
Luis Felipe Gil @lamaslg Madrid |
Me gustaría agradecer también a Telerik su gran apoyo a la celebración del aniversario del blog, que ha sido espectacular.
Ah, y mientras comenzamos el próximo sorteo, no olvidéis que por ser lectores del blog ¡aún podéis conseguir vuestro libro gratis de O'Reilly! Daos prisa porque el tiempo se acaba y en breve acabará la promoción :)
Pero seguid atentos al blog, porque el próximo será ya el último sorteo… ¿alguien había dicho que le gustaría tener una licencia de Resharper? ;)
Publicado en Variable not found