My Blog List

Tuesday, April 12, 2022

Building Your Own App? Don't Make these Mistakes!



Building Your Own App? Don't Make these Mistakes!

Whether you’re a new developer looking to break into the industry, or an experienced professional looking to start your next big project, chances are you’ve probably encountered the same challenges and errors over and over again. 
This article will help you avoid common pitfalls and give you valuable insight on how to succeed as an indie developer. Have you ever thought about building your own mobile app? Or do you already have an idea in mind? If so, this guide is for you! Keep reading to learn more about the field, the specifics of app development, as well as essential tips and advice on how to succeed as an indie developer.

What is an App?

An app is a software for mobile devices that allows you to perform certain tasks through the use of smartphones and other mobile devices. One of the biggest differences between an app and a website is that apps can be downloaded to a mobile device and run on that device, meaning you can’t use it from a computer.
Apps can perform a variety of functions, including messaging, social media, banking, health tracking, navigation, and more. Apps are especially popular in the health, fitness, and wellness sectors, with apps like Fitbit, Strava, and Runkeeper becoming popular among smartphone users.
Apps can range from simple text or image-based programs to more complex programs that allow users to perform various tasks, such as banking or ordering food. The most popular apps can earn developers millions of dollars each year, making app development a profitable and lucrative career path for anyone with a passion for technology.


Getting Started with App Development

If you’ve always dreamed of creating your own app, but you don’t have any coding experience, the best thing to do is to start small. Build the foundation for an app idea you’re interested in, and then expand upon that when you’re more experienced.
While there are plenty of sites and courses available to teach you how to code, the easiest way to get started is to get input from others in the development community. Post your app idea to social media and community forums, and see if anyone has similar ideas or wants to collaborate on an idea with you.
If you’re still unsure about the app idea you have, you can also try building a proof of concept app. Build an app that demonstrates the basic functionality that you want in your app, and then use that as a basis for your final idea.


Knowing the Basics of Programming

To create any type of software, you’re going to need to know how to code. If you’re just getting started with app development, or if you’re a developer who wants to branch out into app creation, you should learn the basics of programming.
Coding is a skill that requires focus and discipline, but once you learn the basics, it’s an imminently practical skill that can be applied to many areas of life.

- What Is Code? 
- The Development Lifecycle 
- The Development Process 
- Why Learn Programming? 
- Finding Programming Resources 
- Understanding How Apps Are Created


The Beauty of Developing an App

There are many reasons to love app development, such as the financial opportunity, the flexibility of building an app, and the ability to work on a project that you can actually see coming to fruition.
One of the biggest advantages of app development is that it’s an ideal career path for people who don’t have a background in computer science.
In fact, there are many successful app developers who have only a high school education or less.
As long as you have a passion for creating apps and have enough drive and perseverance, there’s no reason you can’t make a career out of app development.


The Dark Side of App Development

The downside of app development is that it’s time-consuming and challenging, and if you fail, you can lose a lot of money.
It takes hard work and dedication to succeed as an app developer, and the success rate is low. While the financial rewards can be high, the expense of hiring developers, software, and other expenses associated with app creation means that one wrong move can easily be costly.


Tips and advice for indie developers

You can’t become an app developer overnight. It takes time to learn new skills and build a foundation, and it takes even longer to build a successful app business.
That being said, the best way to succeed as an indie developer is to immerse yourself in the app development community. Join online forums, read articles, and talk to other developers who are actively creating apps.
There’s no better way to learn from others and get valuable insight from other developers than to actively participate in the community.
Another key tip for success as an indie developer is to create an app that solves a genuine problem for your target audience. This will make it easier for you to gain traction with your idea and make it easier for users to adopt your app.


Conclusion

Developing an app can be a lucrative and profitable career path, but it takes time and dedication to succeed. The best way to succeed as an indie developer is to immerse yourself in the app development community and actively participate in forums and read articles.

Friday, April 8, 2022

How to insert multiple records using an editable grid in Appian



Hi, Appian Developers! I hope you all are doing well and safe. Today we are going to learn to insert multiple records for customer in a database table named tbl_customer using an editable grid in Appian. I would clear in the starting, you must be certified with Appian Associate Developer, so it will be easy for you all. First I will tell you the whole requirements and what we are going to implement here.

Requirement:

Let’s consider, that we have a tbl_customer in the Appian cloud database. And this table has the following fields as

·      customerID
·      customerName
·      emailID
·      phoneNumber
·      profilePicture
·      description
·      createdBy
·      createdDate
·      isActive

You can see the below screenshot for how does your table looks like.

Now, we want to insert multiple customer details in one go instead of adding them one by one. It means we will add the multiple customer data from an interface using an editable grid in Appian.

e.g., Customer1, Customer2, Customer3, and Customer4 will have their own CustomerID, CustomerName, emailID, and so on. By implementing this, we are not required to add the n number of customer details one by one. So, without wasting our time, let’s switch to Appian Designer Console. As I am using the free community edition of Appian, I have my own Appian Designer console. You can also request your instance by clicking on this link https://community.appian.com/

 

I am creating a new application named “Practice for Appian” as below screenshot.

As I have checked the box in yellow highlighted in the above screenshot.

It will create some default folders and groups for me. This feature is available in only Appian version 21.4 release or later. Now click on the save button and you will see your application is created with default objects with folders and groups as below.


First, we will create our Data Store for our application which helps to establish a connection between our database and application. To create the Data Store, please click on the new button and select Data Store as below screenshot.

You must enter your datastore name and description as below.

Now click on Create button and choose your security for datastore object and click on the Save button as below.

Note: Once your CDT is created, do not forget to verify and publish your Data Store.

As we have already created our database table, so now we will create our CDT. To create a CDT, please click on the New button and select Data Type as below screenshot.

We will create our CDT using "Create from a database table or view" and select your Data Source name and table as below.

Now you must enter your CDT name and select your Data Store which we have created as above. Please see the below screenshot for your reference.
Once your CDT is created, now we will create a Constant for our entity as below.
Both Datastore and CDT have been created, now we will create our interface using an editable grid. To create an Interface, please click on the New button and select Interface as below.

Please enter your Interface name below.
Now click on Create button, and you will see the below window.
Now switch to expression mode and paste the below code into your Interface.


Once you pasted the above code, you will see what your interface looks like as below screenshot.

Wow, Congratulations!!! Our interface is ready to insert the multiple customer data into our database table tbl_Customer.

Let's add a few customer details to the form and click on Submit button as below.
Congratulation...!!! 💓💓💓

Successfully, we have inserted our 5 customer details into the database table. As you can see from the below screenshot for our table record.

Note:
I have created two constants, one is to save the customer profile picture, the constant type is a folder, and the second is for CDT, the constant type is the Data Store Entity. And Please add one rule input as items to your interface.

I have used a!writeToDataStoreEntity function on Submit button in the interface to save the customer data into the database table.

Please see my below objects for the application.



I hope, this blog will help you to understand the use of an editable grid within the interface.

Thank you so much for your time.

Please comment if you have any issues regarding the same.

Happy Coding! ✌💓


Tuesday, January 25, 2022

What are the NEW features added in 21.4 Appian Release?

Hello, Appian Developers!

Hope you all are doing well and safe in this pandemic. So, today we are gonna learn about the new release of Appian i.e, 21.4 Appian Release. In this article, we will talk about the new things added to the 21.4 release of Appian. The Appian team is working hard and coming up with the new features, functions etc in its every release.

As far I have gone through the academy videos and community, I found that New features are added from mainly 6 topics which are newly added to the 21.4 Appian release.

  1. Automation
  2. Interface Design
  3. Records
  4. App Deployment and Monitoring
  5. Application Design
  6. Mobile App Development
I have not covered all the topics which are added to the 21.4 Appian Release. I covered the important features which are added to this new release, especially helpful for the freshers to Appian.

Records:

Skip Failed Syncs:

Now Appian introduced a new feature to Records, you can skip failed syncs. It means if your record type got syncs failed, this new feature will skip the failed syncs and it will simply use the data from the last successful sync.
You can turn Off-On skip failed syncs from record type object as below screenshot.



Alerts for Failed Syncs:

Now record type admins and system admins will receive an email if any syncs are failed or skipped without configuring any additional steps. This email alert will explain the details about record type failures and how you can troubleshoot to resolve this issue.





Important Points about Record Type:
  • A single batch can be retried up to 3 times before failing.
  • Up to 10 retries total before the entire sync fails.
  • Enhancements to the record type object.
  • "Search" is now "Search and User Filters" and "Views" is now "Views and Headers".
  • Improved layout for configuring the record views.

Interface:

Appian introduced the new feature in the Interface i.e, Card Choice Component as a virtually engaging alternative to checkboxes and radio buttons.


We can also decorate the bar with cards to attract and enhance the user experience in terms of UI design.


Introduced two new interface patterns Tabs(Cards) and Tabs(Lightweight).


Appian introduced some new functions as below:

  • a!keys()
  • a!isNullOrEmpty()
  • a! isNotNullOrEmpty()
  • a!doesGroupExist()
The main feature which I love the most in the 21.4 Appian release is that now New Application will add the groups and folders automatically. While creating a new application, you can see an option to check if you want the application to create groups and folders automatically.


Once you checked the checkbox, you will see the below popup window that will show how groups and folders will be added automatically.


It will also use them in any new objects you create in the application which started with the application itself.


it specifies the default securities for the new objects.


 
Appian improved its searching functionality to search the applications faster by using the prefix of the application name.

Powerful New Design Capabilities:

  • Wizards
  • Custom Validations
  • Cascading Dropdowns
  • Conditional Displays
Please like and share if you like the new features of the 21.4 Appian release.

Happy Learning 😊!

Sunday, January 9, 2022

Appian Associate Developer | Certification Exam Questions-Answers | L1-Certified Developer

Hi all, 

I hope everyone is doing well in this pandemic. Today I come up with an interesting topic about Appian Associate Developer which talks about the questions and answers for the L1 certification exam.

It might be some of few haven't heard about Appian, so I would like to tell you in short about What is an Appian?



Appian is a technology that is a low-code automation platform that enables customers to automate the most important aspects of their business. Oh! it might be not meaningful, in a simple way we can say that Appian is a tool where we can build applications rapidly with the help of drag and drop features as it has a low-code platform. Appian is the best BPM tool to develop the business workflow rapidly. Low-code enables building the apps rapidly, building once, and running/deploying anywhere as it is platform-independent. 

So, it is the overview of an Appian whatever I have explained above it. Many of you might be completed their training through Appian Community or their company, so this blog gonna help you a lot for your certification exam preparation for Appian Associate Developer.

I have tried to cover most of the questions asked in my certification exam and some of them I added as I am learning.

Let me tell you about the online exam first, there will be 60 MCQ questions and you will have 60 minutes to complete the exam, there are no negative marks. You have to score 62% to pass the exam. After the exam completion, you will receive an email where you could see your result as a Certified Associate Developer.

I am giving the right answer for each question, so you have to remember and please read the questions carefully before choosing the answer.

You will have the question from 3 topics, Appian, Database, and the Agile methodology.

Q1: How many pages we can use in Sites?

Ans: 5

Q2: Who will prioritize backlog refinement?

Ans: Product owner

Q3: How to send alerts to user groups?

Ans: By using custom error alert setting

Q4: How to start a process model from an Interface?

Ans: a!startProcessLink

Q5: User wants to select one particular color from a group of colors, what is the best approach?

Ans: Dropdown component

Q6: What is the batch size to retrieve all the data?

Ans: -1

Q7: What is the lowest level of permission required to delete a folder?

Ans: Administrator

Q8: Which environment is most common for user acceptance testing?

Ans: Staging environment

Q9: In the life cycle of scrum master, what is the definition of ready?

Ans: A list of criteria that a user story needs to meet in order to be added to a sprint.

Q10: A product owner and some or all of the team are reviewing our planning to the product owner's feedback. Which Agile ceremony is being described?

Ans:  Sprint Planning

Q11: Most accurate reason to use database view?

Ans: Views definition automatically update when dependent data structure tables are changed

Q12: When should you select the option to Create a new version of the XSD file?

Ans: When datatype (CDT) configurations are not acceptable through a datatype CDT designed

Q13: Primary key contains null values?

Ans: False

Q14: You want users to get back-to-back tasks, what will you apply in-process model?

Ans: Activity chaining

Q15: You want to generate documentation for a process model which two security permission can achieve this?

Ans: Editor and Administrator

Q16: If you enable more than one language in the user input task

Ans: configure the form tab of the task in each language

Q17: Which statement regarding starting a process is true?

Ans: Process messaging must be used to start a new process from within a running process

Q20: There is already data available outside the Appian. How do you get this data to Appian to create a record?

Ans: Service Backed

Q21: What is the output of ("="(Len(HELLO,5)) ?

Ans: =10

Q22: How to pass the input from the interface to the nested interface?

Ans: Rule Input

Q23: Life cycle of Appian Delivery Methodology?

Ans: Initiate, Build, Release, and Optimize

Q24: Which function allows you to trigger a process on interface revaluation and remain on the task?

Ans: a!startProcessLink

Q25: Process has multiple end nodes where each node is configured with the default in which situation will this process be terminated?

Ans: When the system administrator manually terminated the process

Q26: Appian best practices, what is the naming convention for an Interface?

Ans: <app_prefix>_NewRuleName

Q27: Appian best practices, what is the naming convention for a Constant?

Ans: <app_prefix>_NEW_CONSTANT_NAME

Q28: What purpose do default test values serve when creating an interface?

Ans: Pre-populated rule inputs give designers a representation of what end-user will see

Q29: Which option is most appropriate to assess the performance of a single interface?

Ans: Performance View

Q30: Existing record type, where do you go to select between a grid or a feed view?

Ans: In the list tab of the record

Q31: Given a direct URL to access a record view which configuration would allow the user this access?

Ans: Record type security is all that is required

Q32: Which Appian's objects don't have any security?

Ans: CDTs and Group Types

Q33: What does the recordType! domain do?

Ans: References data from a record

Q34: You are adding a new related action to a record which statement is true about this task?

Ans: After selecting a process model the context section is used to populate process model parameters

Q35: You need to create a record list that displays a link in one of the column cells which field property should you use for the link?

Ans: Display Value

Q36: You are looking for helpful checklists, tools, techniques, examples, and best practices for implementing Appian and managing Appian, which Appian resource should you use in this scenario?

Ans:  The developer playbook

Q37: Three roles of Agile?

Ans: Product owner, Scrum Master, and Developer

Q38: Deployment rollback is possible in the Appian?

Ans: No

Q39: What is Agile?

Ans: Agile is a Software development methodology

Q40: We can use JavaScript and Bootstrap in the Appian?

Ans: False

Q41: Interface cannot be reusable?

Ans: False

Q42: Which smart service will you use to save the data in the database?

Ans: Write To Data Store Entity

Q43: Daily scrum meeting for?

Ans: 15 minutes

Q45: CDT stands for?

Ans: Custom Data Type

Q46: What are the primitive data types in Appian?

Ans: Integer (Number), Integer (Decimal), Text, Boolean, and Date

Q47: Can we trigger a sub-process from the main process?

Ans: Yes

Q48: Name some functions which have no parameters?

Ans: loggedInUser(), now(), today() etc

Q49: Which function will add the new item in an array?

Ans: Insert()

Q50: Which function will you use to merge to array?

Ans: merge()

Mostly I have covered the important questions and answers for the Appian Associate Developer certification exam. I hope it will help a lot. If you found any wrong answer kindly comment. If it is helpful for you please share it as much as possible. All the best for your Exams.

Thank you for your time to read this blog😊.

Please comment if you want more articles about any technologies.

Sunday, September 27, 2020

Razor Page CRUD in ASP.NET Core 3.1 with jQuery AJAX | Visual Studio 2019 for Mac | CRUD on Single Page | MySQL

In this tutorial, we will learn a clean and simple way to implement Razor Page CRUD in Asp.Net Core with jQuery Ajax and Bootstrap Modal. This is the Entity Management Set of CRUD operations which doesn't reload the  Pages, we can call it Single Page Application.




Table of Contents:

  1. Scope
  2. The Architecture
  3. Getting Started with Razor Page CRUD in ASP.NET Core
    • Setting up the Project
    • Setting up the Core Layer
    • Setting up the Infrastructure Layer
    • Setting up the Asp.Net Core Project
    • Rendering Razor Partial View to String

Scope 

There are the things we will be implementing in our CRUD Application. This will be an Employee Management System.

  • Data Annotations for Validations
  • jQuery Validations and Unobstructive Validations - Client Side Validations
  • Bootstrap Modal
  • Dyanamic Loading of Partial Views via Ajax Calls
  • Repository Pattern with Unit of. Work
  • Onion Architecture Solutions
  • jQuery Datatables

The Architecture

To keep things simple and clean we will be using onion architecture with inverted dependencies.

We will create three layers in this project repectively Web, Core and Infrastructure.

Getting Started with Razor Page CRUD in Asp.Net Core 3.1

Let's create the required projects, here I am creating the Web project first using Visual Studio 2019

for Mac.

Setting up the Projects



Setting up the Core Layer

Let's add a new project withing the same solution and name it Core. This will be created as .Net Core Library 3.1


Let's add two folders Entities and Interfaces in the Core Project. And under the Entities folder, create a new class and name it Employee

To follow the Repository pattern, we will add a new interface and name it IGenericRepositoryAsync under the Interfaces folder in Core Proejct Layer.

So we have a generic repository. now to use this generic interface for a specific entity like an employee along with extra methods, we will add a new interface and name it IEmployeeRepositoryAsync

Let's add the unit of work



We have completed everything for the Core Project Layer, now let's move to create Infrastructure Project Layer as we did for the Core Project layer.

Setting up the Infrastructure Project Layer

Let's install the below-required packages for Infrastructure Layer



Now that you have Entity Framework Core installed at the Infrastructure Layer, let’s add the ApplicationDbContext in-order to access the database. (We will be setting the connection string to the database later in this article at the Web Layer.)

Create a new Folder in the Infrastructure Layer and name it Data. Here add a new Class and name it ApplicationDbContext.cs



Add a new folder in the Infrastructure layer and name it Repositories. Here add a new class, GenericRepositoryAsync.cs



As you can see from the above, almost all the CRUD operations ever needed for any entity is covered. T could be any class and you already have an entire class that could Perform Create, Read, Update and Delete Operations on the T Entity. But also see that we are not saving anything directly to the database via the Repository Implementation. Rather we will have a separate class that is responsible for Committing changes to the database. You should have heard about Unit Of Work, yeah?

Create another new class and name it UnitOfWork.cs in the Infrastructure layer.



Let's add the last implementation which is responsible for performing the CRUD operations specific to Employee Entity.



Setting up the Asp.Net Core Project


Let's install the below-required packages for the Web project layer.



With that done, open up the Startup.cs. Here we will have to add the services/dependencies to our ASP.NET Core Container. Navigate to the ConfigureServices method and add the following. Note that you would have to fix the reference warnings that may occur.



We should add the connectionString in our appsettings.json file... So let's move to add ConnectionStrings



Now we need to add the migrations. if you want to know how to add Migrations so click here to Add Migrations

Let's install the jQuery Datatables into our Web project and add the reference for DataTables in _Layout.cshtml file as below.



Since we are already here, let’s also add the skeleton of the Bootstrap Modal that we are going to use further in the article. Above the footer tag, add the HTML for the Modal. Note that the Modal Body is empty. This is because we will be filling it dynamically via jQuery AJAX with Razor Partial Views.



There is already a site.js file under the wwwroot/js folder. So let's add the below code. Here we'll add the 3 functions which will be required for CRUD operations and it's the important part of our project which allows us not to reload the pages.
GetAll() - Loads all the Employees from the database to the jQuery DataTables.
CreateOrEdit() - This functions do the Create or Edit an employee.
Delete() - It deletes an employee from the database.

Now the missing pieces to the puzzle are as follows:

1. Razor Partial View to Hold the jQuery Datatable.
2. Razor Partial View to Add / Edit Customer.
3. A way to convert Razor Views to String, so that jQuery AJAX can fetch this string and simply overwrite the existing div / DOM object on the HTML. (This was particularly tough to figure out.)
4. And finally, our C# Handler methods that will return the partial views as requested by the AJAX calls.

Let’s start with the _ViewAll.cshtml. This will hold the HTML table definition and also the script needed to activate jQuery Datatable. Under the Pages folder in the Web Project, Create a new Razor View (Empty) and name it _ViewAll.cshtml.

Next, Let’s create the Form, CreateOEdit that will have all the fields we require. This is again a straight forward piece of code snippet. Create a new Razor Page View (Empty) and name it _CreateOrEdit.cshtml and add in the following.



Now we required the partial views, so let's add the following code in our existing Index.cshtml file



Rendering Razor Partial View to String


Now, the question is, We have Razor Partial Views and AJAX, how do you convert Razor Partial Views to Strings / HTML. The answer is to create a service that can do so. In the Web Project add a new Folder and name it Services. And in it, create a new class and name it RazorRenderService.cs




Let's add the below services into the Startup.cs as in ConfigureServices method.



This is the final part of the puzzle. The actual Index.cs. Open it up and add the following.



Now you can build your all projects and run the application... :)

 
Please comment if you face any issue in code.

You can download the Source Code from GitHub

Read my previous blog on ASP.NET Core 3.1 MVC CRUD Operations

Below is a small video of my running application...




Friday, September 25, 2020

ASP.NET Core 3.1 MVC | EntityFrameworkCore | Visual Studio 2019 for Mac | CRUD Operations | MySQL

Today we will create an asp.net core MVC application using EntityFramework and MySQL Database with Visual Studio 2019 for Mac.

This is a simple CRUD operation for an Employe using ASP.NET Core 3.1 and EntityFrameworkCore


Prerequisites:
  1. Visual Studio 2019 IDE for Mac
  2. Make sure you are running the latest .Net core 3.1
  3. Install the latest DOTNET and EF CLI using this command: dotnet tool install --global dotnet ef
  4. MySQL database should be installed on your Mac

Getting Started:

         Open the Visual Studio 2019 for Mac and Create a New Project as below

    
     Please select the .Net Core 3.1  as below


        I created a new project with the Name, "DotNetCore" and below is the Solution structure which
        is created by VS2019.



        Let's install the few mandatory nuget packages as below

                        1. Microsoft.EntityFrameworkCore
                        2. Microsoft.EntityFrameworkCore.Design
                        3. Microsoft.EntityFrameworkCore.Tools
                        4. MySql.Data
                        5. MySql.Data.EntityFrameworkCore

        Now let's add a New Class name "DotNetCoreDbContext" under the Models folder by 
right-clicking
        and select Add New Class.


        Now let's write the code for this class.
        We have to inherit our class from the DbContext class by using Microsoft.EntityFrameworkCore
        
        Now let's add a New Class name "Employee" under the Models folder.
        
        
        Now add our class into DotNetCoreDbContext as below
        
        Now we need to write code for ConnectionStrings in appsettings.json file
        and modify the Startup.cs file as below
        
        Next step to add the Migration to create the Database in MySql

        Run below command w.r.t your project folder path on Terminal
        
        To Add-Migration:
        dotnet ef migrations add InitialCreate

        To Update-Database
        dotnet ef database update

        To Remove-Migration:
        dotnet ef migrations remove

        After adding the Migration, we can see our database has been created into the MySql database

        We can see our created database dotnetcore including the Employees table.


           Now let's add the controller name "EmployeeController" using Scaffolding as below
        
            

        We will use the same action for Create and Edit an Employee.
        Let's write the code for AddOrEdit action into EmployeeController
        
        Now let's add the view page for AddOrEdit action under the Views/Employee folder

        
        We have written the code to create and edit an employee, added the view page also.
        Now let's build our solution and run the application.
        Let's create 3-4 employees by entering the required fields as below

        Let's write some action methods to Index, Details, and Delete an employee as well

        Below are the screenshots for Index, Details, and Delete action methods

        https://localhost:5001/Employee/Index


        https://localhost:5001/Employee/Details/1



        Now let's delete the Harshit Kumar record... it will show an alert popup message as below


        Harshit Kumar record has been deleted from the database as we can see the below
    
        

           Below is the Employee table screenshot



        I hope it will help you :)
        
        Please comment if you face any issue regarding the same...

        You can download the source code from GitHub by click on the below link

Below is the video of my running application: