10 Habits

  1. They set clear goals. Successful people know what they want, and they have a plan to get there. They set clear, specific goals for themselves and work towards achieving them. By having a clear direction, they are able to focus their energy and resources on what matters most. This helps them stay motivated and on track, and it allows them to measure their progress and make adjustments as needed.
  2. They are proactive. Successful people don’t wait for opportunities to come to them – they create their own. They are proactive in seeking out new opportunities and making things happen. Rather than reacting to situations, they take control and actively work towards their goals. This proactive approach allows them to be proactive in their careers and personal lives, and it helps them seize new opportunities as they arise.
  3. They are consistent. Successful people are consistent in their actions and habits. They don’t just work hard occasionally, they work hard consistently. Whether it’s showing up to work on time every day or putting in extra time to complete a project, they are reliable and consistent in their efforts. This consistency allows them to build momentum and make progress towards their goals, and it helps them establish a reputation for being dependable and hardworking.
  1. They are resilient. Successful people don’t let setbacks and failures get them down. They are resilient and bounce back from challenges quickly. They view failures as learning opportunities and use them to improve and grow. This resilience allows them to persevere through difficult times and keeps them from becoming discouraged or defeated.
  2. They are open to learning. Successful people are lifelong learners. They are open to new ideas and are constantly seeking out opportunities to learn and grow. They are receptive to feedback and are willing to adapt and change as needed. This open-minded approach allows them to stay current and relevant in their field, and it helps them continuously improve and evolve.
  3. They are disciplined. Successful people have self-discipline and are able to control their thoughts and actions. They have the ability to stay focused and avoid distractions, and they are able to resist temptation and make sacrifices in order to achieve their goals. This discipline allows them to stay on track and make progress towards their goals, and it helps them avoid pitfalls and distractions.
  4. They are adaptable. Successful people are adaptable and able to roll with the punches. They are flexible and can adjust to new situations and challenges as they come. They are able to think on their feet and come up with creative solutions. This adaptability allows them to navigate change and uncertainty, and it helps them stay resilient and resourceful.
  5. They are organized. Successful people are organized and know how to manage their time effectively. They prioritize their tasks and are able to juggle multiple projects without getting overwhelmed. They are also able to delegate tasks and work efficiently with a team. This organization allows them to be productive and efficient, and it helps them avoid feeling overwhelmed or stressed.
  6. They are confident. Successful people have confidence in their abilities and believe in themselves. They are able to communicate effectively and present themselves with poise and self-assurance. They are not afraid to take risks and embrace challenges. This confidence allows them to take on new challenges and pursue their goals with conviction, and it helps them inspire and influence others.
  7. They are positive. Successful people have a positive attitude and approach to life. They focus on the good things and are able to find the silver lining in difficult situations. They are optimistic and have a growth mindset, believing that with hard work and effort, they can improve and achieve their goals. This positive attitude helps them stay motivated and energized, and it helps them attract positive opportunities and experiences.

Quick product development – for early stage startups

  1. Automate your CI/CD pipeline. Saves a lot of time on manual work and allows your team to release multiple times a day.
  2. Use a monorepo. That will keep things simple, organised and transparent within your startup.
  3. Break all features into small, incremental changes. That enables early feedback and reduces the chances of a big failure.
    • product team should break work into 1-2 days tasks
    • engineering team should push their changes daily
  4. Use feature flags.
    • engineering team won’t have fear to deploy
    • you can roll out features to a beta group of users
    • you can gather feedback from your team and external users faster
    • you can run a/b tests and perform experiments
  5. Define product and engineer owners for every feature.
    • to avoid shared responsibility and delivery delays
    • to encourage personal responsibility and unlock all talents of your team
  6. Request at least one demo per week. Motivate your team to share their work early, so you can discover bugs and provide feedback before too much time spent.
    • prototype → preview → beta → production — these are four demos you should ask your team to record for every feature
    • every feature team should record 1-2 demos every week
  7. Deploy weekly and follow simple CI/CD process.
    • use single branch (develop) for all development, deploy to test environment on every commit
    • merge develop branch into main once a week to deploy to production
  8. Freeze the code before release.
    • helps your QA team to test changes and ensure quality before production release.
  9. Don’t write many tests if you’re early stage startup.
    • tests are great in the long run, but can slow you down in the short run.

Calculating costs and benefits

The process of calculating costs and benefits is also called calculating return on investment, or ROI. There are many ways to determine a project’s ROI, but the easiest way is to compare the upfront and ongoing costs to its benefits over time.

One common ROI formula is:

In this formula, G represents the financial gains you expect from the project, and C represents the upfront and ongoing costs of your investment in the project.

For example, imagine your project costs $6,000 up front plus $25 per month for 12 months. This equals $300 per year, but you estimate that the project will bring in $10,000 in revenue over the course of that year. Using the formula above, you calculate the ROI as: ($10,000 – $6,300) ÷ $6,300 = 0.58 = 58%

The ROI comes to 0.58, or 58%. You consider this to be a strong ROI, so you decide to pursue the project.

Performing a cost-benefit analysis can help you and your stakeholders determine if it makes sense to take on a new project by evaluating if its benefits outweigh its costs. When conducting cost-benefit analyses for your prospective projects, you can use the guiding questions and ROI formula provided in this reading as a reference. 

To learn more about performing a cost-benefit analysis, check out these articles:

 

 

 

 

 

Rust and WebAssembly

There are two use cases for Rust and WebAssembly

  • Build an entire application based in Rust
  • Build a part of the application with usin Rust and a front end js framework

Install Rust

Wasm Pack

 

https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm

Correct file permissions for WordPress

 # Set all files and directories user and group to wp-user
    chown wp-user:wp-user -R *

    # Set uploads folder user and group to www-data
    chown www-data:www-data -R wp-content/uploads/

    # Set all directories permissions to 755
    find . -type d -exec chmod 755 {} \;

    # Set all files permissions to 644
    find . -type f -exec chmod 644 {} \;
Published
Categorized as Wordpress

Setup lets encrypt auto renewal

Please follow below below link and select your os and server details. Then follow the commands.

https://certbot.eff.org/

Published
Categorized as Wordpress

Machine learning algorithms – quick read

Linear Regression

Linear Regression involves finding a ‘line of best fit’ that represents a dataset using the least squares method. The least squares method involves finding a linear equation that minimizes the sum of squared residuals. A residual is equal to the actual minus predicted value.

To give an example, the red line is a better line of best fit than the green line because it is closer to the points, and thus, the residuals are smaller.

 

Ridge Regression

Ridge regression, also known as L2 Regularization, is a regression technique that introduces a small amount of bias to reduce overfitting. It does this by minimizing the sum of squared residuals plus a penalty, where the penalty is equal to lambda times the slope squared. Lambda refers to the severity of the penalty.

 

Without a penalty, the line of best fit has a steeper slope, which means that it is more sensitive to small changes in X. By introducing a penalty, the line of best fit becomes less sensitive to small changes in X. This is the idea behind ridge regression.

Lasso Regression

Lasso Regression, also known as L1 Regularization, is similar to Ridge regression. The only difference is that the penalty is calculated with the absolute value of the slope instead.

 

Logistic Regression

Logistic Regression is a classification technique that also finds a ‘line of best fit.’ However, unlike linear regression, where the line of best fit is found using least squares, logistic regression finds the line (logistic curve) of best fit using maximum likelihood. This is done because the y value can only be one or zero.

K-Nearest Neighbours

K-Nearest Neighbours is a classification technique where a new sample is classified by looking at the nearest classified points, hence ‘K-nearest.’ In the example below, if k=1, then an unclassified point would be classified as a blue point.

 

If the value of k is too low, then it can be subject to outliers. However, if it’s too high, then it may overlook classes with only a few samples.

Naive Bayes

The Naive Bayes Classifier is a classification technique inspired by Bayes Theorem, which states the following equation:

 

Because of the naive assumption (hence the name) that variables are independent given the class, we can rewrite P(X|y) as follows:

 

Also, since we are solving for y, P(X) is a constant, which means that we can remove it from the equation and introduce a proportionality.

Thus, the probability of each value of y is calculated as the product of the conditional probability of xn given y.

Support Vector Machines

Support Vector Machines are a classification technique that finds an optimal boundary, called the hyperplane, which is used to separate different classes. The hyperplane is found by maximizing the margin between the classes.

Decision Trees

A decision tree is essentially a series of conditional statements that determine what path a sample takes until it reaches the bottom. They are intuitive and easy to build but tend not to be accurate.

Random Forest

Random Forest is an ensemble technique, meaning that it combines several models into one to improve its predictive power. Specifically, it builds 1000s of smaller decision trees using bootstrapped datasets and random subsets of variables (also known as bagging). With 1000s of smaller decision trees, random forests use a ‘majority wins’ model to determine the value of the target variable.

For example, if we created one decision tree, the third one, it would predict 0. But if we relied on the mode of all 4 decision trees, then the predicted value would be 1. This is the power of random forests.

AdaBoost

AdaBoost is a boosted algorithm that is similar to Random Forests but has a couple of significant differences:

  1. Rather than a forest of trees, AdaBoost typically makes a forest of stumps (a stump is a tree with only one node and two leaves).
  2. Each stump’s decision is not weighted equally in the final decision. Stumps with less total error (high accuracy) will have a higher say.
  3. The order in which the stumps are created is important, as each subsequent stump emphasizes the importance of the samples that were incorrectly classified in the previous stump.

Gradient Boost

Gradient Boost is similar to AdaBoost in the sense that it builds multiple trees where each tree is built off of the previous tree. Unlike AdaBoost, which builds stumps, Gradient Boost builds trees with usually 8 to 32 leaves.

More importantly, Gradient Boost differs from AdaBoost in the way that the decisions trees are built. Gradient Boost starts with an initial prediction, usually the average. Then, a decision tree is built based on the residuals of the samples. A new prediction is made by taking the initial prediction + a learning rate times the outcome of the residual tree, and the process is repeated.

XGBoost

XGBoost is essentially the same thing as Gradient Boost, but the main difference is how the residual trees are built. With XGBoost, the residual trees are built by calculating similarity scores between leaves and the preceding nodes to determine which variables are used as the roots and the nodes.

Who is a good Software Engineering Manager ?

This was my question since I was promoted as a Manager couple of years ago. As a person who don’t have much managerial experience in his career, this transition was confusing and overwhelming at the same time. It took me some time to figure out the messy situation I was in.  As a copy – paste software developer, my initial instinct was to google my role and responsibilities. Well, there was no copy-paste model for a Manager and it sucks.

So below I list some of the items I learned as a Manager over past few years.

 

Father / Brother / Sister

As a software developer you always think logically ( Sheldon from Big Bang Theory), but as a Manager you need to think logically and emotionally ( Kid born out of Penny and Sheldon).

I was surprised to learn how members of your team look at you and share their personal issues with you. Team will always see you as an elder brother or father figure. They will look up to you to make critical decisions. They wanted you to stop silly squalling by  team members. They wanted you to put the team in order. They wanted you to console them, when they are in deep trouble. You need to remember that some times your team members will act as irritated teenagers.  To manage all these, you need three critical skills.

Patience

Listening skills

Diplomacy

 

Gold, Silver or Shit

As a Manager how valuable are you to a company ?

As a mathematical equation, let assume

Managers value  as Mv

Product of the value of all the team member as Tv

Marketing effort of a Manager as MMv

Total value of other managers in company as TMv

Mv = (Tv * MMv) / TMv

This will work only if you have more than one Manager in your organization.

Your value as a manager is the total value of your team members and your ability to market your team inside your organization. But the manager value will also depends on the value of other Managers within your organization.

As a manager, you need to make sure that non of your team members value is zero also your marketing within your organization must not be of zero value. If any of those is the case, then total value of you will become Zero.

Published
Categorized as Manager

How to update Druapl 8 to Drupal 9

  • Ensure your hosting environment matches the platform requirements of Drupal 9.

Apache version requirement

If you are running Drupal 9 on Apache, at least version 2.4.7 is required.

PHP version requirement

Drupal 9 requires at least PHP 7.3. PHP 7.4 is also supported but not required. PHP 8 is not yet supported, but work will be done to support PHP 8 as soon as possible.

Database back end and other hosting requirements

If using Drupal 9 with MySQL or Percona, version 5.7.8 is required.

If using Drupal 9 with MariaDB, version 10.3.7 is required.

If using Drupal 9 with SQLite, version 3.26 is required. (PHP 7.4 does not use the system provided SQLite, so take extra care to make sure your PHP is compiled with at least this version).

If using Drupal 9 with PostgreSQL, version 10 is required with the pg_trgm extension.

  • Update to Drupal 8.8x or 8.9.x (if not already on that version)
  • Update all contributed projects and ensure they are Drupal 9 compatible
  • Make custom code Drupal 9 compatible
  • Update core code base to Drupal 9
  • Run update.php
Published
Categorized as Drupal

Principles of Agile Manifesto – a snapshot

Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software meaning that the priority of the company has to be the delivery of a working prototype for the customer to use, as soon as possible.

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage meaning that the Agile methodology gives the team the space to incorporate all of the changes smoothly and swiftly without delaying the overall timelines.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale meaning that delivering a working software should be achieved via the teams working in teams rather than spending months on it and delaying the release of the software.

Business people and developers must work together daily throughout the project meaning that there must be a collaboration channel between the company and the customer so that both of them can understand each other’s wavelengths and not negotiate their way forward which will damage the relationship.

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done meaning that if you are in the position of a manager managing a team, you are bound to support them through thick and thin, and motivate your troops so that they can work harder and bring more value to the company.

The most efficient and effective method of conveying information to and within the development team is a face-to-face conversation meaning that communicating with your troops in person when all of them are in the same location is much more effective because a face-to-face discussion builds trust and understanding among you and them.

Working software is the primary measure of progress meaning that the excessive documentation and other KPIs are no match for a working prototype of the application when it comes to measuring the success rate.

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely meaning that the teams must be able to retain their stamina while developing the application so that they don’t burn all of their energy after a few rounds of success.

Continuous attention to technical excellence and good design enhances agility meaning that the team must be able to handle every change and obstacles that come before them to produce an amazing product that the customers would adore.

Simplicity

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Published
Categorized as Agile