Which is more motivating to continue a process until completion: a percentage, or the number of steps?

I’m working on a set of guides to help users learn how to use our app. We want to show which guides are available and some data with each guide indicating how far you’ve gotten. The idea is that if we show this information and constantly remind you of it, you’ll be more motivated to complete each one and learn more things about the app.

What we disagree on is how to format that information. Which is better: “You have completed 4/7 steps” vs “You have completed 57%”? Looking for data/metrics, not opinions.

Inverting the “activation email” process

It’s fairly common for websites to send an activation email to new users, with a link or code for them to use to confirm that they do in fact own the email address they used to sign up.

This has issues, however. Most commonly, spam filters. And then there’s some email providers that don’t even have a spam folder, and just silently delete things…

But what if instead, the website requested for you to send an email to them? A handy mailto:activate@example.com?subject=CODE_HERE link can be provided so all a user has to do is hit Send.

This bypasses all the issues of spam filters “eating” the activation email, and the only downside I can really see is that people are used to activation emails so flipping the whole process around could be confusing.

Has anyone done this, or considered this, before? Am I on to something, or should I just stick with what everyone else does, despite its flaws?

Program design question – should a Run, or Process function block?

I have written, separately, serial communications libraries for Unix and Windows. The Unix edition uses select and I have a run function which blocks because the function runs in a loop using select to detect any read data on the comms port.

However, I also wrote a Windows edition of the library which works differently. It creates 2 threads: a reader and a writer thread, and so the run function in this library does not block.

I want to merge the 2 libraries and make behaviour the same. My feeling is that I should block on calling run. I can change the Windows library code to run a loop which blocks while the reader and writer thread are running.

What is the most common way to do this? Are there any good sources of design literature that I should be reading? Any feedback would be most appreciated.

Keeping steps in sync of long running process and creating common layer for code repetition

I have 1 long running process wrapped inside a method and it is for 2 different types like below:

  • Type1
  • Type2

Code:

public interface IBaseType     {         MyResult LongRunningProcess(int jobId,int noOfTimes); //doenst save long running process data in database.just returns the results to consumer         void LongRunningProcess(int noOfTimes); //Save results of long running process in database.Background job with on-demand as well as scheduled     }  public class Type1 : IBaseType {     public void LongRunningProcess(int jobId,int noOfTimes)     {         try         {            //Step1 :             var type1Manager =  new Type1Manager(params);            for (int i = 0; i < noOfTimes; i++)                {                  var con = ConnectionFactory.OpenConnection();                  type1Manager.Start(con);                 //Save results of those processing             }            //Step2:           IVersioning versioning = new Versioning();           string version = versioning.GetVersion();           using (connection = new SqlConnection(connectionString))           {                connection.Open();                using (var transaction = connection.BeginTransaction())                {                   try                   {                      Repository.UpdateVariantVersioning(connection, transaction,jobId, version);                      Repository.UpdateCategoryWithVersion(connection, transaction,versioning.Category,version);                      transaction.Commit();                   }                   catch(Exception ex)                   {                        transaction.Rollback();                        //code to delete everything that has been performed in step1                        throw ex;                   }                 }             }         }         catch (Exception ex)         {             Repository.UpdateErrorDetails(connectionString,jobId,ex.Message);         }          //Step3 : if step1 and step2 successfull than mark this job as succeeded else failed         // Updating time of whole process in table     }  }      public class Type2 : IBaseType {     public void LongRunningProcess(int jobId,int noOfTimes)     {         try         {            //Step1 :              var type2Manager =  new Type2Manager(params);             for (int i = 0; i < noOfTimes; i++)                {                  var con = ConnectionFactory.OpenConnection();                  type2Manager.Start(con);                 //Save results of those processing             }            //Step2:           IVersioning versioning = new Versioning();           string version = versioning.GetVersion();           using (connection = new SqlConnection(connectionString))           {                connection.Open();                using (var transaction = connection.BeginTransaction())                {                   try                   {                      Repository.UpdateVariantVersioning(connection, transaction,jobId, version);                      Repository.UpdateCategoryWithVersion(connection, transaction,versioning.Category,version);                      transaction.Commit();                   }                   catch(Exception ex)                   {                        transaction.Rollback();                        //code to delete everything that has been performed in step1                        throw ex;                   }                 }             }         }         catch (Exception ex)         {             Repository.UpdateErrorDetails(connectionString,jobId,ex.Message);         }          //Step3 : if step1 and step2 successfull than mark this job as succeeded else failed         // Updating time of whole process in table     }  } 

So as you can see here that step2 and step3 code are getting repeated for both types so I want to this code repetition.

Secondly I want to keep step1 and step2 in sync so that when step2 fails, then rollback whatever has been done inside the entire step1 process.

I am a bit confused with moving versioning in base abstract class because that would probably be tightly coupled with this long running process. I want to design it in a way that tomorrow if I think of removing versioning then it should not hamper my current design and code.

Can anybody please help me with this?

Update : Added versioning code

interface IVersion {     string CreateVersion(); }  Public class Version : IVersion {      public string Category { get; private set; } } 

Weight Loss: Does This Process Have To Be So Much?

Keto Pure Direct
To stay performing on the best, your muscles engaged, as well as work out any fallible or problem areas be certain modify your routine ever 2 or 3 months (or even every workout session, a person have like). There are a number different exercises that exercise the same area from different ways. Changing up your routine Weight Loss Tips will also help store it interesting anyone personally so may stick along with…

Weight Loss: Does This Process Have To Be So Much?

In Magento 2 Uncaught ReferenceError: Unable to process binding “optgroup: function(){return options }”

In magento 2, how to get a custom attribute option value in select field in checkout page

enter image description here

app/code/Cm/CustomerAttribute/Model/Plugin/Checkout/LayoutProcessor.php

    <?php namespace Bootsgrid\CustomerAttribute\Model\Plugin\Checkout; class LayoutProcessor {     /**      * @param \Magento\Checkout\Block\Checkout\LayoutProcessor $  subject      * @param array $  jsLayout      * @return array      */     public function afterProcess(         \Magento\Checkout\Block\Checkout\LayoutProcessor $  subject,         array  $  jsLayout     ) {          $  jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']         ['shippingAddress']['children']['shipping-address-fieldset']['children']['custom_field'] = [             'component' => 'Magento_Ui/js/form/element/abstract',             'config' => [                 'customScope' => 'shippingAddress.custom_attributes',                 'template' => 'ui/form/field',                 'elementTmpl' => 'ui/form/element/select',                 'options' => [],                 'id' => 'custom-field'             ],             'dataScope' => 'shippingAddress.custom_attributes.custom_field',             'label' => 'Custom Field',             'provider' => 'checkoutProvider',             'visible' => true,             'validation' => [],             'sortOrder' => 250,             'id' => 'custom-field',             'options' => [                     [                         'value' => '',                         'label' => 'Please select'                     ],                     [                         'value' => '1',                         'label' => 'One'                     ],                     [                         'value' => '2',                         'label' => 'Two'                     ],                     [                         'value' => '3',                         'label' => 'Three'                     ]                 ]         ];           return $  jsLayout;     } } 

Please some one help me to get a attribute option

Aborted process, now Error:BrokenCount>0

I tried to run sudo apt install ubuntu-restricted-extras but it got to a point where it had a message, but no way to continue. I aborted it and now have the below error:

$ apt-get check

E: Could not open lock file /var/lib/dpkg/lock-frontend – open (13: Permission denied)

E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

Any advice to solve this problem?

With thanks,

B

How to conduct product discovery process in the B2B

There are some reasons why the discovery process for B2B (mid and enterprise) seems to me much more complicated compared to B2C:

  • Multiple feedbacks: multiple personas can use the same product
  • Low incentive to share internal problems
  • Long feedback cycle
  • Small market (#): some markets are made up of less than 50 companies
  • Strongly based on relationship
  • Domain complexity: some B2B niches are very specific and technical

Given this context, what would be a good discovery process techniques and approaches for B2B?