⏱ Estimated reading time: 10 minutes

Table of Contents

Developing comfortably on Windows

By Sébastien Oddo, Technical manager and Frontend Lead @ Ippon

After all this time spent developing and refining developer tools, one might expect developer experience to be a solved problem. That is not always the case: some tasks require the right tool, and matters of personal preference will always remain. This is a collection of tools and services that raise the bar for developers working in a Windows environment.

Package managers

  • Winget, which is officially supported by Microsoft;
  • Scoop, which can install packages without administrator privileges!

Terminals

  • By default, Windows 10 and 11 ship with Windows PowerShell 5 (source). Unless you are using scripts that rely on .NET calls, we recommend upgrading to PowerShell 7. GitHub repository;
  • Commander is a bit dated but still a good option for simple terminals;
  • Windows Terminal is the best you can find today: it supports many shells, supports theming, shortcuts and customizations. Installation instructions.

PowerShell 7 simplifies script development and adds more aliases for common Linux commands. Note that these aliases might not implement the same arguments as their Linux counterparts. Creating PowerShell aliases is not a simple task. Follow this documentation if you need to work with them. Finally, you can customize your prompt using Oh My Posh and some plug-ins and integrations.

Development Environment

Visual Studio Code is the undisputed leader when it comes to free and powerful development environments. While it is not as full-fledged as the JetBrains suite, it will get most developers 90% of the way. This tool is extremely configurable, here are some recommendations:

  • Developers spend a lot of time reading code. Using a programming font can make code easier to understand by highlighting common programming operators and using visually distinct representations for confusions like O/0 and 1/l;
  • If you plan to use one of these fonts, enable ligatures by setting "editor.fontLigatures" to true;
  • You can use websites like this one to choose your favorite programming font;
  • Here is a list of extensions that might improve your experience: GitLens, language linters, framework-related extensions, LiveShare;
  • Back up your configuration. In fact, you can commit it so that new developers can get started with a decent development experience.

As for Git, it is possible to create Git aliases and commit them using the .gitconfig file. You can also customize the commit editor and the merge tool.

Web

Default browser selection is a pain point in Windows, especially when internal websites are developed specifically with a browser that is different from your habits. To solve this problem, you can use BrowserPicker to pick the right browser for each website.

Power users

The Windows interface and shortcuts are complex and cannot fit features for every corner of its user base. To avoid bloating the OS, Microsoft and the community have created apps for power users:

Miscellaneous

  • In Windows 11, the default Notepad app comes with tabs and remembers its contents when accidentally closed;
  • Windows 11 makes window snapping easier with Snap. When you use customized layouts, its windows are grouped and appear as a group in the Alt-Tab menu. Learn the keyboard shortcuts for maximum efficiency;
  • The Outlook app is better than the native Calendar app;
  • Dev Home is an emerging initiative from Microsoft to provide more integrations and features for developers. However, it may be too tied to GitHub. Keep an eye on its development;
  • Windows Subsystem for Linux is excellent for scripting for overkill for everyday tasks. If you use it, be aware of its limitations regarding how files are shared with your Windows installation and how packages are installed.

Questions and Answers

Why would one give up their perfectly tuned IDE for Visual Studio Code?

Again, it is up to the developer. IDEs —Integrated Development Environments— tend to be resource intensive and non-free (proprietary license, closed source and cost money).

Real-time vehicle tracking

By Thomas Gaignard, Student @ ENSEIRB-MATMECA
By Victor Lohezic, Student @ ENSEIRB-MATMECA
By Rebecca Pinoteau, Student @ ENSEIRB-MATMECA
By Florian Bour, Student @ ENSEIRB-MATMECA

This project was done with support from Avanade and is a good first introduction to Cloud and emerging technologies. It is a web-based user interface that implements a geographic map that can be used to manage a fleet of vehicles, plan their routes and autocomplete places of interest and addresses.

Here is its Cloud architecture:

[Vehicle]
 |
 •-> [Azure Event Grid]     <--     [API]     <--     [Frontend] <--•
       |                                                            |
       •--> [Azure Service Bus] --> [Azure Function App] --> [Azure SignalR]

Service documentations:

The frontend of the app is served by NextJS. It ships the Azure Maps SDK which it uses for routing, mapping and searching for places of interest and addresses. The SDK implements fuzzy search, which comes in handy for common misspellings.

Azure Maps is a toolkit that provides many utilities. For example, Maps Routes can create routes from an origin and a destination, calculate time and distance and return a sequence of points that can be drawn on a map. This service also supports geographic restrictions and traffic conditions.

Vehicle data is retrieved via MQTT, which is natively understood by Azure Event Grid. If it weren’t for SignalR, the frontend would repeatedly request the API for changes, often unnecessarily. SignalR negotiates between the client and the server which protocol is best for bidirectional communication between WebSockets, Server-Sent Events (SSE) and Long Polling. In fact, SignalR can operate in server mode (dedicated) as well as serverless to scale down when there is no load. Here, it would perform two functions: negotiate the connection type and retrieve locations.

How to save money and CO2 in Azure?

By Eddy Montus, Head of Infra and Cloud @ HelloAsso

While this presentation does not specifically address the CO2 emissions associated with Cloud usage, Cloud costs are a decent proxy as lower energy costs are typically passed on to customers. If your goal is to reduce your carbon footprint, then you should use Azure Carbon Optimization and regularly track the results alongside your business metrics to include business growth in your measurements.

The story goes back to 2015. All services were hosted on OVHCloud when suddenly, a server crash caused a major outage. This was the least of the worries as the crash was caused by an unrecoverable hard drive corruption which meant that the data was gone! Fortunately, in an incredible twist of fate, the database was in the process of being migrated at the same time and could be recovered. The production release of this database came sooner than expected, but it mitigated the problem well enough.

The Cloud opens many, many doors, especially when you have a $500k credit and a three-year Microsoft for Startups program. When such programs end, your Cloud bill reaches in the hundreds of thousands per year, which you will now have to bear on your own. This is usually the time when companies start to focus on Cloud costs. Here, quick wins could divide yearly costs by three, but why stop there?

2020, and a new FinOps program was launched in collaboration with Azure. A partner conducted an audit that revealed the following improvements:

  • Minimalism: Simplify app architectures, use managed services where appropriate;
  • Efficiency: Move to Azure Storage Account v2, use the latest VM versions, use serverless where appropriate;
  • Coherence: Align needs and expectations. Should the service be deployed identically in multiple geographies?
  • Governance: Set up policies to limit costly edge cases, use exceptions to approve them on a case-by-case basis;
  • Sustainability: Use Azure Advisor and Azure Workbooks to track improvement opportunities;
  • Commitment: Reserve a capacity baseline, use Savings Plan for autoscaled services and services that do not support reservations.

Questions and Answers

What is the difference between reservations and Savings Plan?

Reservations are capacity commitments: the customer commits to a specific VM family for the next one to three years. If the reservation goes unused, the customer still pays for it in full. If the customer uses more than the reservation terms, usage above is charged on Savings Plan or on demand if no Savings Plan applies.

Savings Plans are financial commitments: the customer commits to a certain level of spending on computing services. If the defined threshold isn’t reached, the user still gets charged the difference. Usage above the threshold is charged at the On Demand price. This option does not limit the VM family and applies to more than just Azure Virtual Machines, however the discounts are less generous given the nature of the commitment.

What was your reservation strategy?

Reservations must not constrain architectural decisions, and Kubernetes is difficult to estimate. Reservations are based on a specific VM family and last for one or three years. Savings Plans are being explored as they are a relatively new option on Azure.