Services
Company
Blog
Contact
Open Source

Latest Updates / 4

Company and industry news, featured projects, open source code, tech tips, and more.

Namecheap DNS

Michael Argentini Avatar
Michael ArgentiniWednesday, May 15, 2024

The NameCheap project builds a command line interface (CLI) application that can add and remove text records using the NameCheap API.

It was originally built to allow for creating wildcard TLS certificates using win-acme (Let's Encrypt) on an IIS server. Creating wildcard certificates with win-acme requires DNS host validation. This application can be used with the win-acme script feature to allow it to communicate with the NameCheap API and create/delete TXT records that will validate domain ownership.

This tool does not support the complete NameCheap API. But it does handle the challenging task of adding and removing text records. Why is this challenging? The NameCheap API does not have functions to add or remove individual records, so the entire set of records must be downloaded, modified, and sent back.

How to install

Download the project and publish it from the root project folder as below.

dotnet publish Fynydd.NameCheap/Fynydd.NameCheap.csproj -o publish -p:PublishSingleFile=true -c Release -r win-x64 --self-contained

In the publish folder, edit the appsettings.json file and supply your own values.

{
    "NameCheap": {

        "ApiKey": "{your namecheap API key}",
        "UserName": "{your namecheap username}",
        "ApiUserName": "{your namecheap API username}",
        "ClientIP": "{a whitelisted IPv4 address}"
    }
}

Note:

  • You can enable the NameCheap API and get a key on their website.
  • UserName and ApiUserName are usually the same value, and it is usually the user name you use to sign in to NameCheap.
  • ClientIP is a whitelisted IP address allowed to connect to the API. These whitelisted addresses can be added to NameCheap when/where you enable the API on their website. Note: API calls will check your current WAN IP with the one you provide in the settings. So they need to match.

Once the appsettings.json file is modified, put the contents of the publish folder on your server and you should be able to use the executable with win-acme or any other tool by calling it with a fully qualified path.

Usage

The command line is in the format below:

Fynydd.NameCheap.exe [create|delete] [hostname] [name] [value]

Some examples include:

Fynydd.NameCheap.exe create example.com * testrecord=yaddayadda
Fynydd.NameCheap.exe create example.com my.api mykey=yaddayadda
Fynydd.NameCheap.exe create example.com my.txt "val1=yadda; val2=yadda"

So in win-acme you would set your create script arguments to this:

create {ZoneName} {NodeName} {Token}

Likewise, your delete script arguments would be:

delete {ZoneName} {NodeName} {Token}

macOS and Linux

The tool can be used on Linux or macOS as well. If the published executable doesn't run on macOS you may need to manually sign the published application using something like this:

cd publish
codesign -s - Fynydd.NameCheap

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: BPCC Open Campus Mobile

Michael Argentini Avatar
Michael ArgentiniWednesday, May 1, 2024
Bossier-Parish Community College campus, Bossier City, LA. Bossier-Parish Community College campus, Bossier City, LA.

Fynydd was asked to build a hybrid iOS, Android, and web-based learning app platform for enrolled and public students at Bossier Parish Community College (BPCC) in Bossier City, Louisiana. This was a full-stack platform that included a data tier, API service with management interface, client apps (App Store, Google Play Store), and responsive website.

The goal of the project was to research the efficacy of gamification strategies with regard to testing up and testing out of courses prior to enrollment. Secondarily it provided a great way for students to study and hone their knowledge during each semester.

The platform provided various curriculum through video courses, which each had check your knowledge quizzing as students progressed. Students could earn badges as they advanced through their learning journey and also challenge each other to quiz games for additional badges and bragging rights via a leader board.

Some of the features of the platform include:

  • Hosted on Amazon EC2
  • Multilingual using i18n
  • Integration of Wiris MathType for complex math equations
  • Integration with Canvas LMS
  • Peer to peer learning games with badging, grading, and advanced tracking
  • Library of video courses, quiz engine
  • SSO with social platforms including Facebook, Twitter/X, and Google
Screenshots

Key technologies

Front-end

Android

Angular

CSS3

HTML5

Ionic Framework

iOS

JavaScript

Sass/SCSS

Cloud back-end

Amazon Web Services

C#

Github

Microsoft .NET

Microsoft Windows

React

SQL Server

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: Ore-Ida Frozen sweepstakes

Michael Argentini Avatar
Michael ArgentiniMonday, April 1, 2024

Fynydd was asked to help Ore-Ida and Disney by building a high-performance Sitecore platform for their upcoming sweepstakes supporting the movie Frozen. The sweepstakes was built as part of the Heinz multi-tenant Sitecore platform, with a high priority on security, performance, and availability.

The platform allowed visitors to enter the sweepstakes with enforcement of specific business logic regarding how often they could enter and how many times per day. It leveraged a two-tier caching system for optimal performance, including additional optimizations on media and delivery.

Some of the features of the platform include:

  • Sitecore multi-tenant platform
  • ASP.NET compiled and optimized
  • Microsoft SQL Server Enterprise database service
  • Security features for sweepstakes entrance restrictions
  • Abuse protections including bot identification, distributed denial of service (DDoS) mitigations, scripting attacks, etc.
  • SEO optimizations for optimal search engine placement
  • Transactional email system for entrant communications

Given the large brands behind the promotion, it garnered a large amount of traffic in a relatively short period of time and was a huge success.

The performance metrics include:

  • Recipes, product information, movie trailers, and more
  • Heinz multi-tenant Sitecore environment
  • 1,212,179 entrants in 75 days
  • 16,162 entrants per day
  • Opt-in conversion: 15%
Screenshots

Key technologies

Front-end

CSS3

HTML5

JavaScript

Microsoft .NET

Sass/SCSS

Cloud back-end

C#

Github

Microsoft .NET

Microsoft Azure

Microsoft Windows

Sitecore

SQL Server

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Benford's Law

Michael Argentini Avatar
Michael ArgentiniFriday, March 15, 2024

The Benford project provides a framework for using Benford's Law to determine if a given random data set has been modified.

Benford’s Law, also known as the Law of First Digits, the Phenomenon of Significant Digits, or the Law of Anomalous Numbers is the finding that the first digits (or numerals to be exact) of the numbers found in series of records of the most varied sources do not display a uniform distribution, but rather are arranged in such a way that the digit “1” is the most frequent, followed by “2”, “3”, and so in a successively decreasing manner down to “9”. The expected distributions can be seen in the screenshots below.

Essentially, when looking at a significantly large set of numbers, this law can tell you if the distributions of first digits follows Benford's Law. Deviations of significance should indicate data tampering. This can be applied in all kinds of use cases, from social likes and follower counts, to regional vote counts, financial information, and more.

This project has some sample images and voting data that you can use to see how Benford's Law applies to them.

Screenshots

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: Campus Outreach ThinkDrink analytics

Michael Argentini Avatar
Michael ArgentiniFriday, March 1, 2024
COS has partnered with the Pentagon, the Department of Defense, and over 20 U.S. military bases to achieve increased knowledge, empathy, and improved bystander engagement over the last 30 years. COS has partnered with the Pentagon, the Department of Defense, and over 20 U.S. military bases to achieve increased knowledge, empathy, and improved bystander engagement over the last 30 years.

Campus Outreach Services offers unmatched sexual assault prevention training, substance use programs, mental health school assemblies, college transitions workshops, and customized series of other wellness topics. With compelling presenters and pragmatic resources, our impact lasts beyond an hour, a week, a year. We deliver pin-drop moments for lifetime change.

Campus Outreach Services partnered with Fynydd to create an analytics dashboard for their ThinkDrink learning platform. They needed to show efficacy across demographics and teams including longitudinal test results for their ThinkDrink program.

The platform enables subscribers to track course completion, filter, compare and share results, and see overall efficacy.

Some of the key features of the project include:

  • 9,000 users across 80 distinct organizations
  • Custom Moodle/PHP/MySQL implementation on Ubuntu Linux, Vimeo as secure video CDN
  • 9 filter criteria, 7 chart layouts, and 5 demographic segments
  • Student score comparisons across school boundaries
  • Analysis of a three phase testing process, including a longitudinal test, to show retention and efficacy
Screenshots

Key technologies

Front-end

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud back-end

Github

Moodle

MySQL

PHP

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

DataStore

Michael Argentini Avatar
Michael ArgentiniThursday, February 15, 2024

The DataStore project is a high performance JSON object store (ORM) for SQL Server.

DataStore uses and automatically creates and manages a pre-defined SQL Server data structure that can coexist with existing database objects. All database operations are performed with the DataStore helper class.

Your models are stored in the database as JSON text so you can have most any kind of object structure, provided your models inherit from DsObject.

Basic example

Instantiating DataStore with settings is non-destructive. Any existing DataStore tables are left untouched. Methods to delete all or unused schema objects are provided for those edge cases.

Models

Instantiate DataStore with a settings object and database schema will be created for all classes that inherit from DsObject. The following attributes can be used in your classes:

  • DsNoDatabaseTable prevents DataStore from creating a table for the class.
  • DsUseLineageFeatures enables lineage features for that table; add to the class itself.
  • DsSerializerContext(typeof(...)) to provide a de/serialization speed boost by using source generator JsonSerializationContext classes for each table; add to the class itself.
  • DsIndexedColumn generates a SQL computed column with index for faster queries on that data; add to properties and fields.
  • DsIndexedColumn("Food","Email") generates indexed SQL computed columns for faster queries on the dictionary key names specified; add to Dictionary properties and fields.
[DsUseLineageFeatures]
[DsSerializerContext(typeof(UserJsonSerializerContext))]
public class User: DsObject
{
    [DsIndexedColumn]
    public string Firstname { get; set; }
    
    [DsIndexedColumn]
    public int Age { get; set; }
    
    public List<Permissions> Permissions { get; set; }
    
    [DsIndexedColumn("Food", "Color")]
    public Dictionary<string, string> Favorites { get; set; } = new();
}

[JsonSerializable(typeof(User))]
[JsonSourceGenerationOptions(WriteIndented = false)]
internal partial class UserJsonSerializerContext : JsonSerializerContext
{ }

Construction

You can create a DataStore instance anywhere in your code:

var dataStore = new DataStore(new DataStoreSettings {
    SqlConnectionString = sqlConnectionString,
    UseIndexedColumns = true
});

You can also use DataStore as a singleton service:

services.AddSingleton<DataStore>((factory) => new DataStore(new DataStoreSettings {
    SqlConnectionString = sqlConnectionString,
    UseIndexedColumns = true
}));

Create and save objects

Creating and saving a DataStore object is simple:

var user = new User
{
    FirstName = "Michael",
    LastName = "Fynydd",
    Age = 50,
    Permissions = new List<Permission>
    {
        new() { Role = "user" },
        new() { Role = "admin" },
        // etc.
    }
};

await dataStore.SaveAsync(user);

The saved object is updated with any changes, like lineage and depth information, creation or last update date, etc. And you can provide a list of objects to save them all in one call.

Read objects

Querying the database for objects is simple too. In any read calls you can specify a DsQuery object with a fluent-style pattern for building your query. In the query you can specify property names as strings with dot notation:

var users = await dataStore.GetManyAsync<User>(
    page: 1,
    perPage: 50,
    new DsQuery()
        .StringProp("LastName").EqualTo("Fynydd")
        .AND()
        .StringProp("Permissions.Role").EqualTo("admin")
        .AND()
        .GroupBegin()
            .NumberProp<int>("Age").EqualTo(50)
            .OR()
            .NumberProp<int>("Age").EqualTo(51)
        .GroupEnd(),
    new DsOrderBy()
        .Prop<int>("Age").Ascending()
);

Or you can use the model structure to specify names, and make code refactoring easier:

var users = await dataStore.GetManyAsync<User>(
    page: 1,
    perPage: 50,
    new DsQuery()
        .StringProp<User>(u => u.LastName).EqualTo("Fynydd")
        .AND()
        .StringProp<User, Role>(u => u.Permissions, r => r.Role).EqualTo("admin")
        .AND()
        .GroupBegin()
            .NumberProp<User,int>(u => u.Age).EqualTo(50)
            .OR()
            .NumberProp<User,int>(u => u.Age).EqualTo(51)
        .GroupEnd(),
    new DsOrderBy()
        .Prop<User>(o => o.Age).Ascending()
);

Dynamic property access

If you need to access object properties without knowing the object type, DsObject exposes JSON features that allow you to access property values using standard JSON path syntax:

var users = await dataStore.GetManyAsync<User>(
    page: 1,
    perPage: 50
);

foreach (DsObject dso in users)
{
    dso.Serialize(dataStore);

    var lastName = dso.Value<string>("$.LastName");
    var roles = dso.Values(typeof(string), "$.Permissions.Role");

    // etc.
}

Remember: these JSON features are read-only. If you change a property value in the DsObject you will need to call Serialize() again to update the JSON representation.

Screenshots

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: CLSI AMS and shopping platform

Michael Argentini Avatar
Michael ArgentiniThursday, February 1, 2024

The Clinical and Laboratory Standards Institute (CLSI) is a not-for-profit organization that develops laboratory standards worldwide. Our standards are recognized by laboratories, accreditors, and government agencies as the best way to improve medical laboratory testing.

CLSI partnered with Fynydd to create a web platform for marketing their organization, provide member and volunteer services, membership management, and a shop for their Standards documents.

The platform integrated with NetForum and other third party services to provide a single, complete access portal for staff, members, and volunteers.

The shop provided unique pricing, options, and user experiences for anonymous visitors, members, and customers in developing countries. Standards products provided digital samples and full specifications, as well as customized pricing based on the visitor.

A member portal provided everything a member needs to manage their profile, membership details, purchase history, downloadable products, event attendance, membership certification, nominations, volunteer history, and more. It also provided delegates with management tools for authorized employees in their account.

Other tools and features include public file management for volunteer communication and education, outbound links to services such as their eClipse platform and support system, a shopping cart reminder system, product import and publication tools, and so much more.

Some of the key features of the platform include:

  • Based on ASP.NET MVC and Umbraco CMS, hosted on Microsoft Azure
  • Full integration with NetForum AMS, including product data and membership management, e-commerce
  • Complex sales pipeline
  • Complex member management features
  • Catalyst Fire Ignition, SmokeSignal, and Flashpoint integration for enhanced NetForum communication and single sign-on (SSO)
  • Non-destructive product data sync keeps the site online even if NetForum is not available
  • Responsive HTML5 framework
  • Membership management, product sales (e-commerce), blog, news, videos, slideshows, file management, and more
  • Transactional email service for website visitor and shop communication
Screenshots

Key technologies

Front-end

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud back-end

C#

Github

Microsoft .NET

Microsoft Azure

Microsoft Windows

NetForum

SQL Server

Umbraco CMS

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: ATF OST Connect intranet

Michael Argentini Avatar
Michael ArgentiniMonday, January 1, 2024

The U.S. Department of Justice through the Department of Alcohol, Tobacco, Firearms, and Explosives (ATF) partnered with Fynydd to create a secure web portal for their Office of Science and Technology directorate.

The platform was built using the Microsoft SharePoint ITAR platform under the most strict security protocols. This platform is built and configured specifically for secure government use.

Access to this environment required rigorous background checks at the state and federal level for each Fynydd development team member. And the subset of SharePoint functionality offered by ITAR made building in the environment a challenge. In addition, some of our work required travel to meet with the OST team in Washington D.C.

Some of the key details of the project include:

  • Custom SharePoint ITAR environment for U.S. Department of Justice; heavily secured.
  • Integrated metrics, division and branch directories, blogs, self-help support features.
  • Alerts and system status mechanisms.
  • Custom email templates and delivery systems
  • Integrations with other directorate systems and coordination with other directorates
  • On-site coordination in the Washington D.C. office for the Department of Alcohol, Tobacco, Firearms, and Explosives (ATF).
Screenshots

Key technologies

Front-end

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud back-end

C#

Github

Microsoft .NET

Microsoft Azure

Microsoft SharePoint

Microsoft Windows

SQL Server

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Project: New Relic Playbooks

Michael Argentini Avatar
Michael ArgentiniFriday, December 1, 2023

Full-Stack Observability helps engineers plan, build, deploy, and run great software. Only New Relic has a unified data platform for all telemetry data—metrics, events, logs and traces—paired with analysis tools to find solutions fast. Move past the ‘what’ to uncover the ‘why’.

New Relic partnered with Fynydd to create a sales training platform. New Relic needed to train new sales personnel using the latest product information and real-world scenarios to ensure customers were given the best fit recommendations.

They had already approved a WordPress multi-tenant environment for these kinds of use cases so that's the content management system we used. Given the security track record of WordPress we normally don't recommend using it. Since the New Relic IT department was hosting at WPEngine and securing the platform, our concerns were not as serious as they would have been had the platform been on the public Internet.

With regard to security, we also had to integrate with their corporate Okta single sign-on (SSO) platform to restrict the LMS to authorized users in the sales department.

Some of the project highlights include:

  • WordPress Multisite, hosted at WP Engine
  • Responsive HTML5/CSS3 framework
  • Okta/SAML 2.0 SSO integration
  • Shared content and media
  • Multiple author workflows
  • Embedded media
Screenshots

Key technologies

Front-end

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud back-end

Amazon Web Services

Github

MySQL

PHP

WordPress

Want to know more?

There's usually more to the story so if you have questions or comments about this post let us know!

Do you need a new software development partner for an upcoming project? We would love to work with you! From websites and mobile apps to cloud services and custom software, we can help!

Upgrade Windows 10 without a TPM chip

Michael Argentini Avatar
Michael ArgentiniSunday, November 12, 2023

Microsoft (in)famously requires that your PC have a special security chip (TPM) in order to install Windows 11. But the requirement is wholly unnecessary to maintain a secure installation. And it requires many people to buy new PCs, arguing that this is likely the primary reason Microsoft implemented the requirement.

Patching the Windows install to allow it to run on existing hardware without a TPM chip has been a game of cat and mouse. And until now it had again been thwarted by Microsoft.

Recently Microsoft has patched the Windows 11 ‘product server’ trick for TPM check bypass, but the bypass still works with setupprep.exe. This bypass will upgrade Windows 10 clients to Windows 11 without requiring a TPM.

setupprep.exe /product server

© 2025, Fynydd LLC / King of Prussia, Pennsylvania; United States / +1 855-439-6933

By using this website you accept our privacy policy. Choose the browser data you consent to allow:

Only Required
Accept and Close