Selling your ideas at work, building influence and credibility, and becoming a more efficient communicator

Hi readers, Why should we focus on our soft skills? As you may very well know, we, software developers, tend to spend most, if not, our entire time focused on developing technical skills. While we should not aim to be perfect across the board, we'd be better off reeling it in a bit. It can … Continue reading Selling your ideas at work, building influence and credibility, and becoming a more efficient communicator

Advertisement

Tips to ensure success in new software engineering jobs

Hi readers, So big news! Last month, I left my previous employer (Hypertherm) and started a new job this month at Divisions Maintenance Group as a Sr. software engineer. As it is fresh in my memory and that I am still being onboarded, I would like to share what I've been doing/planning on doing at … Continue reading Tips to ensure success in new software engineering jobs

Guidelines to improve your software design skills with .NET (Part I)

Hi readers, C# advent calendar This year, I decided to participate in the C# advent calendar. You can find other posts for the C# advent calendar here. I had the chance to partake before in the F# advent calendar and was not aware that there was one for C# users. I feel this blog entry … Continue reading Guidelines to improve your software design skills with .NET (Part I)

The F# Mentorship Schedule Planner

Hi readers, F# advent calendar For those who are not aware, the F# advent calendar has been initiated by Sergey Tihon a couple of years ago. I started participating in it last year and I must say that the F# community is amazing! Everyone always produces great content to share. Honestly, I could not have … Continue reading The F# Mentorship Schedule Planner

Presenting the intelligent fighting game coach

Presenting the intelligent fighting game coach

What is an intelligent fight game coach? How could I describe it in a few words? A fascinating and engaging stepping stone into artificial intelligence development from my perspective. Here is a summary description of how things are going to work: Provide your fighting style preference, for example:Zoning: Keep away characters at bay by controlling … Continue reading Presenting the intelligent fighting game coach

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

Introduction to the text adventure

Hi, This marks the beginning of my new passion project. As per usual, many different fields in software engineering pique my interest. I aspire to get to know different fields and continue to grow as a software developer. Beforehand, I thought I’d get to build a web platform and also a game. I decided to … Continue reading Introduction to the text adventure

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

Numbers Everyone Should Know

Everything is Data

When you’re designing a performance-sensitive computer system, it is important to have an intuition for the relative costs of different operations. How much does a network I/O cost, compared to a disk I/O, a load from DRAM, or an L2 cache hit? How much computation does it make sense to trade for a reduction in I/O? What is the relative cost of random vs. sequential I/O? For a given workload, what is the bottleneck resource?

When designing a system, you rarely have enough time to completely build two alternative designs to compare their performance. This makes two skills useful:

  1. Back-of-the-envelope analysis. This essentially means developing an intuition for the performance of different alternate designs, so that you can reject possible designs out-of-hand, or choose which alternatives to consider more carefully.
  2. Microbenchmarking. If you can identify the bottleneck operation for a given resource, then you can construct a micro-benchmark…

View original post 312 more words

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

My master class in Machine Learning & Deep Learning with Python

Hi, One of my biggest goals in 2020 is to dive deep in Python and machine learning; two things I haven't really explored in the time I've been in tech. That's about to change. Even though I have experience with other frameworks and programming languages, I do not consider my self as an "experienced Python … Continue reading My master class in Machine Learning & Deep Learning with Python

How can I be successful in 2020?

My definition of success for the start of the decade is a complex answer that deserves my utmost attention. Why is it a complex topic? It’s composed of many layers that my life revolves around. Stepping out of the comfort zone First, I see that change is something that I’m comfortable staying away from and … Continue reading How can I be successful in 2020?

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

Why students in college should participate in Google Summer of Code (GSoC)

Why students in college should participate in Google Summer of Code (GSoC)

Hi everyone, Today’s post is targeting students in college. The main idea is to sell you the idea of participating in the Google Summer of Code program that Google host every year since 2005. Oh and by the way, this is just free publicity, the program does not provide any money to me in order … Continue reading Why students in college should participate in Google Summer of Code (GSoC)

3 Tips & tricks for Kickass Developers in 2019

3 Tips & tricks for Kickass Developers in 2019

Hi, For those looking for new ways to kick off 2019 with a bang with your .NET skills, keep on reading 🙂 1. Leverage more LINQ in your C# code Lately, functional programming has been a really hot and trending topic. C# is becoming more of a functional programming language to stay on par with … Continue reading 3 Tips & tricks for Kickass Developers in 2019

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

SmartSavings: Go full-stack mobile dev – Part 0

SmartSavings: Go full-stack mobile dev – Part 0

Hi, This is my third and probably last post of the day. As you probably know, I'm currently in the process on working on multiple projects and getting out of my comfort zone and I'm going to share my experiences right here with you, readers, so may not have to go through the same challenges. … Continue reading SmartSavings: Go full-stack mobile dev – Part 0

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