@foreach (var experience in WorkExperience.Get().Experiences)
{
-
@experience.Role
-
@experience.Location
-
@experience.DateRange
-
- @foreach (var point in experience.Points)
- {
- @if (point.IsVisible)
+ @if (experience.IsVisible)
+ {
+
@experience.Role
+
@experience.Location
+
@experience.DateRange
+
+ @foreach (var point in experience.Points)
{
-
@point.Description
+ @if (point.IsVisible)
+ {
+
@point.Description
+ }
}
- }
-
+
+ }
}
diff --git a/Website/Components/Routes.razor b/Website/Components/Routes.razor
index 1e8a229..105855d 100644
--- a/Website/Components/Routes.razor
+++ b/Website/Components/Routes.razor
@@ -1,4 +1,4 @@
-
+
diff --git a/Website/Components/_Imports.razor b/Website/Components/_Imports.razor
index 7b76ecb..e05c470 100644
--- a/Website/Components/_Imports.razor
+++ b/Website/Components/_Imports.razor
@@ -7,6 +7,5 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Website
-@using Website.Client
@using Website.Components
@using Website.Components.Layout
diff --git a/Website/Data/Overview.cs b/Website/Data/Overview.cs
index f611672..1a3be90 100644
--- a/Website/Data/Overview.cs
+++ b/Website/Data/Overview.cs
@@ -13,7 +13,7 @@ public static class Overview
IsVisible = true,
Order = 1,
Description =
- "Software Developer with a focus on the .NET tech stack.",
+ "In the industry since 2012, while playing a pivotal role in all aspects of the software stack, from prototype to release, and improving applications with patches based on customer feedback and data in production.",
LastModified = new DateTime(2025, 9, 8)
}
]
diff --git a/Website/Data/WorkExperience.cs b/Website/Data/WorkExperience.cs
index e430ba3..6fc41ed 100644
--- a/Website/Data/WorkExperience.cs
+++ b/Website/Data/WorkExperience.cs
@@ -63,6 +63,7 @@ public static class WorkExperience
Role = "Fullstack Blazor Developer",
Location = "Personal Projects, on various interests",
DateRange = "2021, 2026",
+ IsVisible = false,
Points =
[
new Point
@@ -87,15 +88,16 @@ public static class WorkExperience
},
new Experience
{
- Role = "Angular Web Developer",
+ Role = "Angular Website Developer",
Location = "CleanCode, Software consultancy on various projects",
DateRange = "2020 - 2021",
+ IsVisible = true,
Points =
[
new Point
{
Description =
- "Came to the conclusion that I wanted to focus my career in .NET, and left the company to pursue Blazor research and C# opportunities. Unfortunately, Blazor development work is not as popular as one would hope.",
+ "Came to the conclusion that I wanted to focus my career in .NET, and left the company to pursue Blazor research and C# opportunities. Unfortunately, Blazor development work is not popular.",
IsVisible = true
}
]
@@ -200,6 +202,8 @@ public static class WorkExperience
public string Location { get; set; }
public string DateRange { get; set; }
+ public bool IsVisible { get; set; } = true;
+
public List Points { get; set; }
}
diff --git a/Website/Program.cs b/Website/Program.cs
index d996817..a8de88e 100644
--- a/Website/Program.cs
+++ b/Website/Program.cs
@@ -27,7 +27,6 @@ app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode()
- .AddInteractiveWebAssemblyRenderMode()
- .AddAdditionalAssemblies(typeof(Website.Client._Imports).Assembly);
+ .AddInteractiveWebAssemblyRenderMode();
app.Run();
diff --git a/Website/Website.csproj b/Website/Website.csproj
index 692d435..ca6bd16 100644
--- a/Website/Website.csproj
+++ b/Website/Website.csproj
@@ -5,10 +5,10 @@
enableenabletrue
+ Website
-
diff --git a/resume_html/index.html b/resume_html/index.html
deleted file mode 100644
index 97e9de7..0000000
--- a/resume_html/index.html
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
- Jon McCaffrey - .NET Developer
-
-
-
-
-
-
-
JM
-
Jon McCaffrey
-
.NET Developer
-
-
-
-
-
LocationOttawa, ON
-
Emailjonmcc0723@gmail.com
-
Phone613-277-8353
-
Experience14 years in tech, 3 in education
-
EducationGame Development (2012)
-
Rate$50 / hr
-
-
-
-
-
Skills
-
-
.NET Ecosystem
-
-
C# / .NET
-
Blazor
-
Entity Framework
-
ASP.NET Core
-
REST APIs / GraphQL
-
SQL / SQL Server
-
-
-
-
Frontend & Web
-
-
HTML / CSS
-
JavaScript / TypeScript
-
React
-
Angular
-
-
-
-
DevOps & Tools
-
-
Azure / AWS
-
Azure Pipelines / Jenkins
-
Git
-
Jira / Azure DevOps
-
Unit Testing / Test Automation
-
CI/CD
-
-
-
-
Other
-
-
Agile / Scrum
-
Documentation & Training
-
Customer Support & Debugging
-
Self-Hosting (Ubuntu Server)
-
Google Analytics / 3rd Party APIs
-
-
-
-
-
-
-
-
About Me
-
Software Developer with a focus on the .NET tech stack. Passionate about building robust backends, crafting clean APIs, and writing maintainable C# code. Experienced across the full stack with a drive to deliver quality software.
-
-
-
-
Experience
-
-
-
-
.NET Server Developer
- 2021 – 2026
-
-
TotalETO — Engineering to Order Solutions
-
-
Wrote various API calls, unit tests to test said calls, and exact examples to show the frontend team on how to consume the GraphQL API.
-
Converted SQL stored procedures into views usable by Entity Framework to support old functionality with new web app features.
-
Moved from backend to frontend as needed to fix bugs and add features to React frontend to help the UI team with their higher workload.
-
Took part in converting legacy VB-coded app functionality to a C# .NET web development server.
-
Taken the initiative in creating a variety of onboarding internal wiki documents explaining parts of the codebase that were well-loved by the team.
-
Created an Azure DevOps pipeline to automate taking snapshots of the database schema to be aware of changes from multiple teams altering the database.
-
-
-
-
-
-
Fullstack Blazor Developer
- 2021
-
-
Personal Projects
-
-
Created igpfanreference.ca to teach players in unreleased game basic play patterns, and to experiment with Blazor, Linux self-hosting and Azure web hosting.
-
Twitch streamed live coding sessions to demonstrate developing the website, and crowd-sourced and credited players on ideas and functionality for the website.
-
-
-
-
-
-
Angular Web Developer
- 2020 – 2021
-
-
CleanCode — Software Consultancy
-
-
Came to the conclusion that I wanted to focus my career in .NET, and left the company to pursue Blazor research and C# opportunities.
-
-
-
-
-
-
Full Stack Developer
- 2015 – 2020
-
-
bitHeads — Cloud-Based Technology
-
-
Worked on a portal and mobile-facing web app for a SaaS project written in React.
-
Eliminated routine project hours spent documenting by creating a Node.js tool in TypeScript that generated the API doc contents.
-
Created brainCloud's Command Line tool in Node.js and other test tools, for developers and QA to test and stress test API and server features.
-
Maintained customer success and brainCloud's unit tests, examples, and libraries in Java, ObjC, C++, C#, JS, Unity, and Unreal.
-
Wrote documentation, tutorials, and offered guidance to bring new co-workers up to speed on the BaaS environment.
-
Maintained and wrote Jenkins Pipeline in Groovy for improved test reporting and team CI.
-
Developed Test Automation for brainCloud and Nortec/Condair Help websites in Java, to reduce manual testing time spent on an agile team.
-
-
-
-
-
-
Mobile Game Developer
- 2012 – 2015
-
-
Smoke Labs — Mobile Games Startup
-
-
Developed key systems in Blokus, Mattel-branded title nominated in the Canadian Video Game Awards for "Best Game Design" and "Best Social or Casual Game."
-
Experience integrating a multitude of analytics, ad systems, and backends, including Google Analytics, Game Analytics, Flurry, Mopub, and Playhaven.
-
Spent time working with the external QA team to bridge the company's knowledge gaps between the developer and QA workflows.
-
Integrated ads, in-app purchases, analytics, and handled product releases of legacy client apps.