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
Here are a few projects I've worked on recently at MIU.
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.
GitHubDesktop project managing library books and members. Includes role-specific modules, overdue book tracking, and report generation.
GitHubImplemented different MapReduce algorithms like Pair, Stripe, and Inverter Approach to calculate count, average, and relative frequency. Utilized Java, Hadoop, Spark, and Scala.
GitHubAsynchronous 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
andawait
keywords, along with interfaces likeIProgress
.
Theasync
keyword is used to define asynchronous methods, which can be paused and resumed during execution. These methods typically return aTask
orTask<T>
representing the asynchronous operation.
Theawait
keyword is used to asynchronously wait for the completion of an asynchronous operation. It can only be used within anasync
method and is used to pause the execution of the method until the awaited operation completes.
TheIProgress
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 ofasync
,await
, andIProgress
: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 theIProgress
interface.
Asynchronous programming in C# can greatly improve the responsiveness and scalability of your applications. By leveraging features likeasync
,await
, andIProgress
, 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.