I have been a developer for the past 7 years. I've gone through a lot of code reviews during that time. I have devoted my time to learn good software engineering practices through C#. Last year, my passion for performance engineering took off. One thing that has always been important for me was to be … Continue reading Introducing DotNet.SystemCollections.Analyzers
Category: C# & F#
Resiliency against change & avoiding regression The real cost of software isn't the initial development, but the maintenance over time. In time, the requirements will change, there will be new feature requests and the business might change direction. With all those undeniable changes coming to the code, there's a real need to make the systems … Continue reading Testing your software system with resilient randomized tests
Hey everyone, First, for those who don't know the F# Software foundation, here's a link 🙂 In a few words, their mission is the following: The F# Software Foundation is a community operated, not-for-profit organization dedicated to our mission. As an organization, we actively encourage a diverse community of F# developers to join us in … Continue reading Running for the F# Software Foundation board
Hi, It's been a few weeks and I apologize. The recent events are tough on everyone and it's getting a bit harder to find the focus to keep going on personal projects and my blog. So, something newsworthy happened to me in the past few weeks. Initially, I was working on with a design team … Continue reading Learning about leading projects and building web projects with F#
Hi everyone, C# 8.0 has brought up a lot of great features and among them there is the 'Nullable Reference Type' feature. Probably the most impactful feature of C# 8.0 is Nullable Reference Types (NRTs). It lets you make the flow of nulls explicit in your code, and warns you when you don’t act according … Continue reading Handling Missing Info in .NET
Hey everyone! I don’t know who has already seen this but I want to make sure it’s visible everywhere! Zaid has been putting so much energy building awesome tools and documentation around Fable! Now, he has released publicly a book on developing web applications through F# and Elmish! Here’s a snippet of the readme: The … Continue reading The Elmish Book by Zaid Ajaj
Hi to all, You're here today to hear about this new application that we'll be building during the next few months. F# Background I've been introduced to F# by my old mentor during an internship back in 2016 and had the chance since then to work on multiple projects with it on projects such as … Continue reading Building a production-ready full-stack web application with SAFE – 0
For the uninitiated, F# is a general-purpose programming language found in .NET. Contrary to C# who promotes objects as its first-class citizen (can receive and output objects in methods), F# promotes functions at its first citizens. This means that the preferred way of doing this will be through functional programming, but it doesn’t meet that … Continue reading Baby steps with F# and functional programming
Hi, Last year, I started to contribute on Exercism. For those who do not know what is Exercism, in a few words it's Exercism aims to provide opportunity for people of all backgrounds by helping them develop their programming skills through practice and mentorship. We provide thousands of exercises spread across over 50 language tracks, … Continue reading Mentoring C# and F# developers on Exercism
Hi, Last fall, I've entered the 7th round of mentorship with F# community. It's a great program and it's also free. I have the chance to meet a great mentor that taught me a lot about F#. For 2020, I've also entered the mentorship program of the Winter period as both a mentee and … Continue reading 8th round of F# mentorship program
Performance engineering has been something I've been pushing at my job for the past few months. We've had performance issues that needed to be solved and it felt like even if we fixed them, we could still get hit by a regression. So that's when I started to research online to find a solution to … Continue reading Early steps in performance engineering
Hi, Last year, I saw a few functional programming languages had repositories on which you could find companies that use those languages. Because that looked like a fun initiative and I couldn't find an equivalent for F#, I created one and shared it on a few social networks like Reddit. I'm writing about it now … Continue reading The F# company list
Hi readers, This year has been a big one in the field of software engineering for me. My close friends know that F# has always been a technology that I loved and I promised myself I would start doing more F# development than I have ever done before. FSSF I've joined the F# FSSF community … Continue reading Experiments and Adventures in 2019 with F#
Why does functional programming matter? Functional programming is the new hotness right now, but regardless of the hype, most modern programming languages are introducing FP-friendly features that make a big difference to software quality: Delegates LINQ Read-only properties Pattern matching Readonly value types Tuples As we’re adding features and applying good software engineering practices, we’re … Continue reading Promoting F# in a C#-based team
Hi, Quick word on LINQ So today's post is going to be focused around LINQ which is an acronym for Language INtegrated Query. For those who are unaware and would be interested in learning more about LINQ, I invite you to go on this page. In a few words, LINQ is the name for a … Continue reading Tech Questions #4: Should I use ToArray/ToList in LINQ queries?
Hi, Today, I'm going to talk about an open source gem in .NET for developing WPF applications for people who are interested in reactive and functional programming. To understand the work behind ReactiveUI, one mst understand Rx, or rather Reactive Extensions for .NET. The goal of the syntax of ReactiveUI for read-write properties is to notify … Continue reading Hidden .NET Gems – ReactiveUI
Hi, I've learned about the magic of the method Combine from Path a few months ago. Usually, even in production code, we tend to use string concatenation through either directly using '+' or StringBuilder. Thing is, you do not want to directly use string concatenation to build your path. Try to think about using your … Continue reading Hidden .NET Gems – Path.Combine
Hi, I've started a job as C# software engineer consultant on the 15th of this month. It's given me the opportunity to go back over my XAML with WPF and Silverlight and doing some refactoring with C#. Doing so, I've been pushing my C# foo & re-discovered some things that I hadn't use in a … Continue reading Hidden .NET Gems – Aliased generics
Hi, I'm picking web and mobile development lately as they are super trendy at the moment. But it's more than that. I'm a firm believer that in this profession, software development, we can't keep still. We ought to ourselves to move way outside our comfort bubbles and try new things even if it's a small … Continue reading FastOrder: real-time pizza order placement – Part 0
Hey guys, This is a new series I will try to maintain to the best of my capabilities. I'm this awesome blogger who happens to be also a Microsoft MVP called Iris Classon. After her first year of programming, she started to ask and get answers for what she'd call "stupid question". Why would she … Continue reading Tech questions 1-3: Linq
Hi guys, I've spent quite some time in the past using the Roslyn API, in an internship and during the Google Summer of Code 2015. Thought I'd be a great idea to present it here. The .NET Compiler Platform, known by the name of Roslyn, was made available to the public as an extension to … Continue reading A better tomorrow for source code with Roslyn
Since Push requires stacks to manipulate its data, we need an implementation of this data structure. There is of course a .NET implementation, however, it is not a “functional” data structure, in a sense that it is mutable. It is easy enough to implement our own, purely functional, immutable stack.
F# list is a logical choice for an underlying implementation. It derives from Seq (i.e. implements all IEnumerable flavors), has a useful length property which we would like to have for our stack as well:
What remains is to implement basic operations, which are all static members of the Stack module.
These are pretty straightforward. pop function has a slight quirk: we would like to return both the value of the head of the stack as well as “the rest” of the stack. So the return type in this case is a tuple.
Another slight irregularity: stack functions work on…
View original post 270 more words
Hey guys, So this week I worked on a small code kata. The purpose of this project is to simply be able to format text into a bullet point like any text editor allows you to do it. To complete this challenge, I decide to use F# since it's so great for prototyping and get … Continue reading Bullet points formatter
Hey guys, In spirit of my withdraw from the Google Summer of Code program this summer, I thought I'd do a piece of the project I successfully completed last summer. So what brought me to the program last year ? I spent a few weeks on working on a new thing in .NET called Roslyn. … Continue reading GSOC 2015 : From NRefactory 6 to RefactoringEssentials
Hi, Today, I'll be talking about a special project I have not only designed from A to Z but also implemented. Well, it's not as big as this sentence let's it sound. I worked on developing a prototype of a mobile game in augmented reality. Being a huge fan of tactical RPGs, I found it … Continue reading Augmented Tactics: A role playing game prototype
Hey guys, Being myself a fan of functional programming and cross-platform development, I thought you might like a nice read on how to create your very first platformer game with F# & MonoGame. Making a platformer in F# with MonoGame For those not having any prior knowledge of F#, don't worry, I'm going to do … Continue reading Making a platformer in F# with MonoGame
Hi guys, Last summer, I got into an interesting course entitled "Emerging topics in information technologies". During the first part of the course, we focused more on 3D computer vision techniques and how to manipulate 3D images.Issues such as depth-image-based rendering were obscure and captivating enough to get me motivated throughout the summer semester. In order … Continue reading Interesting project : Render stereoscopic 3D images using Kinect 2.0
Hey guys, What are extension methods ? Extension methods are quite simple to understand and they can be quite useful in time of needs. An extension method give you the power to create a new method for any type that you would like. They're static methods designed to extend the capabilities of a type without … Continue reading Bring more functionalities to types using extension methods
If you’ve been following along with my posts over the past six months or so you can probably imagine that I’ve been asked some variation of this post’s title more than a few times. One question that I keep getting is why I chose F# over some other functional languages like Haskell, Erlang, or Scala. The problem with that question though is that it’s predicated on the assumption that I actually set out to learn a functional language. The truth is that moving to F# was more of a long but natural progression from C# rather than a conscious decision.
The story begins about two and a half years ago. I had pretty much burned out and was deep into what I can only begin to describe as a stagnation coma. I stopped attending user group meetings; I cut way back on reading; I pretty much stopped…
View original post 2,559 more words
Hi there readers, So, we're finally getting into the final pilar of object oriented programming, polymorphism. It's a strange word at first, but we get use to it pretty fast. What does the word polymorphism mean? The root of polymorphism is traced back to the greeks. Poly means many and morphism mean forms. Basically, polymorphism … Continue reading Polymorphism: Empowering your objects
This book looks interesting enough to give it a try. I’ll order a copy today.
I recently read F# for C# Developers by Tao Liu. As usual, the disclaimer is that I received a copy of the book for free in return for the review. This one was a challenge. Not because of the programming paradigm shift from imperative driven programming in C# to functional programming in F#, but because the density of the book and my having read a different book on F# rather recently.
Mr Liu is most certainly an expert on F#, both from his work at Microsoft and this book. However there were times when I felt a little frustrated in reading the book. My favourite chapter of this book was Chapter 3 where he examines design patterns which can be found in C# and then applies these patterns to F# code. It remains dense reading, but it demonstrates those patterns very well. Mr Liu takes the notion, as I read…
View original post 295 more words
Hi there readers, We have talked about the first principle of object oriented programming in an earlier post. Now, it would be time to talk about the second one, inheritance. In the normal world, we talk about inheritance when one is about to receive some piece of land or a title from a loved one … Continue reading Inheritance: More than just titles or money
Hi there readers, We'll begin our journey down the road of oriented object programming with the first principle: encapsulation. When we create a software, we have multiple pieces of data which communicate with each other to do exactly what we wish to achieve. While we would love to live in a world were the users … Continue reading Encapsulation: How to make sure the user don’t mess up the software
Hi readers, First of all, I'd like to wish you to have a wonderful holidays with your family, wherever you are at this moment. During the first lectures, we went over some of the basics of programming. Even though it might have seen like a lot, it was just the core fundamentals we needed to … Continue reading OOP: Do you object to this statement ?
Hi readers, We've seen quite a few things in the last few days. Now, it's time to put all the fundamentals to good use. Today, we'll create a console application in which a user can access the menu of its bank account. At first, the user will need to set up his password to get … Continue reading Console Application: Managing a bank account
Welcome reader, We've gone through a lot of the core fundamentals of programming with C#. We've seen how to evaluate conditions in our program flow and different ways to repeat a block of code with the help of loops. We've seen different notions that can help us to really understand how a software program works … Continue reading Programming basics: Methods
Hi, Yesterday, I've just acquired some tech device which I've been looking forward for quite some time. It is a motion tracking device, called Leap motion. . This device is quite powerful. By hooking up the device with your computer, you'll be able to control your computer without the need of a mouse. It's a … Continue reading Motion tracking : Leap motion
Welcome reader, When we first talk about, it was mentioned that the String data type were to be discussed in a later post. So what exactly are String ? If you remember, we have the char data type, which is used to store a single character inside a char variable. Sometimes, we need to manipulate … Continue reading Programming basics: what are strings ?
Welcome reader, This blog post will cover the use of loops. Loops are used to repeat the same operation(s) at least once. Usually, most programs you can think of will need this kind of functionnality. We can use loops to go through data or let a program start from the start, they can even be … Continue reading Programming basics : Using loops
Welcome reader, This will be the final part in the programming basics mini series in how to manage the program flow of your software application. We're going to see how to manage the flow of your program when we're using a switch. It is a structure that is mostly use when we have predefined conditions.When … Continue reading Programming basics : manage program flow final part
Welcome reader, We'll pick up where we left with how to manage the program flow of a software application. We saw how to use the if-else if-else structure. To evaluate a condition, we need comparaison operators. Those are use evaluate a boolean expression, which will either result a true or false. Below, you'll be able … Continue reading Programming basics: manage program flow part two
Welcome reader, Our journey into programming began with the use of variables, how to name and how to store data in them. Programming goes a bit further than this. When you tell your machine to perform a given operation, sometimes, you want to check a state or a condition before your console application performs the … Continue reading Programming basics: manage program flow part one
Welcome reader, We haven't create an application since the start of the programming basics. It is sort of a ritual that the first program that a programmer writes will print of the screen the following : "Hello World!". So, we are actually going to write this as our first console application. Open your IDE and … Continue reading Programming basics: My first console application
Welcome reader, We'll follow where we left off when we've talked about variables. When you are behind you screen, there is a lot more going on then just writing lines in the IDE to make you computer do something. There are a set of rules that you should always stick to make your code clearer. Before, … Continue reading Programming basics: naming convention, indent and white spaces
Welcome reader, This post is a small break from the programming basics serie. I'm going to talk about a real life project I will talk about in this blog. It will be an open source project, which will be accessible from my GitHub account profile. Before going talking more about the basics, I thought it … Continue reading First real life project : Managing orders
Welcome reader, This is the first part of a mini-serie to introduce the basics of programming with C#. Don't forget to look at my GitHub account. I haven't decide yet, but surely I will create a project which will resume every topic that I've talked about during the Programming basics serie. So, we're finally there, … Continue reading Programming basics : variables