Search This Blog

Insights from Accelerate: The Science of Lean Software and DevOps

Accelerate: The Science of Lean Software and DevOps by Nicole Forsgren, Jez Humble, and Gene Kim is a game-changing book according to me. The authors identify key practices that help organizations achieve high performance in software development and delivery. Something we don't have to re-invent but rather adopt. I can say several factors are already in full fledge in my organization which I am proud about. 

The Art of the Deal - Learning Reference

Top insights that I gained from the book for future reference. 

BTW, loved this book. My preference is chapter-wise summary as given below:

Building Scalable Systems - Handling Hyper-Growth

Hyper-growth is one of the most exhilarating phases for any business, marked by rapid expansion, new opportunities, and an undeniable sense of momentum. Yet, alongside this excitement lies a unique set of challenges.

I’ve seen businesses stumble not because of a lack of ambition or potential but due to difficulties in planning effectively for future needs. Is this because long-term planning is inherently complicated? Absolutely not.

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

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.

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.

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.

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.


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)



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. 



Execute Selenium in Jupyter Notebook

Installing and running selenium is so simple with Jupyter Notebook. Follow the below steps to create a sample program. Creating POCs will be superfast with this method. Steps to run Selenium with Python on Jupyter notebook below:

Install Selenium in Jupyter

!pip install selenium

If its successful, you will get the below message

Install Chrome Webdriver

Install from this link: https://chromedriver.chromium.org/

Make sure that you are downloading the version that matches with your chrome browser version. 

Run the sample program below

Intent of this code sample is to search for a person in Google and retreive the Wiki text displayed on the right side of the page. 

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
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()

Run the code and you will get the below result. 

Access PeopleSoft (or anything) from Slack



Within the team, we started using slack for one reason.

Continuous, non-interrupted and managed communication.

There is yet another reason why this is my favorite recommended application for collaboration:

De-orchestrated productivity

You place a resource targeted request in the channel and, someone will pick it up to cater your need. No bottlenecks or unproductive waiting periods, like when you request something via email and it sits in the queue for several reasons.

This isn't going to happen without the team effort and, is something that I like within the team to it's best. Productivity shot up by 40%.

Below is one example. The integration team, who is new to the PeopleSoft world, had a query about a PeopleSoft record. Using PS_ is a part of the PeopleSoft life, but not for any other teams and might end up in a query which says, "table doesn't exist".


What if, similar queries can be answered by an automated app within Slack? Much more efficient right.

So came up with the below solution. Serving PeopleSoft details via Slack using the event driven mechanism.




This is what the integration does:
  1. Slash command triggers the event
  2. Post the request to the server
  3. Server reads the request
  4. Triggers PeopleSoft Rest API for fetching the information and parse the response
  5. goog_2079004393Respond back to Slack using Web Hooks

This is just one simplified example. You can serve data from any database and the implementation scope is limitless.

Let's take another example. Tracking the PeopleSoft scheduled job information within the slack channel. You will get notified on the program start and end timings with any other information, say, quick log access with Success and Error counts etc.


Analytics, HR services, Workflows Approvals - there are no limits to the use cases that can be served with slack integration.