Category: C# & F#

Introducing DotNet.SystemCollections.Analyzers

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

Testing your software system with resilient randomized tests

Testing your software system with resilient randomized tests

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

Running for the F# Software Foundation board

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

Learning about leading projects and building web projects with F#

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#

Building a production-ready full-stack web application with SAFE – 0

Building a production-ready full-stack web application with SAFE – 0

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

Baby steps with F# and functional programming

Baby steps with F# and functional programming

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

Mentoring C# and F# developers on Exercism

Mentoring C# and F# developers on Exercism

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

Early steps in performance engineering

Early steps in performance engineering

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

Experiments and Adventures in 2019 with F#

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#

Promoting F# in a C#-based team

Promoting F# in a C#-based team

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

Hidden .NET Gems – ReactiveUI

Hidden .NET Gems – ReactiveUI

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

FastOrder: real-time pizza order placement – Part 0

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

Implementing a Stack in F#. Tail Recursion.

Viral F#

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

GSOC 2015 : From NRefactory 6 to RefactoringEssentials

GSOC 2015 : From NRefactory 6 to RefactoringEssentials

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

Interesting project : Render stereoscopic 3D images using Kinect 2.0

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

Why F#?

Didactic Code

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

Book Review: F# for C# Developers

Book Review: F# for C# Developers

This book looks interesting enough to give it a try. I’ll order a copy today.

The Education of a Programmer (Me)

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

Inheritance: More than just titles or money

Inheritance: More than just titles or money

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

Encapsulation: How to make sure the user don’t mess up the software

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

Programming basics : manage program flow final part

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

Programming basics: manage program flow part two

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

Programming basics: manage program flow part one

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

Programming basics: My first console application

Programming basics: My first console application

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

Programming basics: naming convention, indent and white spaces

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

First real life project : Managing orders

First real life project : Managing orders

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