Search This Blog

Thursday, August 22, 2024

The Phoenix Project - My Thoughts

This book has been incredibly insightful and has been on my reading list for quite some time. The story resonates deeply with me, especially in how it connects to my work. It offered me a fresh perspective and a chance to reflect. While some principles might feel familiar or even a bit clichΓ©, it's always valuable to revisit and be reminded of best practices.

Here are some key takeaways and reflections from the book that I’d like to share.

Embrace Systems Thinking: Optimize the Entire System

One of the book’s central themes is the importance of seeing your organisation as a system. Rather than focusing on individual silos (e.g., Development, Operations, security), emphasises optimising the whole system.

This can be especially challenging for organisations experiencing rapid growth, as it requires frequent and intensive collaboration across departments that are already managing operational demands and stringent staffing expectations. Nevertheless, having a well-defined roadmap to guide the organisation toward its end goals is crucial in navigating these complexities.

Another example: Instead of focusing solely on making development faster, it’s crucial to consider how operations, security, and testing contribute to the overall delivery pipeline.

Limit Work in Progress (WIP) to Improve Flow

A key lesson from the book is the value of limiting the amount of work-in-progress (WIP). The team spends much of their time switching between tasks, firefighting, and putting out immediate fires, which results in delays and inefficiencies.

This is a common challenge. A few strategies to address this include clearly distinguishing between business-as-usual (BAU) activities and projects. Assigning a dedicated team to handle BAU tasks while managing priority shifts through management approvals can help maintain BAU efficiency. Projects, on the other hand, should have a well-defined scope and properly allocated resources. Effective communication around issues and risks is essential to ensuring alignment and successful delivery. 

By limiting WIP, teams can focus on completing tasks before taking on new ones, which speeds up delivery and ensures that work gets finished with higher quality. Kanban boards and other visual management tools can help teams track the flow of work and identify where bottlenecks occur.

Feedback Loops: Detect Problems Early

The book stresses the importance of creating fast feedback loops. When IT operations are chaotic, problems tend to go unnoticed until they become major issues.

In today’s fast-paced business environment, quick feedback allows IT teams to course-correct and improve processes rapidly. Continuous integration (CI) and continuous delivery (CD) practices, which focus on automating testing and deployment, help to create these quick feedback loops.

Automation: Eliminate Manual, Repetitive Tasks

All IT managers are aware of the fact that many of the issues causing delays are due to manual, error-prone processes. Automating these tasks not only speeds up operations but also reduces the risk of mistakes.This helps to release the operational team to focus on what they should be driving rather than unproductive jobs.

I don't have to say much around this, and everyone knows this area. 

The Importance of Collaboration Across Teams—Generic but still relevant

One of the book’s most powerful messages is that collaboration between teams is essential for success. Development, Operations, and business stakeholders must work together as one cohesive unit to achieve business objectives.

When IT teams work in isolation, it leads to misunderstandings, misalignments, and delays. To avoid this, companies should prioritize cross-functional teams that share knowledge and resources. A culture of open communication and collaboration fosters innovation and ensures that everyone is working toward the same goals.

Create a Culture of Continuous Improvement—crucial

Continuous improvement is the key to long-term success. Instead of settling for temporary fixes, the company embraces a culture of learning, where teams constantly seek ways to improve processes, reduce waste, and increase value. This is not as easy as it seems. Its an effort by itself. You need a highly motivated team to reap the success around this aspect. 

For IT - This concept is central to DevOps, which advocates for iterative improvement and a growth mindset. Organisations should encourage their teams to experiment, learn from failures, and adopt a Kaizen (continuous improvement) approach. This will help teams stay agile and adaptive, ultimately leading to better outcomes.

Technical Debt: Pay It Down to Move Faster 

Technical debt slows down progress because teams spend more time fixing issues caused by outdated systems rather than building new features. Addressing this area involves refactoring legacy systems, improving code quality, and investing in infrastructure that can support future growth. While addressing technical debt may take time, it’s necessary for creating a solid foundation that allows for faster and more efficient development in the future.

Align IT with Business Goals

IT must be seen as a business enabler, not just a support function. When IT and business teams work together, the results are more impactful, and the organisation can achieve its goals faster.

By understanding how IT projects impact business outcomes, IT teams can prioritise work that drives value for customers and the company. Business leaders must also recognise that IT transformation is a journey, and they need to provide the necessary resources and support for IT teams to succeed.

Closure Statement

The journey of transformation, as depicted in the book, is not easy, but the lessons learnt can lead to massive improvements in how IT teams operate and deliver value to the business. 

Whether you’re an IT professional, a business leader, or someone interested in DevOps, this book provides valuable insights that can help guide your journey toward a more efficient and effective IT organisation.

Good read.


Friday, July 12, 2024

Quantum Computing in Simple Terms

Imagine you have a really hard puzzle to solve, like figuring out the fastest way to visit a bunch of cities. A regular computer would try one solution at a time, moving step by step until it finds the best answer. This works, but as the puzzle gets more complicated, it takes a very long time.

Now, imagine a computer that can look at many solutions all at once. That’s what quantum computing does. It’s like having a superpower that lets you explore many possibilities simultaneously instead of one by one.

This superpower comes from qubits (short for quantum bits). Regular computers use bits, which are like tiny switches that can be either ON (1) or OFF (0). Qubits, on the other hand, can be ON, OFF, or somewhere in between at the same time (this is called superposition). This lets a quantum computer do many calculations at once.

There’s another cool trick qubits can do, called entanglement. When qubits are entangled, they are connected in such a way that if you change one, the other reacts instantly, even if they’re far apart. This helps quantum computers solve very complex problems by having qubits work together in ways regular computers can’t.

So, what can quantum computers do? They’re great at solving problems like:

  • Breaking codes: They can quickly solve puzzles that would take regular computers millions of years.
  • Finding shortcuts: They can figure out the fastest way to deliver packages, design better materials, or discover new medicines.
  • Teaching AI: They can make artificial intelligence learn faster and smarter.

Right now, quantum computers are still in the early stages. They’re like toddlers learning to walk—amazing, but not ready to run a marathon. Scientists are working hard to improve them, and in the future, they could change the world in ways we can’t even imagine.

Think of quantum computing as a new kind of brain—one that thinks in a completely different way from the computers we use today. It’s not here to replace regular computers, but to solve the kinds of problems that regular computers struggle with. 

Monday, June 17, 2024

UK Payroll Processing Steps

Quite important when it comes to learning the payroll foundations for UK. I have seen resources struggling to get their heads around the processing part as they think that its complex. In-fact, breaking the process down to the below simple steps will anyone with the basic HCM and accounting acumen to pick up and skill in the payroll processing aspects. It's all about ensuring the data accuracy and the number right down to the pennies.

Below is what the structure that you can save to pick up the nitty-gritties around the payroll processing.

Processing payroll in the UK involves several steps to ensure that employees are paid correctly and that the company complies with legal and tax obligations. Here is an outline of the typical payroll processing flow in the UK:

1. Gather Employee Information
  • New Employees: Collect personal details, National Insurance number, bank details, tax code, and P45 from previous employer.
  • Existing Employees: Update any changes in personal details, bank details, tax codes, or any other relevant information.
2. Determine Gross Pay
  • Salaried Employees: Calculate monthly, weekly, or bi-weekly salary.
  • Hourly Employees: Track and calculate hours worked, including overtime.
  • Additional Payments: Include bonuses, commissions, allowances, and other variable payments.
3. Calculate Deductions
  • Tax Deductions: Apply PAYE (Pay As You Earn) tax based on tax codes.
  • National Insurance Contributions (NIC): Deduct employee NIC and calculate employer NIC.
  • Pensions: Deduct employee pension contributions and calculate employer contributions (automatic enrollment compliance).
  • Other Deductions: Include student loan repayments, salary sacrifice schemes, court orders, union fees, etc.
4. Process Payroll
  • Calculate Net Pay: Subtract all deductions from gross pay to determine net pay.
  • Payroll Reports: Generate payslips for employees and summary reports for management.
  • Approve Payroll: Obtain necessary approvals from management or finance department.
5. Distribute Payslips and Payments
  • Payslips: Provide electronic or paper payslips to employees.
  • Payments: Transfer net pay to employees’ bank accounts via BACS or other electronic payment methods.
6. Reporting to HMRC
  • Real Time Information (RTI) Submission: Submit Full Payment Submission (FPS) to HMRC on or before the payday.
  • Employer Payment Summary (EPS): Submit EPS if necessary (for example, if reclaiming statutory payments or reporting no payments in a tax period).
7. Maintain Payroll Records
  • Record Keeping: Keep accurate records of all payroll transactions, including payslips, RTI submissions, and any corrections or adjustments.
  • Year-End Tasks: Prepare and distribute P60s to employees and submit the final EPS to HMRC. Reconcile and close the tax year.
8. Compliance and Updates
  • Stay Compliant: Keep up-to-date with changes in payroll legislation, tax rates, and statutory requirements.
  • Software Updates: Ensure payroll software is updated regularly to reflect changes in tax codes, NIC thresholds, and other regulatory updates.
Tools and Software
  • Payroll Software: Use HMRC-approved payroll software for calculations, record-keeping, and RTI submissions.
  • HR Systems: Integrate with HR systems for seamless data transfer.
  • Financial Systems: Sync with accounting software for financial reporting and analysis.
Best Practices
  • Accuracy: Double-check calculations and data entries to avoid errors.
  • Confidentiality: Maintain strict confidentiality of payroll information.
  • Training: Ensure payroll staff are well-trained and knowledgeable about current regulations.
  • Audits: Conduct regular audits to ensure compliance and identify any discrepancies.
By following these steps and best practices, you can pick up the payroll aspects related to UK.

Happy learning!

Monday, July 10, 2023

The Idea of #Decentralizing the #SocialMedia


Came across the below image while exploring the Threads app to see what the fuss was about and, it indicated something about the Open Social Media Protocol.


I was curios πŸ€”. 

Given that a platform's data is its lifeblood, sharing data across social media networks seemed like a crazy concept to me. 

And that too, Meta is advocating for it (while I expected them to do otherwise, lock the platform data to retain the users), made me to dig into it a bit more. 

What makes the concept noteworthy is the quote from Meta that is emphasised in the paragraph below. 

"We’re committed to giving you more control over your audience on Threads – our plan is to work with ActivityPub to provide you the option to stop using Threads and transfer your content to another service." Sweet. 

But why are they doing it or be so lenient regarding this feature ❓ 

It turns out that Meta does not want people to easily switch to other platforms, but rather drive more traffic to the threads platform from it's rivals. The majority of people are already using the Threads app anyway & knows how to retain them. 

So what is this protocol all about ❓ 

Open social networking protocols are a set of standards and protocols that aim to promote interoperability, data portability, and decentralization in social networking platforms. 

These protocols allow users to interact and share content across different social networks, giving them more control over their data and the ability to connect with a broader range of users. 

It is the Block Chain for Social Media.


 


Some examples of these protocols:

  • ActivityPub: ActivityPub is a decentralized protocol for social networking. It enables different social networking platforms to federate with each other, allowing users on different platforms to follow and interact with each other. Mastodon, Pleroma, and Pixelfed are examples of platforms that use the ActivityPub protocol.
  • Diaspora: The Diaspora protocol is used by the Diaspora social network. It is designed to provide users with control over their data and privacy. Users can host their own "pods" or join existing pods and connect with others across different pods.
  • Zot: Zot is a protocol used by the Hubzilla social networking platform. It allows for decentralization and federation, enabling users to connect and share content across different instances of Hubzilla.
  • OStatus: OStatus is a suite of open protocols that enable federated microblogging and social networking. It includes protocols like ActivityPub, WebSub, and Salmon. StatusNet and GNU social are examples of platforms that use OStatus.
  • Secure Scuttlebutt: Secure Scuttlebutt (SSB) is a peer-to-peer protocol for decentralized social networking. It uses a distributed append-only log to store and share messages among peers. Patchwork and Manyverse are SSB-based social networking applications.
It's worth noting that while these protocols provide the infrastructure for open and decentralized social networking, the adoption and implementation of these protocols vary among platforms and communities.

Some platforms may use a combination of these protocols or develop their own custom protocols to achieve their specific goals of openness and decentralization.
Social media might completely replace emails one day (already happened I guess). Looks like pretty sweet idea to me if it works.

Monday, June 19, 2023

Low Code Application Development in 2023

A few years ago, I was introduced to low-code application development (LCAD) with Oracle APEX and instantly liked the concept of coding less. The product stint did not last long because the product lacked key critical features at the time. I felt it was easier to code with the known frameworks than foray into a product with restrictions.

However, after spending some time preparing for the latest Oracle APEX certification last week, I was quite impressed with how the product evolved over time and how feature-rich it is now.

A couple of features that I absolutely liked: 

πŸ”₯ Workflow integration: This was a huge gap in the tool and now included and packed with features. 

πŸ”₯ PWA Push Notifications: Apps became more intuitive with this feature 

πŸ”₯ REST Data Source Improvements: REST based integrations and data synchronizations is a game changer. Build it once, and then let it breathe. 

πŸ”₯ PWA functionalities can now be accessed with the click of a button.

However, the caveat is that all of these benefits are tightly integrated with Oracle products, which isn’t what everyone needs. 

  • APEX is only compatible with Oracle databases 
  • Email client is limited to OCI Email delivery service 
  • Charts limited to Oracle JET Charts etc.
You can now easily create and deploy enterprise packaged software, data archival and query-enabled products, and on-premises/cloud-integrated products with significant cost and effort reductions with #Oracle APEX and #Kovaion's LCAD platforms. The use cases are endless πŸ’‘.

For #CIOs: break free from the technical debt by delivering solutions at an increased pace without compromising the user experience or security.

πŸŽ™ DM me for more details and to discuss about the options.

Thursday, April 14, 2022

Extract Table Data Using Python

This is a very simple example. But you will know the dynamics to alter for achieving the right results. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.maximize_window()
driver.get('https://www.w3schools.com/html/html_tables.asp')

# Make Python sleep for some time
sleep(2)

rows = len(driver.find_elements("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr"))

# Obtain the number of columns in table
cols = len(driver.find_elements("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr/td"))

# Printing the data of the table
for r in range(2, rows+1):
for p in range(1,4):
#obtaining the text from each column of the table
value = driver.find_element("xpath","/html/body/div[7]/div[1]/div[1]/div[3]/div/table/tbody/tr["+str(r)+"]/td["+str(p)+"]").text
print(value)



Friday, February 4, 2022

Execute Selenium in Jupyter Notebook - Headless Mode

In the previous example, when you run the script, you will be able to see the chrome browser getting activated and follows the command in the script. 

Headless mode runs the code without the need of the physical browser. It executes the same script behind the scenes, without opening the browser window at all. 

This makes automation much easier and efficient in a way. Speed and performance is amazing in this scenario. You can run multiple tests in parallel without the overhead of multiple browsers being open all through the execution time frame. 

Below is what how you can run the code from the previous post in the headless mode. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options)

driver.maximize_window()
driver.get('https://google.com')
driver.find_element("name", "q").send_keys("Elon Musk")
driver.find_element("xpath","/html/body/div[1]/div[3]/form/div[1]/div[1]/div[4]/center/input[1]").send_keys(Keys.ENTER)
print(driver.find_element(By.XPATH,"/html/body/div[7]/div/div[11]/div[3]/div[2]/div/div/div[2]/div/div/div/div[1]/div/div/div/div/span[1]").text)
sleep(3)
driver.close()

Result will be the same, but no browsers are opened. 



The Phoenix Project - My Thoughts

This book has been incredibly insightful and has been on my reading list for quite some time. The story resonates deeply with me, especially...