Hi There! 👋🏻

I'M Abdullah Al Noman

|
avatar

LET ME INTRODUCE MYSELF

Hello, I'm Abdullah Noman, currently residing in Fairfield, Iowa. I'm a skilled software developer with around five years of experience in the software industry. I specialize in developing high-quality web applications, utilizing a variety of technologies and tools to deliver solutions that meet the needs of clients and users alike.

Throughout my career, I have been involved in all phases of the Software Development Life Cycle, from requirements gathering to implementation and maintenance. My expertise lies in leading back-end projects using object-oriented programming principles, design patterns, and integrating third-party APIs. Notably, I developed complex modules for a financial budgeting solution for TAFE NSW and designed and developed several web API applications from scratch.

Currently, I am pursuing distance education courses to complete a master’s degree in computer science, and I am available for full-time, W-2 employment opportunities.

  • Object-Oriented Programming
  • .NET Technologies
  • Clean Architecture
  • Design Patterns
  • Distributed Systems
  • Algorithms
  • Data Structures & Collections
  • System Design
about

Professional Skillset

Tools I use

Days I Code

 

My Recent Works

Here are a few projects I've worked on recently at MIU.

card-img
Mealigram

Modern Web Application project that imitates Instagram, allowing users to create and post recipes. Features include user interaction functionalities such as viewing, saving, commenting, liking, replying to posts, and deleting own recipes.

 GitHub
card-img
Library Management System

Desktop project managing library books and members. Includes role-specific modules, overdue book tracking, and report generation.

 GitHub
card-img
Big Data Project

Implemented different MapReduce algorithms like Pair, Stripe, and Inverter Approach to calculate count, average, and relative frequency. Utilized Java, Hadoop, Spark, and Scala.

 GitHub

Understanding IProgress, async, and await in C#

Asynchronous programming is a crucial aspect of modern software development, enabling applications to remain responsive while performing time-consuming operations. In C#, asynchronous programming is accomplished using the async and await keywords, along with interfaces like IProgress.

The async keyword is used to define asynchronous methods, which can be paused and resumed during execution. These methods typically return a Task or Task<T>representing the asynchronous operation.

The await keyword is used to asynchronously wait for the completion of an asynchronous operation. It can only be used within an async method and is used to pause the execution of the method until the awaited operation completes.

The IProgress interface is used to report progress information from asynchronous operations back to the caller. It defines a single method, Report, which is called to report progress updates.

Here's a simple example demonstrating the usage of async, await, and IProgress:

async Task DownloadFileAsync(string url, IProgress<int> progress)
{
  using (var client = new HttpClient())
  {
    using (var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead))
    {
      var totalBytes = (int)response.Content.Headers.ContentLength;
      var downloadedBytes = 0;
      
      using (var stream = await response.Content.ReadAsStreamAsync())
      {
        var buffer = new byte[8192];
        var bytesRead = 0;

        while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length)) > 0)
        {
          downloadedBytes += bytesRead;
          var percentage = (int)(((double)downloadedBytes / totalBytes) * 100);
          progress.Report(percentage);
        }
      }
    }
  }
}

In this example, the DownloadFileAsync method asynchronously downloads a file from the specified URL while reporting progress updates using the IProgress interface.

Asynchronous programming in C# can greatly improve the responsiveness and scalability of your applications. By leveraging features like async, await, and IProgress, you can efficiently handle long-running operations without blocking the main thread.

That concludes our exploration of asynchronous programming in C#. I hope you found this article informative and helpful in your development endeavors.

Contact Me