Skip to content
Power Digital Services
Menu
  • Content Creation
    • Article Writing
  • Blogger Outreach
    • Web Site Promotion
  • Web Design
  • Digital Marketing
    • SEO Services
  • Our Technical Expertise
  • Partner With Us
  • Blog
  • About Us
  • Contact

Tag: blogger outreach methods

blogger outreach
Blog

How to Start and Scale a Blogger Outreach Campaign?

Introduction Blogger outreach can be defined as working in partnership with bloggers to reach new audience and promote a brand. Since bloggers aka influencers already have a significant following, they …

Recent Posts

  • Guide to Xamarin IOS App Certificate Provisioning and Profile Setup

    Microsoft’s Xamarin programming platform is provides an excellent tool for cross-platform mobile application development. A key part of successful development for iOS is understanding how to provision certificates properly. The iOS distribution certificate ensures that the code of the app originates from the organization that signed the app and has not been altered. So basically its a way of registering your xamarin.ios app to apple and ensure the uniqueness of your app. Here are the steps to create a certificate and profile on Apple’s website to develop an iOS app. Here are the steps to create a production certificate: Log into your Apple Developer account and navigate to Certificates, Identifiers & Profiles. Add a new certificate. “Under Create a New Certificate” section select “Apple Distribution”. if you are using Xcode which has version less than 11 then you should select “iOS Distribution (App Store and Ad Hoc)” Click On continue To proceed with the next step you need a Certificate Signing Request (CSR). You leave the Apple Developer interface as is now and come back later when you have created a CSR. Steps to create a development certificate: Log into your Apple Developer account and navigate to Certificates, Identifiers & Profiles. Add a new certificate. “Under Create a New Certificate” section select “Apple Development”. if you are using Xcode which has version less than 11 then you should select “iOS Distribution (iOS App Development)” Click On continue To proceed with the next step you need a Certificate Signing Request (CSR). You leave the Apple Developer interface as is now and come back later when you have created a CSR. Preparing the Signing of the Certificate: You need a Mac for the next steps. In case you work on another operating system contact your Customer Success Manager to get further support. On a Mac, open the Keychain Access program. In the menu bar, navigate to Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority. The Certificate Assistant opens and creates a Certificate Signing Request (CSR) that is submitted to a certificate authority that verifies the information in the request. Enter your Apple ID and email address in the dialog. Click Continue. Select a folder for saving the CSR file. Click Done. Finalizing the iOS Distribution Certificate: Go back to the Apple Developer account where you started to create a certificate. Click Continue. Select the CSR file you just generated. Click Continue. The certificate is created and signed. Download the newly created certificate. Click Done. The certificates overview with your new certificate is displayed. Double click the certificate, it will be embedded in the key-chain access. Steps to create a production provisioning profile: Log into your Apple Developer account and navigate to Certificates, Identifiers & Profiles -> Profiles Add a new certificate. Under the “Register a New Provisioning Profile” section select “App Store” from the “Distribution” section. Click On continue From the drop down menu, select your app ID. Click Continue. Select the certificate you just created. Click Continue. Fill in the name of your choice. The name is not visible to end-users. Click Generate. Download the provisioning profile. Click Done. The provisioning profiles overview with your new provisioning profile is displayed. Double click the downloaded profile, it will be embedded in the key-chain access. Creating the Provisioning Profile of Type Ad Hoc: In your Apple Developer account navigate to Certificates, IDs & Profiles > Identifiers > Provisioning Profiles. Add a new provisioning profile. Activate Ad Hoc. Click Continue. From the drop down menu, select the app ID you just created. Click Continue. Select the certificate you just created. Click Continue. Fill in the name of your choice. The name is not visible to end-users. Click Generate. Download the provisioning profile. Click Done. The provisioning profiles overview with your new provisioning profile is displayed. Double click the downloaded profile, it will be embedded in the key-chain access. Reference Links: https://developer.apple.com/support/certificates/ https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/DevPortalGuide/CreatingandDownloadingDevelopmentProvisioningProfiles/CreatingandDownloadingDevelopmentProvisioningProfiles.html#//apple_ref/doc/uid/TP40011159-CH23 https://clearbridgemobile.com/how-to-create-a-distribution-provisioning-profile-for-ios/ We hope you found this tutorial helpful.  Feel free to contact us if you have questions.

  • Guide to the Many Client-Side Frameworks

    There are two sides to web development – the server-side and the client-side. A server-side framework typically uses a programming language with a compiler and runs on a web server, such as Apache, ASP.NET or many others. A client-side framework typically is a type of JavaScript library and runs in a Web browser. To simplify your choice of a JS framework to utilize client-side development, ideally you will want to limit your options to several broadly supported solutions. For client-side development, a solid list of JavaScript frameworks includes React, Angular (Angular 2 or higher), Vue, Backbone, and Ember. First, modern frontend JavaScript frameworks must respect the Web Components specification. In modern client-side development, you will build custom HTML elements which all of the frameworks we’re reviewing support Web Components. Second, a solid JavaScript framework should have its own ecosystem. Ready solutions aim at solving various problems of client-side development such as routing, managing app state, and communicating with the backend, to name a few. Here is an overview of the major client-side frameworks to consider. React  React became very popular in the JS arena a few years ago to become a clear leader. React has what is called the reactive approach and a functional programming methodology. React created what at the time were very unique concepts and approaches to front end web development. To get started with React, you will need to learn how to work in a component-based architecture called JSX and unidirectional data flow. In this case, the unidirectional data flow is implemented by Flux. Angular 2 and Higher Angular 2+ was a major step forward in the development of the Angular framework. Starting as a solid Backbone competitor, AngularJS (read: Angular 1.x versions) nearly became obsolete when React came out. With version 2, Angular has substantially changed its architecture to become more competitive with React. Vue Vue is very much a mix of concepts taken from Angular and React. For example, Vue enables the developer to store component logic and layouts along with stylesheets in the same file which is similar to React. There are many other examples. Vue can be used for building user interfaces and single-page applications. Backbone and Marionette The Backbone framework is a RESTful JSON interface and what is known as an MV* framework. The MVC architecture is partially implemented by Backbone. Backbone is a lightweight framework, as its only critical dependency is on the Underscore.js library as well as jQuery for use of the full library. It was designed to be used primarily for developing single-page web applications and also for keeping various components of web applications properly synchronized. The Marionette framework simplifies your Backbone application code with robust views and architecture solutions. Ember Ember is an older framework like the Backbone and Angular JavaScript frameworks. In the word of their web site its “battle-tested”. Even though it may be older, it doesn’t mean its not current or useful. With Ember you can implement component based approaches to application development similar to the other listed here. Many aspects of how Ember works have in fact been implemented by the other frameworks. Useful Related Links: https://www.freecodecamp.org/news/complete-guide-for-front-end-developers-javascript-frameworks-2019/ https://rubygarage.org/blog/best-javascript-frameworks-for-front-end https://angular.io/ https://reactjs.org/ https://vuejs.org/ https://www.codeinwp.com/blog/angular-vs-vue-vs-react/ We hope you found this post useful. If you have questions, please feel free to contact us.

  • The Importance of Business Continuity Planning

    2020 is turning out to be an extremely challenging year for businesses and economies around the globe due to the Covid-19 (aka coronavirus) pandemic. All sizes of businesses from the Fortune 500 companies to small and mid-sized businesses and entrepreneurs are being hit hard.  No one is being spared. This unprecedented and challenging phenomenon can help demonstrate the importance of a business’s capability and preparedness to weather a disaster. For the big, multi-national corporations, continuity and disaster recovery plans are part of their business planning process. But for small and mid-sized businesses, this type of planning is often overlooked. This leaves them ill-equipped and unprepared for such unforeseen events as the Covid-19 outbreak. What is a business continuity plan? A business continuity plan (often abbreviated as “BCP”) is a plan that outlines systems and processes to help a business recover from potential threats, such as natural or man-made disasters. It ensures that a business’s assets and employees will be protected and able to recover quickly in case of a disaster and continue providing services. A business continuity plan protects every aspect of your business – physical business location and equipment, personnel, inventory, data, and intellectual capital. If your business faces an uncertain and challenging event, a business continuity plan can, at least, mitigate the loss and the damage brought by that event and provide a clear set of steps to recovery. Whether the type of business you have is a corporation or a small business, every business should have a business continuity plan. The word “disaster” instantly reminds you of natural catastrophes such as earthquakes and tropical storms or man-made crises such as wars and any other large-scale armed conflict. These events can leave a massive trail of physical destruction and losses behind. However, this perspective is narrow and leaves many businesses vulnerable. Disasters can be in the form of the following: loss of access to a physical establishment or building; loss of systems or data; loss of a key team member; and loss of a key supplier or vendor. In the case of Covid-19, most businesses encounter at least one of these losses. The Covid-19 outbreak has also threatened the lives and safety of the employees, especially those with key roles for and within the business. It has also had the unique effect of separating employees from the resources they need conduct business.  It requires in this case the ability to work remotely and manage as much as possible at a distance (e.g. social distancing). With business continuity planning, many businesses will still be able to conduct operations remotely, which keeps key systems (such as operations and accounting) remain accessible. Cloud infrastructure (or cloud computing) means storing and accessing data and programs over the Web, instead of your computer or laptop’s hard drive. It provides a valuable tool for businesses because it offers excellent data security. It is also a reliable and highly available platform for data storage and systems access. No matter where you work or no matter the circumstances, information, and programs will be at your fingertips, thanks to cloud infrastructure. But this is the factor that most businesses tend to overlook, considering this is one of the most crucial things any company can do to protect themselves for any eventuality. Tips for developing and using a business continuity plan Now that you are aware of how a business continuity planning is essential, you should take time to create and develop your business continuity plan. While the plan can be tweaked according to your business’s specifications, the following lists the basics that will help streamline the process. These tips will help you create the most effective and efficient business continuity plan. Create a template – No matter how different businesses are, they all have the same basic and necessary information. A template will save you a great deal of time and effort in starting to create your own business continuity planning. Download these templates from FEMA or TechTarget and update them with your business information. Make your planning easy to implement  – If your business continuity planning is confusing and lacks organization, how can you execute it effectively and on time? To make your business continuity planning easy to implement, you should include clear step-by-step instructions, agendas, or checklists that outline what exactly needs to be done. Adding helpful visual aids such as flow charts, diagrams, and graphs will make your plan much easier to understand and execute. Extend the estimated recovery time – Developing a business continuity planning involves lots of making assumptions, theories, and estimations. What would happen if your business meets disruptions? What will it need to be done? And how long will it take time to recover? One of the ways to make sure that your business will recuperate is to extend its recovery time. That way, the extra time will give your business some breathing room during its recovery phase. Test it out  – A business continuity planning won’t work if you create it, then sit there and “hope for the best.” You will never know how useful the planning will be if you don’t put it into practice. Test it out (and test it thoroughly) and plan several run-throughs to ensure that every of the most crucial business areas is covered, incorporated, and adequately prepared for. Regularly update your information – Having created your business continuity plan doesn’t mean you do not have to update it. To avoid leaving your program in the dust, you should devote the necessary time to make sure that it’s comprehensive and accurate. Plan regular check-in schedules (at least every six months) to examine, review, and update all the necessary information in the document – including the business location, contact information, personnel, strategies, etc. Share the information with your key personnel – Everyone who has crucial roles in the business continuity plan should be aware of it. Make sure that they have a clear understanding of the plan and the tasks they will perform in Read More

  • Tips for Diagnosing NGINX Internal Server Errors

    NGINX is a popular open source web server that aims to be an alternative to Apache with better performance on handling large volumes of requests. As with any technology learning how to configure it properly and troubleshoot errors can be challenging.  If the configuration is incorrect, it can affect performance and ability of the web server to handle the load demand.  That great looking web site can quickly go downhill if the server is slow and starts returning blank pages (500 errors). A 500 error is http code meaning that something went wrong with the server. If the site always gives 500 that could be an issue on the website. If the site is working correct and it gives a 500 then it could be a time out issue caused by a lot of connections. Here are the key technologies involved in this discussion: NGINX (Version 1.4.6 and later) Linux (Ubuntu 14.04 and later) Here are two of the key configuration parameters to look at: worker_processes – Is a single thread process. This means that it will execute in a sequence way. We typically set this at 1 worker process per core CPU worker_connections – Is the maximum number of simultaneous connections that can be opened by a work process. We typically set this at a value of 1024 * the number worker_process. If we have 2 worker process and 1024 worker connections. We will be able to server 2048 clients Nginx uses an asynchronous, event-driven approach where requests are handled in a single thread. And it was built for high-traffic websites. Below are the steps that you need to review in order to setup and mitigate server errors: Find out how many CPUs the system has configured, you can do this with the following command under a terminal session: $ grep processor /proc/cpuinfo | wc -l That will give you the # of processors, in this example it is 2 Edit Nginx Config – For Ubuntu is located in the following directory:/etc/nginx/nginx.conf Look for the worker_processes in nginx.conf and set it to match the # of CPUs – which is 2 in this example: The optimal value depends on many factors including (but not limited to) the number of CPU cores, the number of hard disk drives that store data, and load pattern. You can start with setting it to match the CPU cores, but you might be able to increase it if there are more overall resources in the system to handle load, or you may need to decrease it if there are other bottlenecks that will limit the worker processes..  Next look for worker_connections and set it to be the number of CPUs * 1024. In our example that is 2 * 1024 = 2048. Worker connections is the number of simultaneous connections that can be opened by a worker process.  You can tweak this as needed based on your results. Useful Reference links: http://nginx.org/en/docs/ngx_core_module.html https://serverfault.com/questions/787919/optimal-value-for-nginx-worker-connections https://gist.github.com/denji/8359866 https://www.digitalocean.com/community/tutorials/how-to-optimize-nginx-configuration We hope you found this post useful. If you have questions, please feel free to contact us

  • Using Technology to Improve Customer Service

    Customer service is more than just necessary. You may say that it is one of the cornerstones of a business, whether it be a large corporation or a small or mid-sized business. A business’s success and continuity depend on how efficiently it interacts with its customers. The quality of service will either enhance or degrade a customer’s loyalty to your brand and business. With the state of the economy in our challenging environment, customers have more choices than ever. Businesses gain a competitive advantage when they respond promptly to the questions, complaints, orders, requests, or anything else that their customers need to be addressed. That is why it is important to understand that the use of new technology can help you anticipate customers’ demands and tailor business processes to serve them better and faster. These activities, in turn, will ultimately improve the efficiency of your business, while at the same time significantly reduce operational costs and improve its security. A good way to start is to set a manual or paper-driven process as an example. A lot of companies, which lack real IT leadership, still follow this procedure. Here’s a scenario of such a process, and how automation can help this situation: A customer sends you an email with an order in it. Depending on the business it might even be via social media or other avenues. You (or someone else in the business) reads the email and manually adds the information to a spreadsheet. You send the spreadsheet to a decision-maker who will review the information in it. You may even check the customer’s payment and credit history. Once the order is approved, another email is sent to a vendor. The accounting department records it in the accounts payable system. A confirmation email is sent to the customer. The product (the customer’s order) arrives, and the shipping department sends the packing slip or bill of lading to the customer service department. If you have a services business the completion of the order might be the delivery of a simple email and awaiting confirmation of receipt. Someone from the customer service department receives the completion notification, packing slip or lading bill and reads it. Using the spreadsheet, they find the customer, whom the product was ordered for, and emails the customer with an update. The packing slip or lading bill is sent to the accounting department, who then records it as a payable. As you will notice in this scenario, there are multiple steps involved with a lot of people in it. In business, the saying “time is money” still applies –  not just for the company, but also for the customers. This is where automation enters the scene. Automated customer service will give your business an added value for your customer and help you maintain your competitive edge. A customer service automation (or a customer support automation) is a purpose-built process that aims to minimize or eliminate the need for human involvement when providing service to a customer’s requests, orders, etc. The implementation of new technology can help through automation and rule-based decision making. Let’s see how the same scenario would look like with automation: A customer uses your mobile app or a web portal to order a new product. Citing that the customer has placed an order before, the system knows the products they usually order and quickly displays the choices to them. The system receives the new order and records it. The system applies business rules you control, which dictates whether your order request can be approved, and the vendor (or the internal build team) is notified. An accounts receivable record is entered. The customer service and the department managers are notified. Using your new company portal, they can check every aspect of the order and business from a perspective that involves their job function. Automated processes bring many benefits to businesses and their customers: It saves time for the customers. It saves time for the business by minimizing or eliminating manual processes. It helps your business to get back on track quickly in case of an absence of key personnel. It has made managing, sharing, and analyzing data easier. It provides convenience and personalized transaction experience for the customers. It saves operational costs. It enhances capacity, security, and reliability. No matter what type of business you are being it working with physical products or delivering services, customer service is critical and today’s modern technologies can significantly impact and improve your business.

  • Ideas for Businesses to Leverage Internet Technology

    When you think about using internet technology for your business, the obvious things that may come to mind are email, web sites, and office productivity tools.  The list might also include some applications such as QuickBooks for accounting or Salesforce for customer relationship management.  Technology has the power to significantly impact your business productivity, improve customer relationships, scale operations, and improve employee relations, among other things. Here we present a set of ideas to consider for your business that can have a high impact and reward. Productivity and Business Acceleration This is always on the mind of any business owner or manager. How do you get more done with the same or fewer resources?  Technology can significantly improve your production processes, whether you are providing services or hard goods.  There are tools available to help you analyze how your staff spends time and how your resources are utilized.  By using these tools, you can make your systems and business processes more efficient. Task management tools can ensure you accurately and effectively manage daily responsibilities and projects to ensure nothing is missed and work is done in a timely manner and with maximum productivity.  Email management is also a critical factor in ensuring the productivity of your business is maximized.  Timely review and responses to emails can be the vital lifeblood of your operations. Another goal for businesses is the concept of business acceleration.  Technology can impact your business operations by accelerating the speed at which you operate.   One classic example is mail.  Physical mail (snail mail) can take days or weeks to be drafted, send, and received and responded to.  With email, this time can be reduced to minutes or hours.  That is a significant acceleration in a key business process – communication.  This can be true of any number of areas of your business, including financial transactions, production management, and more. Time Tracking Software – Even if you’re using this tool today, are you using it to your maximum benefit? Are you analyzing the data looking for opportunities to utilize employee time more effectively? Are you maximizing billable hours for consultancies and agencies?  If you’re not using time tracking software, then it’s definitely something to consider. Project Management – There are many tools available today, ranging from classics like Basecamp to relative newcomers like Asana, Wrike, and Monday, among others. Each has its own strengths and niches that they are particularly well suited. The proper implementation of a project management system can revolutionize how you work and manage projects, customers, and team members. Digital Filing – This is an easy one to overlook. If your business operations deal with a lot of paper, it’s time to take a close look at how that entire process can be made digital and organized. Categorization, tagging, and cloud access can significantly accelerate your business operations. Email Management – If individuals in your organization are bombarded with dozens, hundreds or even thousands of emails every day then email management tools can have a significant positive impact. Regardless of using tools or not, having clear processes for ensuring email is properly managed can have benefits. Digital Dictation – Do you or your team communicate a lot? Are you on the go? Would it help to speak and dictate and send?  It might not be something you have thought of before.  With nearly everyone having a mobile phone, cloud-based data, and real-time access, this could be a game-changing change for your business. Upgrade Your Resources – Servers, laptops, phones, software, etc. play a part in how quickly your operations execute. Make sure you have the proper up-to-date resources in place to keep everyone and everything operating and peak efficiency.  Outdated technology, for example, can be a significant hindrance to effective operations. Financials It goes without saying that it is critical for every small business to have an accounting system.  Having the right system can impact your business operations with features such as real-time access, lender integration, banking integration vendor integration, and more.  Many cloud-based solutions provide a host of features, including solutions such as QuickBooks Online, Xero, Wave, and many others.  These solutions can help you control costs, project budgets, estimate revenues, and much more. Here are some other specific solution considerations: Invoicing Management Service – Use an online invoicing service that will help you manage the process of invoicing as well as tracking and collecting payments. Inventory Management – Even if you deal with small quantities of inventory, this directly impacts your financials and core business operations. E-Commerce – Selling online in today’s world is almost a given. But are you doing it well? There are many solutions available today, such as Shopify and others, that can significantly improve and accelerate your online e-commerce presence.  If you are not doing e-commerce, it’s something you should consider.  Even if you have a services business, providing easy ways for customers to order and connect online can have significant benefits. Marketing Companies who market themselves properly reap the rewards in the long run. Technology has created software that allows businesses to formulate a marketing plan – one that can be updated and shared with your team. Technology allows you to build professional, eye-catching web sites while social media platforms like Facebook, Twitter, and Instagram are great ways to promote your business to targeted audiences.  Email marketing can also be effective, allowing you to reach out directly to your customers with news, updates, and special offers. Here are a few ideas to consider for your marketing initiatives: Invest In Your Online Presence – Needless to say, having a web site is important. It’s also very important that your web site is effective, modern, and has the right messaging. There are so many excellent web site building tools for basic DIY work, or you can hire a professional firm for help. Either way, this is a must, and if your site is outdated or lacking, it should be a top priority. Go Social – This topic has been Read More

  • Tips for Designing and Building Build a Minimum Viable Product

    For small businesses, new start-ups and even large enterprises looking to introduce a new product to the market, the concept of a Minimum Viable Product (MVP) is probably the best way to test your idea to the customers. No, we’re not talking about Tom Brady or Lebron James type MVPs, but a different MVP – the minimum viable product needed to go to market. A minimum viable product is the most basic form of a product. It is the simplest version of a product with just enough usable features needed for testing and basic usage purposes – to meet customers initial requirements and importantly for the business to be able to obtain feedback for future product development. One of the cornerstone principles of an MVP is to test your product concepts and features with actual target customers. These customers are the ones you are carefully observing and monitoring while gathering information from them. As you release various iterations of your product for early alpha and beta testing, at some certain point, you find that sweet spot of those most basic features that provide a workable solution to your end-users. This is going to be your MVP. One of the advantages of the MVP is that you are able to gather insights from your customers while keeping your expenses low by building a “bare-bones” version of your product. This is a much better approach than developing a product with full features that maybe only driven by informed guesses. Not only it is quite costly, but it also increases risks of loss if the product fails because of mistaken assumptions. You may like the full version of the product you have created and designed, and you assume that your target customers will like it too. They may, but they also may not. By implementing the MVP, you are able to launch your product quickly, which is based on your concept, on a low budget. Through this, you will be able to gather feedback from your customers quickly and include that feedback in the next iterations. The MVP will enable you to gather ideas based on experience, find the right audience, and save time. How to build an MVP? Building an MVP is striking the right balance between what your business offers to users, and what the users actually need. The purpose of an MVP is testing out your theory to minimize errors. This method helps you in gathering quality feedback by targeting specific users or groups. Here are a few general strategies in building a successful MVP: 1. Define the problem you’re attempting to solve It’s easy to get caught up in ideas of a specific product and forget the problem you’re trying to solve. But if you want to build a successful business, you shouldn’t focus on the product you want to create. Instead, create the product that customers actually need. Focus more on the problem instead of the solution – chances are, the product you have originally envisioned won’t be the best way to solve the problem. 2. Find the simplest solution to the problem Now that you have gotten attached to the problem, it’s time to begin planning for the solution. If you are a developer, you might end up designing elaborate functionality with fantastic features, because it’s something that you’re good at, and something that you enjoy doing. The problem is, it takes a lot of time and money to develop that elaborate functionality. Even if you have plenty of time and resources to pull off a perfect product – with all of these desirable features included – you can still face a huge risk because nobody would want to use it. They won’t even just care for it. Instead, find the simplest way to solve the problem. Develop the simplest version of the product, which contains the most basic features to test your assumptions. These assumptions include: does the problem exist? Is the problem really important? Can we solve the problem? 3. Give the basic features a top priority In order to come up with the simplest functioning version of the product, you have to identify the “must-have” features that you can’t do without and save the “nice to have” features for future iterations. The “must-have” or core features of a product are the ones that are inextricably linked to the product’s functionality. The most fundamental elements of your product constitute the foundation of your MVP. 4. Don’t think about efficiency for now In order to improve and grow, your product needs to be efficient and scalable. However, it is not feasible to do it at this stage. Instead, you can afford to develop a product that lacks efficiency and scalability but has the basic and usable functions. You can think about efficiency in the later iterations of your product. For the time being, though, you’re only putting your fundamental assumptions to the test. 5. See the MVP as a stepping stone Don’t think of the MVP as an end-goal; instead, treat it as a stepping stone. You aren’t generating profits just yet – you may even lose some money along the way – and you aren’t trying to expand your product as quickly as possible. See the MVP as a way to make the best use of learning. With your MVP being planned out, you can begin developing. But keep in mind that development is not intended to complete the process. Instead, development is just the beginning of a feedback loop – first is to build, second is to measure, and third is to learn from it. And then, this feedback loop starts all over again. It goes on and on until you have developed a product with features that end-users exactly need. You can expect that user feedback may vary at this stage. You may receive a lot of positive feedback, which means you’re heading down the right path. Some feedback, though, may tell you that you have failed and indicate you’re going in Read More

  • An Introduction to Amazon Web Services Simple Storage Service – S3

    With the development of cloud computing and the move to working online increasing, data storage needs can grow exponentially. This is particularly true if you are working with images, videos and other large data objects. Amazon’s Simple Storage Service, S3, provides a straightforward platform to scale to your storage requirements in a flexible platform. S3 is part of Amazon’s Web Services (AWS) platform that provides object storage via a web service interface. Key benefits and features include: Nearly unlimited data and object storage of just about any type of data. Built on a Reduced Redundancy Storage (RRS) framework which stores data in regional buckets to reduce latency of data access from different geographic locations. Strong authentication to ensure security Data access can be done via Representational State Transfer (REST) or Simple Object Protocol (SOAP) web services which are commonly used on many different development platforms. Static web sites can be hosted on the S3 infrastructure. S3 Bucket A bucket is the logical storage container for your objects. When you start out to load data into S3, you have to create a S3 bucket in a specific region. By default, its possible to create up to 100 individual buckets in each of your AWS accounts and up to 1000 by requesting service limit increase. Once the bucket is created, you can begin uploading data objects. Once the bucket is created, you can then use the API to manage it. To make a REST API call to S3 in your application, you will compute the signature to add to your S3 request (see more here). Storage Classes   Amazon S3 offers different storage classes that offer different levels of durability, availability, pricing and performance requirements S3 provides different types of storage classes that provide different options: S3 Standard: General purpose storage for any type of data, typically used for frequently accessed data [Price: $0.023 per GB] S3 Intelligent – Tiering: Automatic cost savings for data with unknown or changing access patterns [Price: $0.023 per GB] S3 Standard – Infrequent Access: For long lived but infrequently accessed data that needs millisecond access [Price: $0.0125 per GB] S3 One Zone – For re-createable infrequently accessed data that needs millisecond access. [Price: $0.01 per GB] S3 Glacier – For long-term backups and archives with retrieval option from 1 minute to 12 hours [Price: $0.004 per GB] S3 Glacier Deep Archive – For long-term data archiving that is accessed once or twice in a year and can be restored within 12 hours [Price: $0.00099 per GB] S3 Pricing There are basically three factors that go into determining the total cost of using S3: The amount of storage The amount of data transferred every month The number of requests made monthly In most implementations, only the storage amount and data transferred significantly impacts the cost. Here is the pricing as of the writing of this post: Storage Amount: In general Cost is $0.023/GB (varies depending on the storage class). Cost is based on total size of objects in the S3 Bucket Outbound Data Transfers: You pay around $0.09 per gigabyte. Charges are determined by the amount of data transferred from S3 to the Internet and data transferred between AWS regions Web Requests: The cost of web requests really focuses on GET and PUT Requests, which cost around $0.005 per 1,000 requests. You can estimate your cost using the AWS calculator https://calculator.aws/#/createCalculator Conclusion Amazon’s AWS infrastructure provided access to a massively scalable infrastructure that can power your cloud application and business needs. S3 can be used to maximize those storage needs. It can be a bit confusing and complicated to get started with so make sure you allow enough time to do learning and testing on how to best implement.

  • Introduction to Asana

    Asana is one of the most popular project management systems on the market today. It is a web and mobile application designed to help teams manage, organize, and track their projects. It allows you to make task management simpler and easier. Like many other work management platforms, Asana is a collaborative application that promotes transparency and visibility and encourages users to concentrate on their business goals and objectives. But unlike other project management tools, Asana prides on its user-friendly interface and smart features that enable team members to communicate in real-time, share plans, track the progress of the project, and get insights from views and reports. Company history and profile Asana has been around since 2008, the year when Facebook co-founder Dustin Muskovitz and former Facebook and Google engineer Justin Rosenstein founded it. The two men saw the need to coordinate teams more efficiently within the social network giant’s operations. Soon, they realized that tech giants were not just the ones that could benefit from better efficiency. After leaving Facebook, Moskovitz and Rosenstein founded Asana (a Sanskrit word, which means “yoga pose”). They launched a free beta version of the application in November 2011 and then released it commercially in April 2012. At the end of 2018, it was valued at $1.5 billion. As of September 2018, the application is now used by around 50,000 paying customers, including big-name companies like Bed Bath & Beyond, Spotify, Uber, and even NASA. How does Asana work? Asana is a cloud-based software that enables work colleagues within an organization’s Asana workspace to manage, organize, and track the progress of their projects. You may organize workflows for HR teams to manage the onboarding process for new hires, or create tasks to monitor individuals who are involved in a bigger project. Users can add tasks and assign them to their team members, set priority tasks and deadlines, share relevant documents, and comment on them – and it’s all in one place. It also allows you to follow projects and tasks in every stage in order to stay on track of the project. The members are notified of the status of their tasks, as well as approaching deadlines, through email. Unlike other project management tools like Smartsheet and Trello, Asana is much less complicated, which makes it relatively easy to use. It aims at a wide range of business professionals. One of Asana’s key strengths is its product design. Instead of an overwhelming number of features seen in other project management tools, Asana follows a minimalistic approach, providing a flexible framework that team members can use across the organization for planning and tracking projects. Here is an overview of Asana’s key features: Activity feeds Add assignees, attachments, and hearts to tasks Automated updates to email  or inbox Create custom calendars and views Email integration Events and meetings Kanban support (Asana has boards) Gantt charts (Asana has Timeline) Group discussions Multiple workspaces My tasks list and Focus Mode Notifications and reminders iPhone support, HTML5 mobile site Prioritization Project and task creation Project permissions Project sections and search views Real-time projects Searched views See team members’ tasks and priorities Set project permissions Tags and comments on tasks Task dependencies Track tasks and add followers As you can see, Asana has always been handy because of its rich set of useful features. Despite that, its user-friendly interface makes learning project management less complicated. You can find all the key features mentioned above literally in one place on the left-hand menu panel. All actions that you perform in Asana are done by just a single click. No annoying confirmation pop-ups! Create a task in only a single click, assign it to a team member, and track all the activities in the project. Uploading a file is also easy, as you can just drag and drop it for every project. When you get assigned to a task or project, trust Asana who will ensure you get notified on any updates via email. Despite its simple user interface, Asana is otherwise a powerful tool. But what makes it more powerful is its mobile app, which can be downloaded on iOS and Android. Using Asana’s mobile app provides you with pretty much the same experience that you are using it in your PC or laptop. Installing and setting up the mobile app is easy, and now you can get updates anytime, anywhere. The coolest thing about Asana’s mobile app is that it’s absolutely free for download! It’s just the tip of the iceberg. Asana has so much more to offer that could work for your business other than assigning and tracking tasks and projects. You can integrate it with other software such as Gmail, Outlook, Jira, and many others. Asana offers four payment plans: Basic, Premium, Business, and Enterprise. The Basic plan is pretty much what it is labeled. It has the most basic features, such as list view projects, calendar views, and status updates. It supports up to 15 members with limited access to dashboard features s well as unlimited tasks, projects, and conversations. It is ideal for individuals or teams who are just getting started with project management. The Premium plan costs $10.99 per user, per month when billed annually (or $13.49 when billed monthly). It has a lot more features, such as admin controls and single sign-on. It also provides users access to the use of dashboards and team size. The Business plan costs $24.99 per user, per month when billed annually (or $30.49 when billed monthly). It has additional features such as custom rules builder, approvals, proofing, salesforce integration, portfolios, and Google SSO, among many others. The Enterprise plan offers a much more advanced admin controls, custom branding, as well as security and data protection features (including data deletion and cross-regional backups). Prices are available upon request (and depend on which features shall be included).

  • Overview of SAML 2.0 Single Sign On Authentication with Coding Example

    Security Assertion Markup Language (SAML) version 2.0 is an XML-based protocol that uses security tokens containing assertions to pass information about a principal (usually an end user) between a SAML authority, named an Identity Provider, and a SAML consumer, named a Service Provider. Note: See the bottom of this post for a useful SAML glossary of terms. A typical scenario for implementation is: Your user is logged in to a company web site or a commonly used web site The user needs to access an external system that has an account for the user already configured. Ideally the user would be able to seamlessly access the external system with out having to login again. In this scenario, SAML integration can be implemented between the currently system and the external system. SAML provides a standard for logging users into an application based on their session in another context. This single sign-on (SSO) login standard has significant advantages over logging in using a username/password: No need to type in credentials No need to remember and renew passwords on different systems Helps to eliminate the use of weak passwords If the user should no longer face access it can be turned off for all integrated systems Most organizations already know the identity of users because they are logged in to their local domain. It makes sense to use this information to log users in to other applications, such as web-based applications, especially cloud hosted solutions. How SAML Works SAML SSO works by transferring the user’s identity from one place (the identity provider) to another (the service provider). This is done through an exchange of digitally signed XML documents. Consider the following scenario: A user is logged into a system that acts as an identity provider. The user wants to log in to a remote application, such as a support or accounting application (the service provider). The following happens: The user accesses the remote application using a link on an intranet, a bookmark, or similar and the application loads. The application identifies the user’s origin (by application subdomain, user IP address, or similar) and redirects the user back to the identity provider, asking for authentication. This is the authentication request. The user either has an existing active browser session with the identity provider or establishes one by logging into the identity provider. The identity provider builds the authentication response in the form of an XML-document containing the user’s username or email address, signs it using an X.509 certificate, and posts this information to the service provider. The service provider, which already knows the identity provider and has a certificate fingerprint, retrieves the authentication response and validates it using the certificate fingerprint. The identity of the user is established and the user is provided with app access. There are many tools and services available to help implement SAML with in your system infrastructure and applications including for your own code as well as third party services that can be integrated. Coding: SAMTool Tool Kits – https://www.samltool.com/toolkits.php Node module – https://www.npmjs.com/package/saml2-js OneLogin sample code – https://developers.onelogin.com/saml Spring Security SAML – https://projects.spring.io/spring-security-saml/ ComponentSpace – https://www.componentspace.com/ Third Party Services: Okta – https://www.okta.com/products/single-sign-on/ Auth0 – https://auth0.com/ OneLogin – https://www.onelogin.com/ RSA – https://www.rsa.com/ Idaptive – https://www.idaptive.com/ Broadcom -https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/layer7-identity-and-access-management/single-sign-on/12-8.html PingIdenty – https://www.pingidentity.com/en/platform/platform-overview.html Example Implementation with ASP.Net and VB.net Here is an example of using ComponentSpace’s SAML for ASP.NET component.  A specific URL is called for the login and the XML assertion data is signed using X509 Certificates for security purposes. A X509 certificate is the public part of the SSL that we install for websites. You can download it from the browser’s certificate view when you have the website open for example. The Identity Provider (IDP) in this case could be a link off an internal web application.  When the user clicks that link to a page on the external system, a SAML response is submitted to the external system.  The external system then captures the response, parses the XML and authenticates it as follows: The response is captured It is verified using the X509 certificate Encryption of assertions is optional. Some implementations may not send encrypted assertions so we simply verify the source using the X509 certificate. Some implementations will use encryption and in that case, they must use your X509 certificate because only then will you be able to decrypt it using your private key. Once the data is retrieved from SAML response which typically includes an agreed upon identifier of the user that is used by both parties – the user can be validated against your system and granted access. Here is sample code using ASP.Net, VB.Net and the ComponentSpace tools. Imports System.Configuration Imports System.Collections Imports System.Security.Cryptography.X509Certificates Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Imports System.Xml Imports System.Security Imports ComponentSpace.SAML2 Imports ComponentSpace.SAML2.Assertions Imports ComponentSpace.SAML2.Protocols Imports ComponentSpace.SAML2.Bindings Imports ComponentSpace.SAML2.Profiles.ArtifactResolution Imports ComponentSpace.SAML2.Profiles.SSOBrowser Imports System.Collections.Generic Public Class SAMLLogin Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load Try ‘Receive the SAML response. Dim samlResponse As SAMLResponse = Nothing Dim relayState As String = Nothing ReceiveSAMLResponse(samlResponse, relayState) Catch exception As Exception Throw exception.Message End Try End Sub ‘Function to Process SAML Response. Private Sub ReceiveSAMLResponse(ByRef samlResponse As SAMLResponse, ByRef relayState As String) ‘Start of code block to receive response Dim CertificateFile As String = CERTIFICATEPATH Dim PrivateKey As String = PASSWORD ‘ Receive the SAML response. Dim samlResponseXml As XmlElement = Nothing ServiceProvider.ReceiveSAMLResponseByHTTPPost(Request, samlResponseXml, relayState) ‘End of code block to receive response ‘Start of block to verify the response signature If SAMLMessageSignature.IsSigned(samlResponseXml) Then Dim x509Certificate As X509Certificate2 = DirectCast(LoadCertificate(CertificateFile, Nothing), X509Certificate2) If Not SAMLMessageSignature.Verify(samlResponseXml, x509Certificate) Then lblError.Text = “The SAML response signature failed to verify.” Exit Sub End If End If ‘End of code block to verify the response signature ‘Start of code block to initial (serialize) SAML response object from response samlResponse = New SAMLResponse(samlResponseXml) If Not samlResponse.IsSuccess() Then lblError.Text = “Received error response” Exit Sub End If ‘End of code block to initial (serialize) SAML response object from response ‘Extract the Read More

Copyright 2023. All Rights Reserved