Services
Company
Blog
Contact
Open Source

Latest Updates / 5

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

How To Copy A Git Repo To Another Location Using Rsync On macOS

Michael Argentini Avatar
Michael ArgentiniWednesday, June 14, 2023

Here's a Mac pro tip: When copying a git repository directory to your network file server using rsync, try this:

rsync -brtlvP --chmod=Fu+w --delete-before Code/MyProject/ /Volumes/MyServer/Code/MyProject/

This will copy the files with timestamps but no other attributes, and will also give the file owner (you) full access rights. This ensures that you (or even Windows users with access rights) can overwrite the directory contents later because local read-only files (e.g. in the .git directory) won't be read-only on the server. You can also change the chmod option to customize the rights, like ensuring everyone has full control.

Install SQL Server 2022 with Full-Text Search on Apple Silicon Macs

Michael Argentini Avatar
Michael ArgentiniThursday, April 27, 2023

It looks like a recent change to Docker has allowed Macs with Apple Silicon to run a full installation of Microsoft SQL Server 2022 with full-text search in a Docker container.

How is this possible? Docker has a new feature that can use Rosetta 2 for x64 emulation. That means it supports creating an x64-based Linux image/container and installing the free but full version of SQL Server with FTS.

Step 0: Enable Rosetta in Docker

Enable this feature in the Docker settings as seen in the image below. Look in Settings => Features in development.

Step 1: Create The Dockerfile

Take the content below and save it as a text file named Dockerfile. This configuration creates an Ubuntu 20.04 image, then installs the Microsoft package repositories, SQL Server 2022, FTS, and MS Tools.

# Docker image with msssql 2022 with full text search enabled;
# Based on work in: https://github.com/Microsoft/mssql-docker

# Base OS layer: Latest Ubuntu LTS
FROM --platform=linux/amd64 ubuntu:focal

# Install prerequistes since it is needed to get repo config for SQL server
RUN export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -yq curl apt-transport-https gnupg && \
    # Get official Microsoft repository configuration
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    curl https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb --output packages-microsoft-prod.deb && dpkg -i packages-microsoft-prod.deb && \
    curl https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server.list && \
    apt-get update  && \
    # Install SQL Server from apt
    apt-get install -y mssql-server && \
    # Install optional packages
    apt-get install -y mssql-server-fts && \
    ACCEPT_EULA=Y apt-get install -y mssql-tools && \
    # Cleanup the Dockerfile
    apt-get clean && \
    rm -rf /var/lib/apt/lists

# Run SQL Server process
CMD /opt/mssql/bin/sqlservr

Step 2: Build The Dockerfile

This will build the Dockerfile and create a Docker image named sqlserver.

docker build -t "sqlserver:latest" .

Step 3: Run the Container

This will create a container from the new image and run it. The sa user will have a password of P@ssw0rdz!, the EULA will be accepted, and port 1433 will be opened.

docker run -d --platform linux/amd64 --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=P@ssw0rdz!' -p 1433:1433 sqlserver:latest

At this point you should have SQL Server running! You can also have it start up with Docker by executing the command below:

docker update --restart=always sqlserver

The iOS-ification of macOS

Michael Argentini Avatar
Michael ArgentiniTuesday, March 7, 2023

Apple's decision to make macOS look and feel more like iOS is aspirational, certainly. If users could seamlessly switch between operating systems and retain muscle memory it would be a big win. It's no wonder that Apple decided to do this with macOS 13 Ventura.

But in practice, Apple's zeal for consolidation has created some real problems for users. In many cases it feels like one step forward and two steps back. I can see how iOS power users may welcome most of the changes to macOS, but that position smacks of Stockholm Syndrome to me.

One of the best examples of this is the redesigned System Settings, which is a mess. I've given it months to “grow on me” and it has… like a fungal infection. The settings are (dis)organized into a single column of top-level categories in a seemingly random order. Devices running macOS have wide screens, so restricting the top-level categories to a single narrow column is an artificial limitation. And it can’t be remedied by resizing the System Settings window because only its height can be changed.

And the organization? macOS has a much deeper and more broad collection of settings than iOS. So as difficult as specific iOS settings can be to find on an iPhone, it’s near impossible on a Mac. And making it worse is the fact that some settings have been organized out of existence, spread out into disparate, counterintuitive categories. Want to tune all your power and sleep settings? You may have to explore a dozen settings categories to find them when they could have been put into an “Energy” category or something similar. Luckily there is a search feature. Without it I’m sure users would be surrounding the Apple Campus with pitchforks and torches.

Also part of this convergence initiative is the Apple decision to make physical keyboards work more like the iOS virtual keyboard, which changes contextually. The difference is that the iOS keyboard changes in appearance so you can infer what's expected. This means that, for example, sometimes you can use the delete key to remove characters to the right of your cursor, and sometimes you can't. It's like an infuriating game. And now when you press and hold an alphanumeric key it no longer repeats, in favor of a popup with extended characters (e.g. foreign characters with accents and ligatures). I suppose that’s handy for people who write in a foreign language. But you would assume that it would be an option, not a change to the original default key behavior. Your keyboard isn’t broken. Apple made it better YOU'RE WELCOME.

Use CSS to Style Elements Adjacent to An Input Based On It Being Empty Or Filled

Michael Argentini Avatar
Michael ArgentiniWednesday, December 21, 2022

Here's an interesting method for styling an adjacent element based on whether an <input> is empty or not.

The traditional method for accomplishing this is to use JavaScript, which involves more complex code that is difficult to write and manage. It would require using a selector to find both elements, determining if the input is empty or not, and altering the styles or class names of the adjacent element.

The method below only requires CSS.

input[type="search"]:placeholder-shown + i {
    /* input is empty */
    display: none;
}

input[type="search"]:not(:placeholder-shown) + i {
    /* input is not empty */
    display: inline-block;
}

In this case I'm hiding and showing a clickable icon that clears the search text if there is any. No JavaScript needed other than the click event 😃.

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!

Software Development is Not Coding

Michael Argentini Avatar
Michael ArgentiniWednesday, June 22, 2022

When asked, most people think that software development is coding; the physical act of programming apps and platforms for servers, computers, and mobile devices. This is not the case.

Software development is the process of solving problems through software. It's a creative process that is centered on discovery and adaptation which uses tactics like programming (coding) to accomplish its ends. Likewise, software development is not the act of reusing existing software for a new purpose. That's just copying bits.

So it is important for those involved in the software development process to understand and acknowledge the following key aspects.

Discovery and adaptation is the focus.

Understanding the problem domain is the key to a successful software development process. And we know the least about a problem domain at the outset. So it doesn't make sense to plan everything out at the beginning. Software development is an exercise in learning. We learn more and more about the problem to be solved as we move through the process. And as the problem domain comes into focus we should be refining or redefining what we should be building as we learn.

Mistakes will be made.

Mistakes help us solve problems and are one way in which we learn. Embrace them. Plan for them.

We cannot predict the future.

Perfect plans are usually perfectly wrong. It is impossible to perfectly know the steps, mistakes, discoveries, interruptions, and goals for a project, nor the time impact of each, all in advance.

Estimates are guesses about the future.

Great software doesn't just manifest in one go. It springs forth in a deficient state and evolves over time. This makes guessing about its future state with any accuracy a fools errand. It also means that creating precise specifications for those guesses can be a waste of time.

Accuracy and precision are not the same. Something can be very precise but horribly wrong. This has been shown by various studies, including those in the Microsoft Press book Rapid Development by Steve McConnell. According to the book it doesn't matter how diligent or thorough an estimate may be. The data shows that when compared to a more broad, high-level, or piecemeal approach based on past experience, the error bounds are largely the same.

Right-fit planning works.

We must understand the level of precision that makes sense. For example, it doesn't make sense to plan an entire project with the same precision as planning next week's work. Likewise, planning specific deliverables for dates far out into the future is also problematic. Small time horizons increase the accuracy of our guesses.

Release often.

By deploying changes frequently, we allow the entire team to steer the direction of the project early and often. This agile approach will ensure that the final product performs as it should for its users.

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: Trinity Vendor Insights

Michael Argentini Avatar
Michael ArgentiniSunday, April 1, 2018

Trinity Life Sciences has been providing large pharmaceutical companies with deep, comparative intelligence for many years and discovered that they all seemed to struggle with finding good vendors experienced with the pharmaceutical industry. Trinity wanted to help them and the smaller emerging pharmaceutical companies solve the problem.

Trinity decided to partner with Fynydd to build an online subscription service where pharmaceutical company employees could review the vendors they use, rate products and services, and see how vendors and services compare within their organization, and across the globe. Likewise, vendors needed to be able to create and manage a profile for their companies, including their products and services.

We collaborated with Trinity to define the needs of their potential subscribers, vendors, and staff. Then we worked on defining the user experience for the key users of the platform. After defining the user experience, we worked on the technical strategy. Based on the platforms and services that Trinity used internally, as well as the needs of the new platform, we decided to implement a custom ASP.NET MVC application with a SQL Server database.

We integrated Salesforce.com to keep a master copy of the data set, allowing subscribers to authenticate using that platform. Vendors authenticate directly with the system. And we built the client side with a responsive framework including SCSS and infinite scroll search results. All of this was hosted in our secure Amazon AWS environment.

Some of the key features of the platform include:

  • Provided pharmaceutical advisor customers with a way to find reliable vendors
    Subscription service (SaaS) for clients and vendors
  • Based on ASP.NET MVC hosted on Amazon Web Services
  • Microsoft SQL Server database
  • Responsive HTML5 with SCSS
  • Salesforce integration
  • Transactional email service
  • Profitable business in under 18 months
  • Driving its own budget for growth
Screenshots

Key Technologies

Front-End

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud Back-End

Amazon Web Services

C#

Github

Microsoft .NET

Microsoft Windows

Salesforce

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: LVHN Bedside Kiosk

Michael Argentini Avatar
Michael ArgentiniTuesday, March 1, 2016
Lehigh Valley Hospital, Cedar Crest Lehigh Valley Hospital, Cedar Crest

Lehigh Valley Health Network (LVHN) is proudly part of Jefferson Health. LVHN's mission is to heal, comfort, and care for people and communities by providing advanced and compassionate health care of superior quality and value supported by education and clinical research.

Lehigh Valley Health Network (LVHN) partnered with Fynydd to build a curated, locked-down "kiosk" learning and entertainment experience for in-room patients. It would be deployed on Apple iPads and rolled out to a limited number of random patients. IT would gather analytics on usage through tracking of the patient's Internet access and in-person feedback. The goal was to try a new approach to educating patients about their care team, as well as what to expect when they go home, and a more enjoyable experience while in the hospital.

HIPAA requires that the device be completely cleared of all personal information between patients, and nurses needed a simple way to reset the devices, and keep patients from navigating into device settings, the App Store, and other areas that would create HIPAA and security concerns.

The first thing we had to do was ensure that HIPAA compliance was possible. After some research, we discovered that by using iOS "Guided Access Mode", we could keep patients in our app, even if the device was locked. We also discussed being able to write a system which would auto-wipe any browser or other history and input from the device whenever the user was taken to the "Acceptable Use Agreement" screen, asking for consent. We also created a shortcut for hospital staff to get there and a passcode so only hospital staff could initialize the app.

The app had lots of information about a patient's care team, what to expect during their stay, and what to do when they get home. They also had access to specific web resources, including a custom YouTube interface with curated LVHN videos.

During the testing phase, armatures which held the iPads were connected to the hospital beds, making it easier for patients in most any condition to use the device. There were no support calls, LVHN IT was able to get the analytics they needed, and some lucky patients got an even better experience.

Some of the key features include:

  • 4 months to MVP
  • API integrations
  • Github source code repository management
  • Native iPadOS app development
  • Server security audit
  • Technical research, consulting
  • Secured access to iPad
  • iPad data wiped and reset between patients
Screenshots

Key Technologies

Front-End

Apple iOS

Github

Swift

Cloud Back-End

Amazon Web Services

ASP.NET

C#

Github

Microsoft Windows

SQL Server

YouTube

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: ICPA Association Membership Website

Michael Argentini Avatar
Michael ArgentiniTuesday, July 1, 2014

The International Chiropractic Pediatric Association (ICPA) strives to create a healthier and more balanced planet. The ICPA is a 501(c)3 nonprofit organization whose mission is to advance chiropractic by establishing evidence-informed practice, supporting excellence in professional skills and delivering educational resources to the public. What began as a dream from founder Dr. Larry Webster in 1986 to better train chiropractors in family care has grown into a global mission to support the health and well-being of families worldwide.

ICPA was growing and needed a new business/client management system for their global chiropractic membership and decided to partner with Fynydd. Their back office was decentralized, using tools like Microsoft Access, which made it difficult for staff to collaborate in workflows. Consequently, many of their processes were performed manually, which was a poor use of membership funding.

Organization members could not view any details about their membership, seminar registrations, subscriptions, payments, etc., which added to their growing customer service. Web forms relied on the user to supply the correct information for what they were requesting, which resulted in a lot of bad information being stored, which had to be cleaned up manually in many cases.

We started by working with ICPA to understand their business pain points. We then collaborated on defining workflows, so we knew what each type of user should experience through different funnels. We then defined the information architecture, and spent time building a complex import tool which would transform data from various sources into this new structure. It was challenging, but allowed us to import over 30,000 contacts dating back to the 1990s; about 3gb of data. It was like they hadn't missed a beat!

The platform we chose was Umbraco CMS, which would become a multi-site web host as ICPA consolidated their other online presences into the new system. Within Umbraco we built a responsive HTML5 framework that looked great on tablets and phones. Next up was Stripe integration, which was used to process payments (including automatic renewals), and which is completely PCI-compliant. And Constant Contact was integrated for their newsletter subscriptions.

In all, this business management system is much more accessible, even outside of the office and on mobile devices. Employees have much more time to focus on tasks that matter instead of mundane, repetitive tasks. And the new system easily handles membership and certification management, seminar registration, blog, product sales, help center, and more.

Some of the key features of the platform include:

  • Based on ASP.NET MVC and Umbraco CMS, hosted on Amazon Web Services
  • Full integration with Stripe for PCI-compliant payment processing
  • Integration with Constant Contact
  • Membership & certification management, seminar registration, blog, product sales, help center, and more
  • Organization management features
  • Automation for smoother operations
  • Responsive HTML5 framework
  • Transactional email service for website visitor and shop communication
  • Significant decrease in customer service calls
  • Employees are more productive
  • The system is much more accessible, even outside of the office and on mobile devices
Screenshots

Key Technologies

Front-End

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud Back-End

Amazon Web Services

C#

Constant Contact

Github

Microsoft .NET

Microsoft Windows

SQL Server

Stripe

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: Endo Jumpstart Video Training Program

Michael Argentini Avatar
Michael ArgentiniTuesday, April 1, 2014

The Endo Pharmaceuticals sales department needed to improve the previous year's compliance training per regulatory requirements.

The previous platform was a step in the right direction, but had some hiccups regarding availability and consequently, a timely pass rate. Reporting on the activity and results, especially during the training period, was minimal, so executives had no way to know how the training was proceeding, in case they needed to intercede early and make adjustments, or report back successes.

It was clear from their challenges that there were some real opportunities to improve the entire training process. So Endo chose Fynydd to be their technical partner. We started by addresses availability. It became clear that the primary bottleneck was with the video hosting as it was on-premises. We worked with Endo to establish a private, secure, video content delivery network (CDN) at vimeo.

The next focus was on reporting. We gathered all the requirements and created a strategy for presenting regional analytics that gave stakeholders exactly what they needed to see.

To make it all happen, we chose Umbraco CMS to speed the product to market and provide the underpinning for membership, authentication, and of course, content management. The result was stunning. Over 2,500 people were trained in 2 weeks. There was 100% availability, and most importantly a 100% pass rate. And there were less than 10 support calls.

Some of the services we provided include:

  • API integrations
  • Bandwidth and traffic analysis
  • CMS development
  • Technical research, consulting
  • User experience strategy and design
  • User interface design

Some of the key features of the platform include:

  • Based on ASP.NET MVC and Umbraco CMS, hosted on Amazon Web Services
  • Microsoft SQL Server database
  • Responsive HTML5 with SCSS
  • iPad web app
  • Secure Vimeo training video CDN
  • Transactional email service
  • Over 2,500 users trained in 2 weeks
  • Less than 10 support calls
  • 100% deployment
  • 100% pass rate
Screenshots

Key Technologies

Front-End

CSS3

HTML5

JavaScript

Sass/SCSS

Cloud Back-End

Amazon Web Services

C#

Github

Microsoft .NET

Microsoft Windows

SQL Server

Umbraco CMS

Vimeo

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!

Fynydd Presents At 2012 UK Semantic Tech & Business Conference

Michael Argentini Avatar
Michael ArgentiniFriday, June 22, 2012

We'll be presenting the following topic at the 2012 UK Semantic Tech & Business (SemTech) Conference:

Building a Semantic Enterprise Content Management System from Scratch
2012 UK Semantic Tech & Business Conference
Millennium Gloucester Hotel, London, England
Thursday, September 20, 3:45-4:15 PM

Detail on our program is available on the SemTechBiz UK 2012 site. The conference runs September 19-20. We hope to see you there!

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!

© 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