¿Necesitas un programador?

Mi nombre es Albert Capdevila y
soy programador .Net freelance.


Programador freelance Barcelona .net
"La simplicidad es pre-requisito para la fiabilidad"

Edsger W. Dijkstra

Subscríbete a la newsletter

Formulario de subscripción

¿Cómo puedo ayudarte?


  • Programo aplicaciones orientadas a la gestión, pero también realizo migraciones de datos, integraciones con aplicaciones externas, conectores, servicios, bases de datos, etc.
  • Participo y conozco el ciclo de vida completo del software.
  • Durante la fase de creación tomo requerimientos, propongo soluciones y presento estimaciones al cliente, explicando pros y contras y permitiendo escoger la mejor opción.
  • Durante las primeras fases de desarrollo diseño la arquitectura, la infraestructura, el funcional y la base de datos.
  • Soy capaz de entregar soluciones económicas que se adaptan a las necesidades del cliente.
  • Me encanta resolver problemas buscando la solución más simple. Conozco y aplico principios de programación y patrones de diseño y los adapto según las necesidades.
  • Puedo definir los mecanismos de entrega del software y configurar y adaptar los sistemas para su funcionamiento.
  • Me gusta trabajar en equipo y transmitir todo el conocimiento adquirido. Así mismo estoy ávido de nuevos conocimientos y me siento en un continuo proceso de aprendizaje.
  • Trabajo en remoto desde El Masnou (BCN), pero puedo desplazarme puntualmente si el proyecto lo requiere.

Certificaciones

Lenguajes, tecnologías, frameworks y bases de datos en los que tengo experiencia

Lenguajes:
C#, VB.net, Tranasct-SQL, javascript, CSS, HTML
Frameworks:
.net Framework, .net Core, MVC, RazorPages, WebForms, WinForms, WPF, Xamarin, Entity Framework, WCF, jQuery, Bootstrap
Bases de datos:
SQL Server, Access
IDE:
Visual Studio, Visual Studio Code
Nube:
Azure (AppServices, SQLAzure, Bus), Máquinas virtuales, Hosting compartido
Código:
patrones de diseño, principios de programación, código limpio (SOLID), programación orientada al dominio DDD
Certificaciones:
MCPS: Microsoft Certified Professional, MCSA: Web Applications, MCSD: App Builder, MS: Programming in HTML5 with JavaScript and CSS3, MCSD: Web Applications, Microsoft .NET Fundamentals (C#)

Últimas entradas del BLOG


Controla la calidad de tu código con NDepend

NDepend

Como freelance, la calidad del código que entrego es algo primordial para mí. El aprendizaje continuo y la intuición son los métodos que utilizaba hasta ahora para lograrla, pero gracias a NDepend cuento con una herramienta que aporta datos objetivos sobre la calidad de mi código.

Y lo que se puede medir, se puede mejorar.


leer más

Código limpio: el switch es código sospechoso

sospecha cuando utilices un switch


Cuando un cliente me explica una funcionalidad suele utilizar frases del tipo 'si tenemos esta situación entonces haz X, pero si es esta otra haz Y'. Uno de los reflejos inmediatos es intentar plasmar esta misma lógica en el código utilizando cláusulas switch.

En este post voy a explicar por qué debes sospechar de los switch de tu código y que puedes hacer para minimizarlos.


leer más

Tutorial para instalar Let's Encrypt en Azure

Guardi de seguridad


Tener un certificado ssl en tu web es a día de hoy imprescindible. Hasta ahora los certificados que había instalado a mis clientes y/o en mis proyectos los había comprado, pero desde que apareció Let's Encrypt es posible conseguir certificados ssl gratuitos.

Aquí es dejo un tutorial de los 6 pasos que he seguido para instalar el certificado Let's Encrypt en este blog, que está hospedado en Azure.


leer más


Lecturas recomendadas sobre c# y .net · noviembre 2019


Lecturas recomendadas sobre c# y .net de noviembre


Aquí vienen las interesantísimas lecturas sobre c# y .net que he recopilado durante este noviembre. ¡A leer!

1. Small methods are easy to troubleshoot

Muchas veces me ha tocado resolver un bug cuya información en el log era NullReferenceException: Object reference not set to an instance of an object. No son bugs triviales y generalmente cuesta resolverlos. En el post Small methods are easy to troubleshoot, Mark Seemann explica cómo escribir código que sea capaz de resolver estos bugs fácilmente. Es un pasito más que te acerca a ser un programador mejor.

2. DDD and bulk operations

Domain Driven Design es bueno cuando se trata de realizar pequeñas actualizaciones de datos (un update por vez). Pero no funciona bien cuando se trata de operaciones masivas de datos. Vladimir Khorikov explica en su artículo DDD and bulk operations, cómo utilizar la combinación de los patrones Specificacion y Command para realizar este tipo de operaciones, cumpliendo a la vez dos requisitos importantes: el principo de programación Don't Repeat Yourself (DRY) y conseguir un buen rendimiento. Un post excelente.

3. Novedades en la evaluación en cliente de EF Core 3.0

Si sabes lo que significa la evaluación en cliente de Entity Framework Core es que has tenido problemas con ella como yo. Por suerte con EF Core 3.0 la cosa mejora enormente. José M. Aguilar explica en su post las novedades que trae. Te recomiendo que lo leas porque te va ayudar a manejar correctamente este Framework. El punto "(...) la expresión en cliente sólo podrá ser utilizada si se trata de la proyección final" es muy práctica y conviene saber cómo aplicarla.

4. Paging in ASP.NET Core Web API

Me ha sorprendido este post de Vladimir Pecanac sobre cómo devolver una lista paginada desde un Web API porque la información sobre el Total de páginas, la página actual, si tiene siguiente pagina etc la mete en un Header (Cabecera) de la respuesta. Al parecer lo hace así porque devolver Ok(listaPaginada) no te proporciona toda la información de la lista paginada. 

5. How to write to a file with C# in 2019 - StackOverflow doesn't get it right

Me he sentido identificado con este post. Muchas veces googleo cuestiones sencillas porque no recuerdo la sintaxis exacta. Por ejemplo cómo escribir en un fichero utilizando c#. Te puede pasar que las respuestas que te encuentres sean del 2010. ¿Estás seguro que en el 2019, con lo rápido que evoluciona la programación, se hace de la misma manera? Thomas Ardal hace un resumen de cómo ha evolucionado la manera de escribir en un fichero con c#. Y ojo que te puede pasar con otro tipo de cuestiones.

6. Exploring lighter alternatives to Electron for hosting a Blazor desktop app

Cuando me plantean desarrollar una aplicación siento una enorme responsabilidad, incluso cierto estrés: hay tantas maneras de realizarla que explicar pros y contras de cada una de ellas, y que además el cliente te entienda, es misión imposible. 

Si hubiera un framework multiplataforma, con stack .net, moderno y que incluyera la mayor parte de las ventajas de las diferentes maneras de crear una aplicación sentiría un gran alivio. Blazor apunta a ello, pero todavía está verde. Artículos como este de Steve Sanderson me ayudan a comprender cómo está la situación. Todo apunta a que este sueño se puede acabar cumpliendo.

7. Options Pattern in .NET Core

Si has trabajado con .Net core te habrás topado con la clase Starup. En ella se configuaran numerosas clases con lo que se llama Options Patern (patrón opciones). ¿No te gustaría aplicar esta misma técnica para configurar tus clases? En Options Pattern in .NET Core Changhui Xu describe como se hace.

8. Use Quartz.Net for background and recurring jobs within an ASP.NET Core 3.0 application

Tienes una web y quieres empezar a realizar trabajos en background o que se ejecuten cada cierto tiempo. Partiendo de la base de que no quieres crear más infraestructura existen dos opciones conocidas: Hangfire y Quartz.Net. La primera es moderna y sencilla pero falla cuando quieres implementar funcionalidades complejas. En este post, Valentin Fritz explica como usar Quartz.Net para conseguir este tipo de funcionalidades. Es importante tener claro que los recursos para ejecutar el trabajo en background se obtienen de la misma máquina o contenedor que está ejecutando la aplicación.

9. Create a Windows Service App in .NET Core 3.0

Este post de Changhui Xu es otro ejemplo de cómo poder realizar tareas en background. En este caso se trata de un Servicio de Windows. Es importante remarcar que aunque sea .Net Core, solo vas a poder aplicarlo en máquinas Windows, parece obvio pero genera confusión. 

10. Managing output in the .NET SDK projects

El contenido del directorio de salida de los proyectos .Net se puede controlar desde el archivo del proyecto .csproj. Este post de Cezary Piatek es un resumen de las diferentes opciones de configuración para personalizar el contenido en el directorio de salida de los proyectos .Net. 

Extra: Disabled buttons suck

Hampus Sethfors

Mostrar botones como deshabilitados hasta que se complete un formulario puede parecer una buena idea. No lo es. Por lo general, crean una pésima experiencia de usuario y excluyen a muchas personas con discapacidades. He aquí por qué los botones deshabilitados son una mierda y qué hacer en su lugar.

Quizá algun día empiece a enviar una newsletter, si te gustaría recibirla subscríbete aquí

Archivo