After nearly 10 years it was time to migrate the website of the .Net User Group Bern. The last part was all about consolidating the data into one single JSON file. The next step is now to move that data into the new structure.
The website of the .Net User Group Bern worked without much change for nearly 10 years. A refresh was necessary and that gave us two options: Just use a shiny new design or use it as an opportunity to learn new skills and interesting technology. We went with the later one and one of the learning opportunities I picked was the migration of all the data. Our small data set is great to try out different approaches and I hope my post can help you with much bigger migrations as well.
One main source of problems working with encryption is the creation of your private key and your certificate. You must create the key pair correctly, have it imported at the right place and if you just miss one important option, you can go on an endless hunt for the problem – one exception at the time.
Many of my tasks around data quality control involve lists and the question "Which Id’s are in list A but not in list B?". I tried to use Excel for this task but failed more often than I can count. As the next batch of checks rolled in, I had enough and tried a new approach using LINQ and the little tool LINQPad. This time it only took 20 lines of code and I could create a solution similar to that what I would write in SQL.
A few weeks ago, I had a rather strange problem. Between two meetings I thought I could quickly write a little code example. While it compiled without error, I got this exception when I tried to run in:
Unhandled Exception: System.TypeLoadException: Could not load type 'MetadataExtractor.ImageMetadataReader' from assembly 'MetaDataExtractor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. at MetaDataExtractor.Program.Main(String[] args)
Visual Studio offers a simple way to change the project that gets started when you click on Start or hit F5. All you need to do is to select the project in the Solution Explorer, right-click on the name and select the option "Set as StartUp Project":
This works well when you want to start just one project in a solution. Starting multiple projects at the same time needs a different approach and this post shows you two options you can use.
For years I took the long way around to get the full path of a file in Windows: Copy the path from the address bar of the file explorer, paste it into a temporary file, go back to the file explorer, hit F2, select the whole name with CTRL-A and paste that into the file as well. It works, but it is a lot of work.
So many things we developers create are only possible because someone released their work as open source. Their effort allows us to focus on our features – not only in our side projects, but also at our (paid) work. We can use their open source projects for free and create great things, often without the smallest sign of gratitude.
For a long time your workflow customization inside Azure DevOps was limited to choosing one of the pre-defined process templates. All other forms of customization you could do with the on-premises installation of TFS where not possible in Azure DevOps (or Visual Studio Team Services for those who are more familiar with the old name).
This limitation is now history and you can modify your workflow as much as you like. However, without a backup solution for your work items this task can end in a terrible mess. Before you change anything, at least connect with Visual Studio to your work items and export everything to an Excel sheet.
Last week I attended the great workshop "SOA Done Right" by Daniel Marbach and Adam Ralph (organised by the .Net User Group Bern). They did an incredible job to explain SOA, services and how designing for loosely coupled systems differ from an entity-first approach. I learned a lot in the workshop and still need a few days more time to get a deeper understanding of those concepts.