Saturday, July 18, 2020

Setting up Epson L3101 with Ubuntu 20

With the on and off lockdowns due to coronavirus, business restrictions, and general state of uncertainty around the infection and its impact on individual health, staying inside has become an imperative for for those who can afford to do so.

I got myself a new Epson printer to take out the prints for reading stuff offline in paper mode, as going out for it seemed non essential. Setting this printer turned out to be tricky as I don't have an optical drive with my desktop, and neither on the macbook, so couldn't use the disk that came with it.

While the drivers are generally available on Epson website, getting them to work was tricky on my desktop running Ubuntu 20, because Ubuntu is based on Debian, and Debian seemingly has stopped supporting `lsb-core` and other packages like that.

After trying multiple solutions (which didn't work for me), like:

Finally, what worked was getting the package `lsb-compat` from Debian, and then setting up the driver `epson-inkjet-printer-escpr_1.7.7-1lsb3.2_i386.deb` from Epson site.


In comparison, the process for macbook is much more simpler due to no such dependency being there - simply use the MacOS version to download the correct .dmg file from the driver list.

Tuesday, October 29, 2019

Badrinath Kedarnath visit in October off peak season - things to keep in mind

I visited Badrinath and Kedarnath in October, in the previous week, just before Diwali. While planning for my trip, I came across a lot of information on visiting during May and June, which are peak months, but didn't find much information on travelling in later months. In this post, I will summarize some pointers to keep in mind while planning the trip.


Kedarnath and Badrinath - View from the top




Before you begin

  1. After the 2013 floods, Uttarakhand government mandated biometric registration of yatris. In person, this can be done at Haridwar, Rishikesh, Guptakashi, Srinagar etc, but online it can be done at http://onlinechardhamyatra.in/
  2. However, no one checked my registration slip, and one of the co-passengers didn't have one but still went, so it seems this is more of a crowd control measure now. In any case, its free on the link above, so doesn't hurt to have one. Since travel in the mountains can be uncertain, make sure you have slips for multiple dates
  3. Keep medicine, power snacks (yoga bars) and power bank handy, you may need them
  4. Check weather predictions for temperature and weather forecasts regularly - they helped in my case as I didn't see any days of rains, and had adequate clothing etc available, so less weight to carry

On the way

  1. You will not find any public transport post 5PM in the hilly areas - this is any place above Rishikesh. 
  2. Most transport consists of 10 seater bolero / jeep / other vehicle of equivalent capacity. Usual configuration is 2 people in front other than driver, 4 in middle, and 2*2 on each side at the back. Sometimes, the driver may seat 3*2 people in the back, making it a 12 seater.
  3. Each such transport will usually go only up to the next major stop on the route. They have a rota system (like taxi medallion) at the stands amongst which they ply.
  4. If you want a transport post 5 PM or for longer haul, the drivers union up to ask for a "Booking". It is a planned extortion of passengers desperate to reach the next stop, where the drivers will ask you for 2-3X the prices that they usually get. Example: Say they get Rs. 100 per person between 2 stops for a 10 seater, post 5 PM, they will start demanding that you book the entire vehicle for 2000 rupees - if you find 10 people you pay 200 per head, if you find 5 people you pay 400 per head.
  5. If you want a bus to go to Kedarnath or Badrinath, or to come back, or go longer distance, reach a major stop and wake up early - most such buses leave in the morning between 4.00 to 5.30 AM to avoid the daytime congestion
  6. There is a lot of construction and digging going on various sections as part of the Char Dham Highway project upwards of Rishikesh, due to which you may have to wait for 30 minutes to 1 hour at various points for the blockade to clear up.
  7. The roads are a mix of good, bad and ugly. You can expect the transportation to take a speed of 25-30km per hour on the average.
  8. Due to the condition of the roads and construction, expect a lot of dust in the air. So if you have allergies/Asthma, plan for it.
  9. Rains do not occur in the later months usually, but I saw a few people carry umbrellas etc. On my part, I carried a waterproof rain jacket, but had to use it only as an extra layer due to cold and not due to rains.
  10. The temperature in the nights can be very cold - so plan for 2-3 layers in the night. Gloves and beanies are a must have.
The temples: Kedarnath and Badrinath
  1. Kedarnath opens at 6 in the morning, is closed from 3-5 PM, and closes for the day at around 7 PM. Before 3 PM, you may enter the inner sanctorum based on the crowd, but between 5-7, you can only have Darshan from a distance as the Jyotirlinga is decorated with flowers.
  2. From 6-7 PM, there is evening pooja. You can book a ticket for it online @ Rs. 2500 per head. Or if available, you can book it nearby the temple (20 meters).
  3. After the floods of 2013, most of the old route is defunct. However, many places still have signage of old route which was for 14 km. The new route is 18 km, and you can find the signage misleading. 
  4. If you plan on returning the same day, make it a point to reach upstairs by 2 PM. Return by walk can take you 4-5 hours, and the evenings can be very chilling due to the winds.
  5. You will be able to find accommodation near the temple at good prices till 3-4 PM. If you get late in the evening, you can get quoted 2-3X the price for the same room, so if you are planning on staying, go upstairs and book in advance
  6. The road is a mix of pathways of stones, stairs, concrete ramp. It is used by all - people, ponies, palkis, and can at times smell a lot due to the pony urine and dung.
  7. If you want a helicopter, the official website is the place to book during Yatra timings (usually May to October). Before that, you can book on websites of the respective helicopter operator as well, and make booking via agents.
    There are 3 places - Phata, Sersi, Guptakashi, from which helicopters operate at different prices, timings, operators and helipads. If you do not have a prior booking, and you must use a helicopter, you may end up waiting multiple days to get a seat in one.
  8. The helicopter goes closer to the temple (500 meters), the ponies etc stop 2 km before it. The helicopter also starts a lot earlier than Gaurikund etc, so saves more distance travelled. And one way charges of helicopter from Phata to Kedarnath are around Rs.2500, which is very similar to the one way pony charges of Rs.2300, so do consider it for anyone elderly
  9. There is a Tapta Kund (hot water spring) at Gaurikund (where the trek begins) for bath. Otherwise once at the top, you will need to coordinate with your accommodation to get it, most will not have geysers so may charge extra for it.
  10. Badrinath temple is roughly 500 meters away from the bus stand, so there is not much to walk. If you plan on staying here, there are rooms available across, but nearer to Diwali, the place has few people.
  11. There are 2 hot water springs just next to the temple - Agni Kund and Narad Kund, and its easy to take baths etc here

The Pathways: To Kedarnath

This is the path I took to Kedarnath



The Pathways: From Kedarnath to Badrinath

For going from Kedarnath to Badrinath, there are two ways. I took the second one due to lack of availability of public transport with a halt at Rudraprayag, as the distance is smaller from Rudraprayag than GuptaKashi to Badrinath, even though overall the distance is less in route 1.

Path 1:

Path 2: 

The Pathways: From Badrinath to home

The return leg is easier from Joshimath from where you will find direct buses to Haridwar/Rishikesh in the morning at 4 AM onwards. Once in Haridwar, you can go to Delhi etc for further on road.

Overalls

Route I took: Delhi  --car--> Rishikesh (Stay) --bus--> GuptaKashi --cab--> Sonprayag --cab--> Gaurikund (Stay) --trek--> Kedarnath (Stay) --trek--> Gaurikund --cab--> Sonprayag --cab--> GuptaKashi --cab--> Rudraprayag (Stay) --> Karnaprayag --cab--> Chamoli --cab--> Joshimath --cab--> Badrinath --cab--> Joshimath (Stay) --bus--> Haridwar (overnight) --bus--> Jaipur (Diwali)

PS: lot of other important shrines and places to see in the nearby areas as well

List includes

  1. Hemkund Sahib, Gobind Ghat - Sikh shrine
  2. Mana village - last village on border to Tibet
  3. Nanda Devi bio sphere
  4. Valley of flowers
  5. Jyotirmath at Joshimath - place of Adi Shankaracharya's enlightenment
  6. Yamunotri and Gangotri - part of the chota char dham along with Kedarnath and Badrinath
  7. Panch Kedar temples including Tungnath temple
  8. Panch Badri / Sapta Badri temples
  9. Rajaji National Park
  10. Vasuki Taal and Devariya taal


Tuesday, September 17, 2019

SOLID principles for Object Oriented Programming, with LIQUID and GAS

In Object oriented programming, the SOLID principles play an important role in designing the solutions and structuring the code.

For a quick recap, below is what SOLID briefly stand for:



  • S - Single-responsiblity principle: A class should have one job, and only one job.
  • O - Open-closed principle: Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
  • L - Liskov substitution principle: Every subclass / derived class should be substitutable for their ancestor classes
  • I - Interface segregation principle: No client should be forced to depend on methods it does not use.
  • D - Dependency Inversion Principle:1) High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces). 2) Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions

But solid also happens to be a state of matter. To make matters fun, here are 2 more acronyms that can be used in software development, to complete the three commonly found earthly states of matter :)

LIQUID

  • L - Learnability: The program/module/class/method should support enhanced learnability of anyone using / extending it
  • I - Input validation: All inputs must be validated to avoid any security and other bugs
  • Q - Quality control: Code should be structured so that ways to keep checks on regression and maintain strict quality can be easily ensured. i.e., tech debt should be kept within viable limits
  • U - Understandability: Code is modified and debugged more number of times than freshly written, and it must thus be easily understandable for the next person. Conventions needs to be followed consistently
  • I - Integration: Code in isolation is limited in the impact it can have, and so must be so structured to promote easier integration within other projects / modules etc.
  • D - Defect averse: defects have a way of creeping in, so code should be properly tested and structured in a way to minimise code smell and defects.

GAS


  • G - Great readability: Code is read a lot more than it is written, and to save time, should be readable.
  • A - Avoid Anti-Patterns: While using design patterns and other strategies is good, one must know when to avoid the common anti patterns
  • S - Security promoting: Unsafe security practices should be avoided at the offset. As Mad eye moody says, Constant Vigilance is the way to avoid security nightmares.


Monday, September 02, 2019

Waterfall vs Lean vs Agile vs Scrum vs Kanban

If you work in software development, chances are, you've heard of all the terms above.

Over the years, all of these terms have turned into buzzwords, with people using them witout even understanding what they really stand for. So, its common to hear things like waterfall is bad, or asking that a scrum team adjust their changes for newer requirements, or use kanban boards to keep track of stories.

In this post, let's have a look at what all these terms stand for.

Waterfall:

This represents a unidirectional flow of development process, where various steps are taken one after the other, in order. So, first goal is to do requirement collection, next an analysis of those requirements, followed by designing of solution, which is finally coded, implemented and integrated, to be released to the customer.

Waterfall works great when the requirements are static. That is, they are the same on the day of delivery, as given on day of initiation. However, most business requirements and projects are not static. Each of the steps above take time by themselves. Businesses are today much more dynamic, and even the customers are lot more demanding. Which is why, taking feedback becomes a necessity, and this is what is the achilles' heel of waterfall model is.

Lean:

So people looked into other domains to find out what stands out in other industries to make the process more efficient, and the final product less defective. One existing mecahnism they found was the Six Sigma and Lean management.

Six Sigma is a disciplined, statistical, data-driven approach for continuous improvement and eliminating defects in a product. The six sigma method was inspired by happenings at Motorola. Soon, within the larger industry, most notably Japanese carmakers, lean management starting taking hold. Lean management stood for eliminating waste, and this principle got adopted to the software industry. (Just like how design patterns were originally inspired from construction industry, or how biology inspires many genetic algorithms).


Agile:

However, lean also did not fulfill all the aspirations. For, technology is ever changing, and in the technology world, the tools, the requirements, the customers, and the product, all change very quickly, as compared to other industries. So, the existing strategies started feeling heavy, with all the business requirement documents, technical requirement documents, technical specification, change management document, and a lot of other processes.

Many lightweight software development frameworks starting coming up to the fore, to counter such heavyweight methods, as, one size does not fit all. The result was an umbrella of methods, like Scrum, Extreme programming etc. Even later, newer methods such as Behavior Driven Development, Test Driven Development, Kanban etc kept coming up.

Agile gained popularity as this umbrella above, with the coming up of the Agile Manifesto.

Scrum:

Scrum is one of the agile methods. Scrum is a software development framework. By that, it means that Scrum provides a designated structure in which a Scrum team must function - it provides the roles (product owner, scrum master, scrum team), the meetings, and even what interactions should happen between the different members.

Today, scrum has come up as one of the popular agile framework for software development, with its focus on incremental delivery and constant iterations to deliver a requirement every spring end

Kanban:

Kanban is a lean management tool that got picked up from the car maker Toyota. Kanban is used to achive JIT (Just In Time), and the focus of Kanban is to keep Work in Progress (WIP) to the minimum. It is very useful in projects where the work can be heavliy broken down into equal sized tasks. However, many do not consider it to be a complete software development method.

Sunday, September 01, 2019

The ORID technique for Focused Conversations and Learning

Reading upon some resources for better scrum setups, I came across an acronym - ORID - for managing retrospectives better.

The general problem with retrospectives is that people keep jumping to conclusions, or keep repeating the same things in different words.

But even during meetings involving larger number of people, such as postmortems, reflections, Root cause triaging etc, conversations degrade in quality, and at times, people fail to arrive even at the common interpretations of the same set of events. Thus, objectivity takes a hit, and it is hard to arrive at good action items that everyone will agree to. 

Things keep dragging on, until the initial momentum slows down, and is finally lost by cherry picking the top few low hanging fruits that work for everyone.

So, what is a good way to keep the discussion focussed, when people want to have good learnings from a common events and decide on what to do based on them?

One answer is ORID. In this post, I will explain the understanding I built from reading around various sources, and thinking back on situations I've observed.

ORID stands for 4 steps in questioning the shared event:

  • Objective
  • Reflective
  • Interpretive
  • Decision


ORID is driven by a facilitator experienced in the method, such that the participants may not even feel like the conversation is structured. It is a group exercise, in which everyone together forms the cohesive unit, hence also being useful in scrum which is naturally about one team. A lot of the output of ORID depends on how the facilitator structures the questions and modulates the discussions. Being a 4 step process that requires carrying context, ORID requires uninterrupted time, which can be a constraint in different setups.

In the first Stage, Objective, the group tries to remember the event and sequence of events that happened. From these, the facts are distilled, which all can agree upon to be facts. The facilitator has to keep an eye out for the discussion spiraling out of the objective into emotional territory - that is a later stage. The facts are stated and heaped together, but no analysis happens. So effectively, people tell what they heard, saw, know, read etc, but not what they feet, think, imagine, worry, doubt etc.

In the second Stage, Reflective, the emotions are dealt with. How do people feel about the topics - these can be positive, negative, apprehensive, or mix of other emotions. The focus here is to get the gut reactions of individual members, which may or may not be supported by facts of the first step. The idea is to get all the fears and concerns out in the open.

In the third stage, Interpretive, the focus is on the larger stakeholders/actors. By now, all people are aware of various facts about the events, and about the way others feel about them. So more or less, everyone has an idea of what others think. However, the focus is not the individuals, but taking a broader perspective. For example, What does this mean for the organization? for the business unit? for the individual teams? for classes of people involved (leadership, developers etc)? This step is all about analytical phase, but seen from the Point of view of different hats, and not an individual

In the fourth and the last stage, Decision, the group decides. The idea is to to think about the future, get concrete action items, so that they can actually be put into practise. The focus can vary from the practically achievable to the best course of action, given the resources.

Tuesday, August 20, 2019

Humanity and global warming

Humans are the black swans of earth's history. Global Warming is a cyclical phenomena (It isn't the first time that earth is heating up due to the natural green house effect), yet humans have managed to achieve that in less than 200 years what earlier would take thousands of years, taking away the time for adaptation for all other species. No species in recorded history (that humanity is aware of) could do so much damage, in so small a time.

Quantifying the impact of humanity on global warming in the world

The UN estimated that of the over 8.7 million total plant and animal species, there are over 1 million species which are at risk of extinction. All of that impact is caused by the activities of just 1 species: Homo Sapiens.

Imagine 1 man wiping off over a tenth of the living population. Does Genghis Khan and his army come to mind?
Imagine 1 man wiping off millions. Does Adolf Hitler  and his Nazis come to mind?

That is what humanity as a single species is brutally doing to the other species of planet earth.

Some analogies to understand the standing of humanity in th world

Humans have an estimated Population of 7.57 billion today across the world.
Assuming an average mass of 62 kg per human (as per wikipedia), the total mass of humanity would be = 7.57bn *62kg = 469 billion kg

The density of human body is close to that of water, (70% of human body is anyway water). Hence we can approximate that 1 kg of human mass is equal to 1 Litre of water.
So the combined volume of all humanity = 469 billion litre = 469 * 10**9 * 0.001 m3 = 0.469 km3.

In comparison, the volume of the black sea is 547,000 km3, and the total volume of water on planet earth is 1.386 billion km3.

So in essence, humanity is not even one in a millionth mass of the black sea, and not even one in a billionth mass of the waters in all the seas, and yet one has to wonder at the damage we are doing.

Any solutions?

Microplastics are everywhere - its choking the life out of many of the larger animal species. Humanity as just one species is enough to destroy life for all other species on the planet. The fight against global warming is a loosing war. Already islands are submerging, the coastlines are receding, climate patterns are changing world over with the heatwaves in Europe, polar vortex in US, rains are becoming erratic with many parts of India flooded due to heavy concentration of rain.

For all their talent, humanity is yet to invent a time machine which could allow us to go back in the past, and make better sense prevail.

No matter how much or in which ways humanity reacts, much will depend on how Planet earth will react. Weather patterns today are chaotic enough to not be predictable by even many advanced computer simulations. Rains, winds, heatwaves, snowfalls, clouds - these are directly going to impact global food security in the years to come, with ripple effects on many other industries such as travel, infrastructure, communications and energy security.

Paris summit of 2015 did try to take us on a path to control (and later remedy) the global warming, but with the withdrawal of US in 2018, its agenda has hit a roadblock now. It is high time the leading nations of the world came together to solve the menace of global warming, overcoming their petty differences, as otherwise, there soon might be no conceivable world to squabble over.

Friday, July 12, 2019

Win Like Stupid

Its a fact that many a smart people do not reach far in life, while the average people reach places where even the smart ones don't. I was looking for some reading material on insights into what could explain this. One such post is Win Like Stupid by FakeGrimlock, which is akin to a revelation to me. The license is CC BY SA 3.0, and I'm reposting it to save it in my personal logs.

NOTE: THE CONTENT BELOW ORIGINALLY APPEARED AT https://readwrite.com/2013/03/19/fake-grimlock-win-like-stupid/, IN CASE IF SHARING FURTHER ATTRIBUTE THE ORIGINAL LINK.

========== ========== ========== ========== ========== ==========


LIFE FULL OF STUPID PEOPLE. STUPID PEOPLE THAT WIN WHEN YOU NOT.
WHY THIS HAPPEN? UNIVERSE HATE SMART PEOPLE LIKE YOU?
NO. IT HAPPEN BECAUSE STUPID WINS.
ME, FAKEGRIMLOCK, FAMOUS ROBOT STARTUP DINOSAUR, AM PRETTY STUPID.
ME SHOW YOU HOW TO BE TOO.

TOO STUPID FOR CAN’T

THERE LOTS OF DUMB IDEAS. SOME DUMB ENOUGH THEM CHANGE WORLD.
SMART PEOPLE HATE DUMB IDEAS. ONLY THINK OF WAYS IDEA CAN’T WIN.
STUPID PEOPLE NOT THINK ABOUT CAN’T WIN AT ALL. THEM JUST DO IDEAS UNTIL ONE CAN.
NO LET STUPID PEOPLE HOG ALL THE DUMB IDEAS! GET SMART BRAIN OUT OF WAY. ONE DAY EACH WEEK, TAKE DUMBEST IDEA YOU HAVE. MAKE IT AWESOME.
REPEAT UNTIL WIN.

TOO STUPID FOR FEAR

CHANCE OF ANYTHING FAIL 90%. UNLESS STARTUP. THEN IT 110%.
STUPID PEOPLE TOO DUMB FOR ODDS. THEM JUST ASSUME NEXT THING WILL WORK.
STOP BEING WHINY BABY, CRY ABOUT FAIL. BE STUPID! ASSUME NEXT TIME YOU WIN!
EVEN IF FAILED LAST TIME. AND TIME BEFORE. AND TIME BEFORE THAT.
EVEN IF CHANCE OF WIN ALMOST NOTHING.
CHANCE IF NOT TRY EXACTLY NOTHING.

TOO STUPID FOR BORED

SMART PERSON EVENTUALLY FIND SOMETHING THAT WORK. ONCE FIND, IT KIND OF BORING. LOTS OF SMART PEOPLE FIND WAY TO WIN, THROW IT AWAY FOR EXCITING NEW WAY TO LOSE.
STUPID PERSON NEVER GET BORED WITH WINNING. PULL LEVER MAKE MONEY? THEM PULL THAT LEVER FOREVER.
THAT WHY YEARS LATER STUPID PERSON RICH, YOU JUST INTERESTING AND POOR.
STOP BEING BORED. BE STUPID! DO WHAT WORKS. OVER AND OVER AND OVER AND OVER.

SMART ENOUGH FOR STUPID

EVERY SMART PERSON TERRIFIED EVERYONE THINK THEM IDIOT.
STUPID PERSON ALREADY IS ONE, NOT MIND IF PEOPLE KNOW.
WORLD SMART. IT HARD TO OUTSMART WORLD. BE IDIOT. OUTSTUPID WORLD INSTEAD.
BE TOO STUPID FOR FEAR. TOO STUPID TO STOP. TOO STUPID TO FAIL.
BE SMART ENOUGH TO BE STUPID.
BE STUPID ENOUGH TO WIN.