Tom
Farrell
Fullstack developer
C#, ASP.NET MVC
javascript, postgreSQL
CONTACT ME

About Me

I’m a software developer and I thank you for joining me on my portfolio page. My primary focus is web development and my day-to-day tools are C#, JavaScript, HTML and CSS. My go to for database support is PostgreSQL. My largest and most advance applications are built with .Net framework and the MVC design philosophy. I’m also familiar with Java, C++ and Python.

I enjoy the challenge of writing code and the results it can produce. I invite you to review these applications. Of course, if you have questions, comments or even critiques, feel free to reach out.
Download Resume

What I Use

I use C# on a daily basis to build full-stack web applications. You can see my work implementing C# in my projects section!

I use proven design patterns and frameworks to build websites. ASP.NET Core Web and MVC fits the bill for most projects.

I use HTML, CSS, and BootStrap ot build beautiful responsive websites. Bootstrap is my go to CSS framework. Many shy away from the front-end, but I find it to be an interesting challenge and enjoy the creative process.

Javascript is the language of the web. I use vanilla JS and I'm comfortable with many JS frameworks. Check out my challenges section for some JS projecgts!

SQL is the language of the database. My projecs all utilize a database as well as Postgress. I'm comfortable writing SQL queries too.

I use git and github for all my projects. Git is the most used source control on the planet. I also employ CI/CD for publishing.

Things I Have Built

These are complete and functional projects that demonstrates what I can bring to your project. I built these projects from the ground up to demonstrate skill with front-end, back-end, security, and database development. These projects are full-stack applications that are published so you can demo them easily. Contact Me to get a complete code walkthrough!

Built with C#, ASP.NET, MVC and PostgreSQL. This Full-Stack Application is a Contact Keeper

Built with C#, ASP.NET, MVC, PostgreSQL, JavaScript, and an API. This Full-Stack Application is a Blog for discussing software and tech.

Smaller Proects

The following projects are smaller front-end applications. They incorporate JavaScript, HTML, CSS and Bootstrap. While not "full-stack" they are complete and fully functional applications that each provide functional benefits to user. Contact Me To get a complete code walkthrough!

Built with JavaScript, HTML, CSS and Bootstrap. This is a Loan Calculator that breaks down payments to the monthly level.

Learn More

Built with JavaScript, HTML, CSS and Bootstrap. This is your classic Palindrome Checker

Learn More

Built with JavaScript, HTML, CSS and Bootstrap. This reverse string application will clean the input as needed and return the string in reverse. Learn More

Built with JavaScript, HTML, CSS and Bootstrap. Boil Your Events To The Basics With Calendar Caldron

Learn More

Built with JavaScript, HTML, CSS and Bootstrap. The classic FizzBuzz challenge that gives users more control.

Learn More

Built with JavaScript, HTML, CSS and Bootstrap with API connectivity to a movie database. Find out what's playing tonight!

Learn More

Stuff I write about

I write on my blog on a regular basis. I think it's important to share knowlege with others, and I find it helps me understand code better

23
April

Understanding the MVC Architecture

The MVC (Model-View-Controller) architecture is a fundamental concept widely used in software development to organize and manage code in a way that enhances maintainability and scalability. But what exactly does MVC mean, and why is it so beneficial for developing applications? Let’s break it down into simple terms.

At its core, the MVC pattern divides an application into three interconnected components, each responsible for a distinct aspect of the application's operations. First, we have the Model, which represents the data and the business rules of the application. It is the central component that directly manages the data, logic, and rules of the application. For example, if your application is a book library, the Model will manage information such as book titles, authors, and availability.

Next, the View component is what users interact with. It presents the Model data to the user, but does not perform any processing. Views display data from the Model to the user and send user commands (e.g., keystrokes, mouse clicks) to the Controller. This separation allows the user interface to be changed without altering the underlying business logic.

Lastly, the Controller acts as an intermediary between the Model and the View. It listens to the user inputs given through the View, processes them (perhaps with the help of Model), and returns the output display to the View. Essentially, the Controller updates both the Model and the View but keeps the two separated.

This separation of concerns within the MVC architecture provides several advantages. It simplifies the management of complex applications, allows for efficient code reuse, and separates the interface from the business logic, making the development process more manageable and the application more scalable. As a beginner in technology, understanding and implementing MVC can greatly improve your coding practices and project outcomes.

Published 368 days ago

24
April

Leveraging Services and Interfaces in ASP.NET MVC for Efficient Data Management

Introduction In the world of web development using C# and ASP.NET MVC, structuring an application effectively is crucial. MVC (Model-View-Controller) architecture aids in separating the data model, the user interface, and the input logic into different components. This post explores the integration of services and interfaces to streamline business logic and CRUD (Create, Read, Update, Delete) operations, enhancing the application's efficiency and scalability.

Main Content MVC design pattern separates concerns within the application, which simplifies development and maintenance. Services in this architecture perform specific business logic and data manipulation, while interfaces define the contracts those services adhere to. This separation ensures that each component handles its designated functionality independently but works cohesively with the others.

Take, for instance, a service in an MVC application designed to manage project data. A typical service method, GetAllProjectsByCompanyAsync, retrieves all non-archived projects for a given company. It eagerly loads related data such as project members. Here's how it is structured:

public async Task<List<Project>> GetAllProjectsByCompanyAsync(int companyId) { List<Project> projects = new List<Project>(); projects = await _context.Projects.Where(p => p.CompanyId == companyId && !p.Archived) .Include(p => p.Members) .ToListAsync(); return projects; }

This method is part of a broader service that implements an interface specifying several project-related data operations. The related interface could include methods like GetArchivedProjectsByCompanyAsync to fetch archived projects, ensuring that all potential data needs are covered by the service.

Conclusion Integrating services and interfaces in your ASP.NET MVC applications not only promotes a clean separation of concerns but also enhances modularity and maintainability. By defining clear service contracts through interfaces and implementing detailed data manipulation logic within those services, your applications become more robust, easier to test, and simpler to maintain. This approach is essential for developers looking to build scalable and efficient web applications.


 

Published 367 days ago

24
April

Introducing a Customizable Twist to the Classic FizzBuzz Challenge

Introducing a Customizable Twist to the Classic FizzBuzz Challenge

Are you tired of the same old FizzBuzz programming challenge, where the numbers 3 and 5 reign supreme? We've given this traditional coding exercise a fresh, interactive twist with our new web application. Now, you can redefine the rules by choosing your own "Fizz" and "Buzz" numbers!

The FizzBuzz game is typically used to teach beginners the basics of programming, focusing on looping and conditional statements. In the classic version, numbers from 1 to 100 are printed, but with a twist: numbers divisible by 3 are replaced by "Fizz," those divisible by 5 by "Buzz," and numbers divisible by both become "FizzBuzz." Our application extends this concept by allowing users to set any two numbers as their Fizz and Buzz values. This flexibility not only adds a layer of complexity but also makes the game more engaging and personalized.

Using the app is a breeze. The user-friendly interface invites you to input your chosen values for Fizz and Buzz, along with the range of numbers you want to play with. Once you hit 'Start,' the application dynamically generates the results based on your specifications. For instance, if you choose 4 and 6 as your new Fizz and Buzz, numbers divisible by 4 will display as "Fizz," those by 6 as "Buzz," and numbers divisible by both as "FizzBuzz."

This application not only serves as a fun and educational tool but also showcases the potential of simple web technologies. Built with standard front-end technologies like HTML, CSS, and JavaScript, it demonstrates how basic coding skills can be used to create fully functional and interactive web applications. Whether you're a programming beginner or just looking for a fun way to test your skills, our customizable FizzBuzz app offers a unique challenge that encourages both learning and creativity. Give it a try and put your own spin on a programming classic!

You can find this application right here:

https://sensational-duckanoo-0fe26f.netlify.app/app

Published 367 days ago

Contact Me