<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[codemylife's Blog]]></title><description><![CDATA[Freelance developer]]></description><link>https://blog.codemylife.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1659087006701/-qKDzGeMh.png</url><title>codemylife&apos;s Blog</title><link>https://blog.codemylife.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 12:38:21 GMT</lastBuildDate><atom:link href="https://blog.codemylife.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[.Net Development on Apple M1 1 year feedback]]></title><description><![CDATA[Disclaimer
I am not affiliated with Apple in any way. I am not writing this to sell you stuff, this just my personal feedback. Also NOT an apple fanboy.
Background
As you may not know, I am a .Net developer so obviously, windows OSs are my weapons of...]]></description><link>https://blog.codemylife.dev/net-development-on-apple-m1-1-year-feedback</link><guid isPermaLink="true">https://blog.codemylife.dev/net-development-on-apple-m1-1-year-feedback</guid><category><![CDATA[Apple]]></category><category><![CDATA[.NET]]></category><category><![CDATA[M1 Mac]]></category><category><![CDATA[review]]></category><dc:creator><![CDATA[clement devillez]]></dc:creator><pubDate>Thu, 01 Dec 2022 01:31:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/dMUt0X3f59Q/upload/v1669846068014/Sbmd4lMJG.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-disclaimer">Disclaimer</h3>
<p>I am not affiliated with Apple in any way. I am not writing this to sell you stuff, this just my personal feedback. Also NOT an apple fanboy.</p>
<h3 id="heading-background">Background</h3>
<p>As you may not know, I am a .Net developer so obviously, windows OSs are my weapons of choice.<br />About a year ago, I had a Surface book pro, and I had a great overall experience with it but after 3 years of intense usage, it did not deliver the performance i needed, and its few minor flaws had begun to grind my gears.<br />So i was looking for a replacement with those criterias in mind:</p>
<ul>
<li><p>same form factor</p>
</li>
<li><p>faster</p>
</li>
<li><p>cheaper</p>
</li>
<li><p>same or better battery life</p>
</li>
<li><p>not a portable heater</p>
</li>
</ul>
<p>And guess what, there were not many matches on windows os at that time :</p>
<ul>
<li><p>The Dell XPS ? Too expensive, hotter than a toaster and don't get me started on Dell's customer service and components failures. Nope, a big pass for me.</p>
</li>
<li><p>Asus Rog series ? Too heavy and low battery life, no thanks.</p>
</li>
</ul>
<p>I could give you 10 more laptop i checked that but this is not the subject. The macbook pro M1 fitted all my requirements. A year ago M1 silicon ships were still pretty new, and everyone was amazed about them, the benchmarks were quite impressive but i was skeptical:</p>
<ul>
<li><p>Could I work daily with an ARM processor ?</p>
</li>
<li><p>Hell, can I even build C# on a M1 ?</p>
</li>
</ul>
<p>I must also say that I had never worked with mac os, so I would have to learn all the shortcuts and not be confused with windows, there were many dark areas, and a lot adjustment to become as efficient as I am on windows. After weighing pro &amp; cons many times, I made up my mind and decided to give it a try.</p>
<h3 id="heading-setup-amp-transition-the-first-month">Setup &amp; transition (the first month)</h3>
<p>First thing i did when I received it was to setup my dev environment<br />install visual studio, vs code, learn my way around the shell etc...<br />and then the firsts problems appears.</p>
<h3 id="heading-visual-studio-on-mac">Visual Studio on mac</h3>
<p>Ouches, that was a bit of a disappointment, it was nothing close to the windows version.<br />It lacked a lot features and almost zero addons. But that's details I could code/compile/debug... only on .Net core 3.1 so wait... what do I do for legacy projects in .Net 4.7.2 ? Mono is not a options (for me). Thankfully I didn't go full retard and throw all my pcs aways...</p>
<p>So not a big fan of vs for mac, so I tried Rider and weirdly I found Rider better on mac than on windows, but this won't make me change to go full rider and win and mac.</p>
<h3 id="heading-visual-studio-code-on-mac">Visual Studio Code on mac</h3>
<p>Don't you love vs code ? I do It's a modern notepad++ and praise be Electron.js !<br />It feel,smell and work the same as the win version. Does Vs code on mac saved the day ? Kind of off but...  </p>
<h3 id="heading-then-net-6-came-out">Then .Net 6 came out</h3>
<p>Oh boy what a time to be alive as .Net developer. The mighty .Net 6 is finally here<br />with full support of arm silicon, speed-of-light performances and gold-shitting new features and... <s>BUGS</s> features like :</p>
<p><a target="_blank" href="https://rider-support.jetbrains.com/hc/en-us/articles/4413459013010--NET-6-and-M1-problems-when-other-SDKs-are-present-in-the-system">you can't use .net core 3.1 and .Net 6 on the same machine because why the fuck not ?</a><br />and a tons of issues with az functions, azurite, az cli etc (but that's even on windows)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669853273397/uQzP8ao5j.gif" alt class="image--center mx-auto" /></p>
<h3 id="heading-the-elephant-in-the-room">The elephant in the room</h3>
<p>I haven't talk about SGBD yet, wanna install a local mssql server instance on mac ? The only way is... with my beloved Docker. The thing is, databases and docker don't get along very well, why ?</p>
<p>A docker container is stateless so your data will be gone the next time you restart your container.<br />The easiest way to solve this is to create a volume where you will store the database file, and the container will only run the database engine...  </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/microsoft/mssql-docker/issues/734">https://github.com/microsoft/mssql-docker/issues/734</a></div>
<p> </p>
<h3 id="heading-moving-forward">Moving forward</h3>
<p>Moving forward to now, a lot of those issues have been resolved.<br />Many improvements were made.<br />.Net 6 works like a charm and I can even build and debug azure durable function in vs code with all my linters working fine.</p>
<p>After a year of daily use, I am still amazed by this machine :</p>
<ul>
<li><p>I have never run out of battery</p>
</li>
<li><p>it is never hot, slightly warm at heavy load</p>
</li>
<li><p>it's a beast of a CPU</p>
</li>
<li><p>not a single freeze, drops of performance after a year.</p>
</li>
<li><p>even the GPU is exploitable</p>
</li>
<li><p>the keyboard is very good (but the surface book had a better feel)</p>
</li>
<li><p>I haven’t talk about frontend development but it feel like mac os is<br />made for it</p>
</li>
<li><p>zsh</p>
</li>
</ul>
<p>Things I miss / don't like :</p>
<ul>
<li><p>The proprietary way of apple</p>
</li>
<li><p>the black box feels for a user like me who like to see under the hood</p>
</li>
<li><p>the upgrades that reset advanced configurations and security settings</p>
</li>
<li><p>windows management</p>
</li>
<li><p>the touchbar is not very useful</p>
</li>
<li><p>the lack of a touch screen (very useful for administrative task, visual management, diagram,etc...)</p>
</li>
<li><p>wsl</p>
</li>
</ul>
<h3 id="heading-conclusion">Conclusion</h3>
<p>I guess that now you can understand that this was not a smooth sailing start.<br />I had many issues, it is always the downside for early adopters. But it is ok because in a way I had to learn a lot of new stuff, and I like to get my hands dirty and see how things work.<br />To conclude I love working with the mac m1 but it won't be my main computer ever.</p>
]]></content:encoded></item><item><title><![CDATA[Inscription sur Allovoisin]]></title><description><![CDATA[Je me suis inscrit récemment sur Allovoisin.com afin de proposer mon aide autour de moi car cela me correspond parfaitement :

j'adore aider ceux qui non pas ma facilité avec l'informatique
partager mes connaissances 
réparer et monter des ordinateur...]]></description><link>https://blog.codemylife.dev/inscription-sur-allovoisin</link><guid isPermaLink="true">https://blog.codemylife.dev/inscription-sur-allovoisin</guid><category><![CDATA[Freelancing]]></category><dc:creator><![CDATA[clement devillez]]></dc:creator><pubDate>Sun, 27 Nov 2022 14:56:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/_UIVmIBB3JU/upload/v1669549147255/-D0yFOtY0.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Je me suis inscrit récemment sur Allovoisin.com afin de proposer mon aide autour de moi car cela me correspond parfaitement :</p>
<ul>
<li>j'adore aider ceux qui non pas ma facilité avec l'informatique</li>
<li>partager mes connaissances </li>
<li>réparer et monter des ordinateurs </li>
</ul>
<p>Pour le moment, j'ai fais le choix d'aider gratuitement dans la plus part des cas, et de ne facturer que les taches qui me demanderai un investissement de mon coté.</p>
<p>Je propose mon aide dans les domaines suivants :</p>
<ul>
<li><p>Dépannage/Assistance  informatique, Hifi,video,photo</p>
</li>
<li><p>Création de site internet/app mobile, référence, webmarketing</p>
</li>
<li><p>Graphisme, montage/retouche photo &amp; vidéo</p>
</li>
<li><p>Cours d'informatique bureautique, développement, système &amp; réseau</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Je me lance en freelance]]></title><description><![CDATA[Après de nombreuses années de postes en CDI, j'ai enfin pris la décision de lancer mon autoentreprise afin de proposer mon expertise dans le domaine du développement.
La question de passer ou non en freelance, je me la suis posée de nombreuse fois au...]]></description><link>https://blog.codemylife.dev/je-me-lance-en-freelance</link><guid isPermaLink="true">https://blog.codemylife.dev/je-me-lance-en-freelance</guid><dc:creator><![CDATA[clement devillez]]></dc:creator><pubDate>Fri, 29 Jul 2022 10:07:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1659089358203/SyyrdT-EH.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Après de nombreuses années de postes en CDI, j'ai enfin pris la décision de lancer mon autoentreprise afin de proposer mon expertise dans le domaine du développement.</p>
<p>La question de passer ou non en freelance, je me la suis posée de nombreuse fois au cours de mes 10 ans de carrière.</p>
<p>Ce qui m'a fait sauter le pas, c'est d'avoir fait la rétrospective de ma carrière.
J'ai  pu constater que  l’expérience dans différents secteurs et l'expertise technique acquise, serait une vraie plus-value pour mener à bien les projets de mes futurs clients.</p>
]]></content:encoded></item><item><title><![CDATA[Publier une image Docker sur Docker Hub via Azure DevOps]]></title><description><![CDATA[avril 2, 2019
Coucou les pipous, au programme un tuto tout naze sur l’excellent Azure DevOps et l’ingénieux Docker !
Pré-requis

Docker CE
un compte Docker hub
Visual Studio 2017 avec l’extension docker
un compte Azure DevOps (VSTS)

Activer les fin ...]]></description><link>https://blog.codemylife.dev/publier-une-image-docker-sur-docker-hub-via-azure-devops-ad4d80f52a7c</link><guid isPermaLink="true">https://blog.codemylife.dev/publier-une-image-docker-sur-docker-hub-via-azure-devops-ad4d80f52a7c</guid><category><![CDATA[Docker]]></category><category><![CDATA[Devops]]></category><category><![CDATA[C#]]></category><category><![CDATA[.NET]]></category><category><![CDATA[asp.net core]]></category><dc:creator><![CDATA[clement devillez]]></dc:creator><pubDate>Tue, 02 Apr 2019 17:06:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/HjBOmBPbi9k/upload/v1664539784884/ji1ndR-x5.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>avril 2, 2019</p>
<p>Coucou les pipous, au programme un tuto tout naze sur l’excellent Azure DevOps et l’ingénieux Docker !</p>
<h3 id="heading-pre-requis">Pré-requis</h3>
<blockquote>
<p>Docker CE</p>
<p>un compte Docker hub</p>
<p>Visual Studio 2017 avec l’extension docker</p>
<p>un compte Azure DevOps (VSTS)</p>
</blockquote>
<h3 id="heading-activer-les-fin-de-lignes-unix-dans-visual-studio">Activer les fin de lignes UNIX dans Visual Studio</h3>
<p>Les fichiers Dockerfile &amp; docker-compose utilisent <strong>les fins de lignes UNIX</strong> voici comment les activer (une autre solution consiste à éditer et créer les fichiers dans un autre éditeur tel que Notepad++)</p>
<blockquote>
<p>Outils &gt; Personnaliser</p>
<p>Onglet Commande</p>
<p>Dans “Barre de menu” sélectionnez “fichier”</p>
<p>Cliquez “Ajouter une commande”</p>
<p>Categorie “fichier”</p>
<p>Sélectionner “Option d’enregistrement avancées”</p>
</blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539622599/z3gk74k1e.png" alt /></p>
<h3 id="heading-au-programme">Au programme</h3>
<ol>
<li>Développement d’une application Web basique sur Visual Studio</li>
<li>Préparation du Dockerfile</li>
<li>Création du pipeline de Build sur Azure DevOps</li>
</ol>
<h3 id="heading-creation-du-site-asp-net-core">Création du site ASP. NET CORE</h3>
<p>Dans visual Studio créer un nouveau projet Asp.Net core type Web api ou MVC.<br /> Cocher la case support docker et sélectionner container linux</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539623972/Y22qzu-gr.png" alt /></p>
<p>Le projet généré, est normalement fonctionnel,vous constaterez la présence d’un fichier Dockerfile :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539625701/gYtNwbrYN.png" alt /></p>
<p>Vérifier que tout fonctionne en lançant le debug.<br /> Du coté Azure DevOps, ce n’est pas aussi simple, tel quel,l’agent de build n’arrivera pas a compiler l’image et vous obtiendrez l’erreur suivante :</p>
<pre><code>COPY failed: stat ***<span class="hljs-regexp">/Docker/</span>publish: no such file or directory /usr/bin/docker failed <span class="hljs-keyword">with</span> <span class="hljs-keyword">return</span> code: <span class="hljs-number">1</span>
</code></pre><p>Pour résoudre ce problème, il faut un dockerfile un peu différent de celui généré.</p>
<p>Pour ce faire, créez un nouveau dockerfile, appelez le par exemple Dockerfile.CI, il devrait apparaître comme un sous élément de votre docker file existant.Il est basé sur la solution proposé dans la <a target="_blank" href="https://docs.docker.com/engine/examples/dotnetcore/#create-a-dockerfile-for-an-aspnet-core-application">Documentation Docker</a></p>
<pre><code>FROM mcr.microsoft.com/dotnet/core/sdk:<span class="hljs-number">2.1</span> AS build-env WORKDIR /app # Copy csproj and restore <span class="hljs-keyword">as</span> distinct layers COPY *.csproj ./ RUN dotnet restore # Copy everything <span class="hljs-keyword">else</span> and build COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image FROM mcr.microsoft.com/dotnet/core/aspnet:<span class="hljs-number">2.1</span> WORKDIR /app EXPOSE <span class="hljs-number">80</span> COPY --<span class="hljs-keyword">from</span>=build-env /app/out . ENTRYPOINT [<span class="hljs-string">"dotnet"</span>, <span class="hljs-string">"tutodemo.dll"</span>]
</code></pre><blockquote>
<p><em>Pensez à adapter le fichier à votre solution, en particulier l’ ENTRYPOINT ainsi que les ports exposés,etc..</em></p>
</blockquote>
<p>La différence avec l’existant, c’est que la compilation est réalisé dans un conteneur, le résultat est ensuite copié dans l’image docker finale :</p>
<ul>
<li>Le runtime .net core</li>
<li>le code de l’application</li>
</ul>
<h3 id="heading-preparation-du-pipeline-de-build-sur-azure-devops">Préparation du pipeline de build sur Azure DevOps</h3>
<p>Premièrement ajoutez votre solution a un repo vsts de votre choix, committez.<br /> Dans la section build créez une nouvelle définition de build basée sur le template docker container, par défaut la build sera effectué sur l’agent Hosted Ubuntu</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539626950/z2irCaUg-.png" alt /></p>
<h3 id="heading-tache-build">Tache Build</h3>
<h4 id="heading-connection-a-docker-hub">Connection à Docker Hub</h4>
<p>Dans container registry type selectionnez container registry,<br /> ajouter une connection à docker hub en cliquant sur new, renseigner vos identifiants.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539628396/qeaxuZgN7.png" alt /></p>
<h4 id="heading-build-command">Build Command</h4>
<p>Modifier le champs dockerfile pour qu’il pointe vers notre fichier Dockerfile.CI de la sorte : <code>**/Dockerfile.CI</code><br /> C'est tout pour la build !</p>
<h3 id="heading-tache-tag-optionnel">Tâche Tag (optionnel)</h3>
<p>Cette tâche est optionnel si vous poussez votre image avec un tag existant ou le tag latest Ajoutez une tache entre celle de Build &amp; Push.</p>
<p>Sur cette nouvelle tâche sélectionnez la connexion au hub précédemment créée, puis dans command sélectionnez tag et c’est tout.</p>
<h3 id="heading-tache-push">Tâche Push</h3>
<p>Renseignez la connection au Docker Hub, vous pouvez en suite lancer la build via save &amp; queue.</p>
<p>Si tout se déroule comme prévu, coté vsts vous devriez avoir du vert partout ;) :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539629690/I0SJgFsjg.png" alt /></p>
<p>Et coté Docker Hub, un nouveau repo et contenant l’image tagué (pour moi avec le numéro de build) :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1664539631055/E3XxrxdAC.png" alt /></p>
<p>La suite c’est du classique il suffit de pull &amp; run sur n’importe quel environnement exécutant docker ! FABULOUS !!!</p>
<p>A+ pour d’autres tutos de merde !</p>
<p><em>Originally published at</em> <a target="_blank" href="https://blogg.codemylife.dev/dockerhubdevops/"><em>blogg.codemylife.dev</em></a> <em>on April 2, 2019.</em></p>
]]></content:encoded></item></channel></rss>