Posts

Showing posts from 2023

Build Customer Loyalty into your Application

Image
  When designing and building a software solution, you must always keep your users in mind.  These may seem like minor details or not worth the coding effort but saving your users time, money and even their business can go a long way to building customer loyalty.   Here are a couple real-life little UX and system changes that had a huge impact on a user or even a company. "Could I just hit enter" This question came from a user of a sales ordering software application.  At the top of the Orders screen, there was a text box where the user would enter a sales order number.  They then would tab or use the mouse to click a lookup / find button.   As a team, we thought the UX was very cool, just 2 steps to look or find an order.  We had a session with the user to show off our new UI, with all the bells and whistles.  They were very polite and liked what we showed. At the end, we asked a simple question, "What do you think?".  She said it was nice, but would it be possible

Live data updating in Blazor

Image
  Providing live data updates or data synchronization in a multi-user environment has always been a bit challenging.  I have been chasing how to do live updates and day sync between desktop applications, web applications, and even temporarily disconnected clients. I have worked with Sales applications and legal applications where users needed to work but did not have access to the internet or a network.  Even though I was able to provide a solution, they were too complex and too hard to maintain for what I care for. Thanks to ZetBit , I was able to find an awesome solution to move forward with. This solution is only using Microsoft SQL Server and a cool Nuget package called SQLTableDependancy .   For this solution, you need to enable the Service Broker in SQL Server.  This will generate events when records in the database are added, edited, or deleted.  Using the SQLTableDependancy class you set event listeners for what tables you want to listen to. Thanks to the Blazor being designed

Add a PWA feature to our Blazor Maui Hybrid application

Image
  I have been working on a series of posts about the Maui Hybrid solution.  I create a desktop and Blazor web assembly web client that uses the same code for the UI and the same code for their backend services. Just for fun or to see if it is even possible, I wanted the ability to deploy the solution as a Progress web app as well.  This gives users an additional way they can get the application and use it.  I have an older post about why you would want to build a PWA. Turn Blazor Web Assembly web client into a PWA The steps are fairly straightforward to archive this: 1. Create a Manifest File:       This is a JSON file that provides information about your application (such as name, author, icon, and description) to the browser. It's typically named manifest.json and placed in the wwwroot directory of your project.  Here's a basic example: {   "short_name": "BlazorPWA",   "name": "Blazor Progressive Web Application",   "icons":

Maui hybrid Desktop and a Web client share the same database

Image
  In the first couple of posts on Maui Hybrid, Let's Make a Blazor Hybrid app and Blazor Hybrid application, and a Blazor Web application , we covered the basics of creating our Maui hybrid application and a Blazor web assembly application, all using the same UI.  These 2 projects worked nicely together.  It worked nicely. My next step was configuring the Maui hybrid desktop to access the same database as the web client.  Seems easy enough. Turns out it is.  What we need to do is check to see if we are running in a hosted environment, if so, make a call to the server API to get the weather data.  If not, just use the local source. In my demo, I am using the data source from which the Blazor sample app comes, but you could also easily use a database.  Changes to the WeatherForecastService We need to add a flag to the WeatherForecastService to let it know if we are in a hosted mode or not.  To achieve this we add a parameter to the constructor:         private bool hosted = false;  

Maui Hybrid application and a Blazor

Image
Since Java first came out, I have been trying to use the same code for both a desktop client and a web client. It was easy to do this for the backend. Getting a shared UI across a desktop and a web client that provided the same experience, was not possible.  Add in the support for Android and iOS and you end up with 4 UI code bases, 4 UI teams, 4 QA teams, etc. Maui Blazor Hybrid to the rescued. With Maui Blaozr I can finally achieve that goal. In my last post, "Let’s Make a Blazor Hybrid Application!" I showed how to create a simple Maui Blazor hybrid application.  I now took the next step, added a Blazor Web Assembly application, and using the Shared library, I created a hosted web client and a desktop client, with the same UI. Here is how I did it. Desktop Application Create a Share UI library project Move the Pages Folder into the new library Move the Shared Folder into the new library Move the CSS folder into the new library Create a new Shared Service Library Move the W

Let’s Make a Blazor hybrid Application!

Image
    Maui has been out for a while now and I thought I would learn how to create a Blazor hybrid application and see what it is about.   There are blog posts and YouTube videos on how to do this so, see the links below. I am not focusing on the step-by-step but on what I learned by doing this exercise. It will help others.   Prep Work           You will need to make sure you have the Maui project templates installed in Visual Studio.           Go to the VS installer.         a.      Click the modified button.          Make sure under the Desktop and UI Development the .Net Multi-platform App UI development is checked, see image.        If not check it and click modify to install it.     Create the Project 1.      Open Visual Studio and click on “Create new Project.” 2.      Find the .Net MAUI Blazor App box and click it. 3.      You can pick .Net 6 or higher.   Run the Application You can launch the application the way you normally launch your ap

Do you work for a Software Company or a Company that Sells Software?

You may be asking yourself, what’s the difference, plenty.  If you are a developer who only codes because it is your job and you make a good living, which there is no problem with that, you may not enjoy working for a software company. Both companies need those types of developers.  But if you align yourself as a software engineer, who likes solving problems and is passionate about the profession of Software development, then you want to work for a Software company.  A company that makes and sells software is usually founded by a domain expert who wrote or had a friend write an application he needed, and they started reselling it.  A software company has usually evolved from a company that sells software but learned that the value they are providing to their customers is a high-quality system and high-quality customer support that improves the user’s lives.   My goal is not to state that one type of company is better or worse than the other, my goal is to make you aware to see what

Blazor Design System (Part 1)

Image
  I have mentioned in several previous posts that I have a long list of Blazor applications that I want to build.   I did a self-driven analysis of the structure and hurdles of all the different applications I have written and the applications I have planned to develop.   I found patterns to slow starts.   My new goal is to eliminate the built-in excuses for not even starting these new projects by building a design system. From my analysis, I found out I get stuck on several decision hurdles:                1.        Colors        2.        Layout        3.        Authentication        4.          Database Use        5.        User Controls        6.        Data Grid controls The challenge is to remove as many of these barriers to starting new projects.   I think I have a new system design that will provide me with most of this solution.   I will be explaining the solution in this multipart post where I will dive into each design area and explain how I have streamed-lined m