Showing posts with label DevSecOps. Show all posts
Showing posts with label DevSecOps. Show all posts

Sunday, December 28, 2025

As a System Thinketh: Architecting the IT Landscape of the Organization

As a System Thinketh: Architecting the IT Landscape of the Organization

I recently read the 1903 classic As a Man Thinketh. I was blown away by the short but effective book by James Allen. I wonder if what he posits that a person is the literal sum of their thoughts could be applied to an IT Organization. While often filed under "self-help," this philosophy offers a profound framework for the modern Chief IT Architect, CTO, or Engineering VP.

My Core Thesis: My take on the book applied to an IT organization. We can assume that an IT org is a collective organism whose technical output and operational health are the direct "fruit" of its internal culture and engineering philosophy. To change the state of a system, one must first change the "thought patterns". People, process and technologies are a collective outcome of the habits, values, and standards of the individuals who demand it, build it and use it.

1. The Garden of IT Architecture and the Law of System Entropy

Allen famously compares the mind to a garden: if you do not intentionally plant "useful seeds," then "useless weed-seeds" will take root by default.

I often borrow the term System Entropy to explain this phenomenon to business leaders. If an Engineering Leadership team does not intentionally seed the organization with a "North Star" architecture and rigorous design principles, the vacuum will be filled by "useless seeds": technical debt, shortcut-driven development, and fragmented microservices. The climate is continuously changing too, doing the same kind of tasks to manage the landscape is not enough.

  • The Translation: You are not a victim of your "legacy monolith." That monolith is the solidified thought-pattern of a previous era.
  • The Action: To transform "outside conditions" (the codebase), I often point out the "hidden soil" (the engineering standards). Mastery begins with the internal commitment to quality before the first line of refactoring or unit test is even written.

2. Thought Crystallizes into Habit: The CI/CD Pipeline of the Mind

I loved the line in the book, where Allen argues that "thought cannot be kept secret; it rapidly crystallizes into habit, and habit solidifies into circumstance."

This is arguably the most accurate description of Software Delivery Velocity ever written. A "thought" (a developer’s decision to skip a unit test "just this once") quickly "crystallizes into habit" (a team culture that views testing as optional). This eventually "solidifies into circumstance" (a fragile CI/CD pipeline and frequent production outages).

Aspect The "Weed" Thought (Reactive) The "Useful Seed" (Proactive)
Design Review Create no diagrams or super complicated architecture visuals to impress Create level 1 and level 2 C4 diagrams to communicate
Code Review "LGTM" - Lets Get This Merged. Critical inquiry; mentoring; guarding the "garden."
Documentation "The code is the documentation." "Clarity is a gift to my future self."
Incident Response Find someone to blame. Blameless post-mortem; systemic fix. Address issues in a retrospective.
Refactoring "We'll fix it in Phase 2." "Leave the campground cleaner than you found it."

3. The Thought Factor in Achievement: Purpose-Driven Engineering

Allen suggests that Thought + Purpose = Intelligent accomplishment. Many IT departments suffer from "Resume-Driven Development" (RDD) or "Shiny Object Syndrome," where the thought (using a new GraphQL framework) lacks purpose (solving a specific business latency issue).

Without a clear purpose, engineering effort is scattered. True achievement in system design is the "crown of effort and diadem of thought." When an Architect aligns every technical decision with a business outcome, the market and the stakeholders favor that clarity.

4. The Jewel of Serenity: High-Stakes Incident Management

The final chapter of Allen’s work focuses on Serenity. He notes that "the more tranquil a man becomes, the greater is his success."

In the heat of a SEV1 production outage, the "tranquil heart" of a Lead Engineer is more valuable than any debugging tool. A leader who remains "strongly equitable" during a crisis prevents the "thoughts of fear" from paralyzing the team's ability to solve the problem.

Serenity in IT manifests as:

  • Equanimity: Staying calm when the system is down.
  • Self-Control: Resisting the urge to "cowboy patch" production.
  • Resolution: Methodically following the runbook instead of panicking.

Sunday, October 28, 2012

SSH Module Installation on Strawberry Perl

Strawberry Perl doesn't come with SSH modules pre-installed. Here is how to insall
C:\>perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.9304)
ReadLine support enabled
cpan> install Net::SSH
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (connect: timeout)]
As a last ressort we now switch to the external ftp command 'C:\WINDOWS\system32\ftp.EXE'
to get 'C:\strawberry\cpan\sources\authors\01mailrc.txt.gz.tmp3104'.
Doing so often leads to problems that are hard to diagnose.
If you're victim of such problems, please consider unsetting the ftp
config variable with
o conf ftp ""
o conf commit
I would like to connect to one of the following sites to get 'authors/01mailrc.txt.gz':
http://www.perl.org/CPAN/
ftp://ftp.perl.org/pub/CPAN/
Is it OK to try to connect to the Internet? [yes] yes
Fetching with LWP:
http://www.perl.org/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[Can't connect to www.perl.org:80 (connect: timeout)]
Fetching with LWP:
ftp://ftp.perl.org/pub/CPAN/authors/01mailrc.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (connect: timeout)]
Fetching with LWP:
http://www.cpan.org/modules/02packages.details.txt.gz
LWP failed with code[500] message[Can't connect to www.cpan.org:80 (connect: timeout)]
Fetching with LWP:
http://www.perl.org/CPAN/modules/02packages.details.txt.gz
LWP failed with code[500] message[Can't connect to www.perl.org:80 (connect: timeout)]
Fetching with LWP:
ftp://ftp.perl.org/pub/CPAN/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (connect: timeout)]
Fetching with LWP:
http://www.cpan.org/modules/03modlist.data.gz
LWP failed with code[500] message[Can't connect to www.cpan.org:80 (connect: timeout)]
Fetching with LWP:
http://www.perl.org/CPAN/modules/03modlist.data.gz
LWP failed with code[500] message[Can't connect to www.perl.org:80 (connect: timeout)]
Fetching with LWP:
ftp://ftp.perl.org/pub/CPAN/modules/03modlist.data.gz
Creating database file ...
Gathering information from index files ...
Populating database tables ...
Done!
Running install for module 'Net::SSH'
Running make for I/IV/IVAN/Net-SSH-0.09.tar.gz
Fetching with LWP:
http://cpan.strawberryperl.com/authors/id/I/IV/IVAN/Net-SSH-0.09.tar.gz
LWP failed with code[500] message[Can't connect to cpan.strawberryperl.com:80 (connect: timeout)]
Fetching with LWP:
http://www.cpan.org/authors/id/I/IV/IVAN/Net-SSH-0.09.tar.gz
LWP failed with code[500] message[Can't connect to www.cpan.org:80 (connect: timeout)]
Fetching with LWP:
http://www.perl.org/CPAN/authors/id/I/IV/IVAN/Net-SSH-0.09.tar.gz
LWP failed with code[500] message[Can't connect to www.perl.org:80 (connect: timeout)]
Fetching with LWP:
ftp://ftp.perl.org/pub/CPAN/authors/id/I/IV/IVAN/Net-SSH-0.09.tar.gz
Fetching with LWP:
ftp://ftp.perl.org/pub/CPAN/authors/id/I/IV/IVAN/CHECKSUMS
Checksum for C:\strawberry\cpan\sources\authors\id\I\IV\IVAN\Net-SSH-0.09.tar.gz ok
Scanning cache C:\strawberry\cpan\build for sizes
DONE
CPAN.pm: Going to build I/IV/IVAN/Net-SSH-0.09.tar.gz
Checking if your kit is complete...
Looks good
Writing Makefile for Net::SSH
cp SSH.pm blib\lib\Net\SSH.pm
IVAN/Net-SSH-0.09.tar.gz
C:\strawberry\c\bin\dmake.EXE -- OK
Running make test
C:\strawberry\perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
1..1
ok 1
IVAN/Net-SSH-0.09.tar.gz
C:\strawberry\c\bin\dmake.EXE test -- OK
Running make install
Prepending C:\strawberry\cpan\build\Net-SSH-0.09-cQfbZo/blib/arch C:\strawberry\cpan\build\Net-SSH-0
.09-cQfbZo/blib/lib to PERL5LIB for 'install'
Installing C:\strawberry\perl\site\lib\Net\SSH.pm
Appending installation info to C:\strawberry\perl\lib/perllocal.pod
IVAN/Net-SSH-0.09.tar.gz
C:\strawberry\c\bin\dmake.EXE install UNINST=1 -- OK
cpan>























































































Monday, October 10, 2011

Don’t forget data replication strategies

It is still important to decide on your data, server replication strategy when you deploy your core business services and data assets to an internal, external or hybrid cloud models.

Understanding the implications of Active Replication, Passive Replication, Hot Backup, Warm Backup, Cold Backup, State Change Synchronization, Load Balancing and Fault Tolerance are key to making essential choices for a solid deployment architecture on the cloud.

Elasticity, capacity flexibility, horizontal and vertical scalability and dynamic resource allocation makes life a lot easy on the cloud.

Active replication is not achieved by taking cold backups, state changes are not logged for periodic flushes to the replicas, state is not synchronized to only support backup replica when the primary fails. Instead each replica is identical, each replica attempts to process each request – an interceptor takes care of idem potency between replicas. If you want a Primary Service to support all incoming requests, and periodically synchronize its state with the replicas – what you have is a Warm Backup or Passive Replication.

Take a hot backup during times when you have low scalability needs on the RDBMS systems, whereas a cold backup should be reserved for “Sundays” or in the 70s. If you’re going to support the cloud – forger cold backups and start thinking CA (Continuous Availability).

Sunday, May 8, 2011

Updating Grub 2 Config

Updating Grub 2 - 

If you want to change your grub configuration (reorder, change, remove etc) - there are TWO steps

1. Make The Change

2. Update Grub

 

For example, If you want to change the selected OS to boot from (usually the first one is selected by default).

rohit@lenovo:~$ sudo gedit /etc/default/grub 

rohit@lenovo:~$ sudo update-grub

Generating grub.cfg ...

The steps above, essentially means, I opened the grub file in a text editor, made changes and saved it. Then I ran update-grub to cement my changes. Done

As a System Thinketh: Architecting the IT Landscape of the Organization

As a System Thinketh: Architecting the IT Landscape of the Organization I recently read the 1903 classic As ...