J.Jeyaram's blog
In the process of learning..oneself
Monday, November 19, 2018
Removing duplicate files and folders - Cleaning up my hard disks
Sunday, April 29, 2018
Road Accident Lessons: What I Learned the Hard Way
- In accidents, provable facts matter more than what actually happened.
- Overcome shock quickly and gather evidence immediately.
- Control anger and communicate clearly, especially with the police.
- Avoid confrontation and arguments.
- Try to reach a calm settlement before police arrive, if possible.
- Collect evidence and take photos of the accident scene.
- Gather all relevant information (driver details, insurance info, vehicle details, etc.).
- Document accident specifics (time, location, road conditions, etc.).
- Don't communicate with the other party's insurance company without legal counsel.
- Don't sign any documents without lawyer review.
- Install a dash cam in your car.
- Prepare a comprehensive statement for the police.
- Have support from friends or family at the police station and court.
- Seek help finding a good lawyer from the start.
- Try to maintain a good relationship with the police.
- Choose a reputable insurance company.
- Stay hydrated and energetic despite stress.
- Prepare for the worst while maintaining a positive attitude.
- Drive defensively, anticipating others' mistakes.
- Keep emergency contacts and important documents together.
Tuesday, August 18, 2015
Parliamentary Election - 2015 & Post Viral Fatigue Syndrome (PVFS) in Dengue Infection
As election results pour in, I find myself at home, halfheartedly searching for rental properties. Lately, I've been feeling under the weather - lacking motivation, constantly tired, and uncharacteristically lazy. It's been a while since I've updated my blog or hit the gym. This morning, while pondering whether my bout with dengue fever last year might be connected to my current state, I found myself googling the aftereffects of dengue.
Photo credits: gettyimages, Buddihika Weerasinghe |
It's been over a year since my dengue ordeal, which I dramatically recounted in my earlier post, "Everything is a miracle." In the immediate aftermath of the fever, I might have felt as if life itself was miraculous, but I certainly don't feel that way now. While I long to recapture that sense of wonder and appreciate life's joys, I find myself struggling. This brings me to the crux of what I want to share today - my observations and experiences with the lingering effects of dengue.
After extensive online research, I've tentatively self-diagnosed with Post Viral Fatigue Syndrome (PVFS). While my symptoms aren't severe enough to completely disrupt my daily activities, they've noticeably impacted my ability to function at my pre-dengue levels - physically, mentally, and socially. The symptoms I've identified include:
- Unrefreshing sleep
- Sore throat
- Unfamiliar types of headaches
- Post-exertion malaise
- Cognitive difficulties (especially with memory and attention)
- Widespread muscle and joint pain
- Mental and physical exhaustion
- Mild stress or depression
Given that these symptoms are manageable and don't severely impair my day-to-day functioning, I prefer to label this as Post Viral Depression rather than Chronic Fatigue Syndrome (CFS). From my research, the exact cause remains unknown, but several studies suggest that viral infections like dengue can trigger the condition. Other potential causes include certain bacteria, immune system issues, hormonal imbalances, psychiatric problems, genetic predisposition, and traumatic events.
The most challenging aspect, in my experience, is the vicious cycle it creates. The associated anxiety and mood disorders make me feel ill, and feeling ill, in turn, increases my stress. Interestingly, some of my colleagues who also contracted dengue don't report experiencing significant fatigue symptoms beyond the acute phase of infection and hospitalization.
A study conducted by the Department of Medicine at Yong Loo Lin School of Medicine, National University Singapore in February 2008 examined the incidence and factors associated with post-dengue fatigue. Their findings, based on a two-month follow-up of serologically confirmed dengue patients, revealed that increased age, female sex, the presence of chills, and the absence of rashes were significantly associated with the development of post-dengue fatigue.
According to www.epid.gov.lk, during the last 8 months of 2015, 18,830 suspected dengue cases were reported in Sri Lanka, with nearly 50% occurring in the Western province. The fourth week of 2015 saw the highest number of cases - coinciding with my own infection. Many of my colleagues from the Gampaha district have experienced dengue at some point in their lives.
Photo Credit : ipsnews.net |
Despite efforts by Sri Lanka's Health Ministry to prevent dengue and raise public awareness through websites like www.dengue.lk and www.dengue.health.gov.lk, and funding from the European Community's Seventh Framework Programme (www.denguetools.net), we seem to lack the necessary level of awareness. The prevention methods employed in Sri Lanka appear ineffective and unreliable. Street posters and hospital handouts are insufficient to combat dengue effectively.
The government should implement and strictly enforce policies on housing and property maintenance in polluted and densely populated areas. Our drainage system, essential for flood prevention in urban areas, is nearly a century old and poorly maintained. Local businesses should be responsible for managing local drainage networks, while individual property owners should maintain drainage systems on their properties.
If we don't elect a government that rigorously enforces these measures, instead of merely discussing price reductions on goods or playing the race/ethnic card to win elections, we risk becoming a nation of fools.
In conclusion, while the effects of dengue can be long-lasting and challenging, it's crucial that we as individuals and as a society take proactive steps to combat this disease. Only through increased awareness, improved infrastructure, and responsible governance can we hope to reduce the impact of dengue on our lives and our nation.
References
Wednesday, October 8, 2014
Individualism and Collectivism and Metryingtolearnthemism
The nineteen nineties were the peak time of civil war; my village was under the control of LTTE. People didn't have the luxury to watch TV nor had telephones, therefore no influence from the world outside. School, home and sometimes playing cricket or football were the only things in life. On the positive side, no much people to influence my thoughts. I spend most of my times at home - claiming in the trees and picking mangos😛, disassembling and assembling my bicycle, decorating my bicycle with LED lights, playing with electrical gadgets, riding my motorbike, changing the carburettor settings and trying new things on my motorbike, doing mechanic works on my custom made 'water pump + generator' thing and playing in the tractor. I didn't need a license or Helmet to ride my bike in my village when LTTE ruled the area.
I feel very fortunate to have had the independence of a sort and the ample time I had, to sit alone most of the time and wonder about things on my own. This freedom and the isolation had a profound effort on my character. At the time, I didn't understand or develop any ideas on how to live and work with other people in harmony, how groups work, tolerance, the expectations of society, sacrifices to be made for others for a greater good for everyone, how my actions affect other people and what is expected from me by the society.
Individualism or perceived separation from society is as absurd as a suicide.I wanted to wear what is comfortable not what is convention, whether to a wedding or funeral or to temple. I didn't see any point in wearing something not comfortable to a wedding just because it's what accepted by society. I had no clue as to how my choices affect other people because I did not grow up interacting with many people in the society nor exposed to social issues.
― Leo Tolstoy
Harmony - Photograph @ Watford, UK. 2009 © JEYARAMJ.COM |
When my family move to Colombo, I was forced to deal with many issues I had no knowledge of handling. Mainly because I didn't understand why people do what they do. The expectation in our collectivist society is that when everyone says yes, you say yes. Initially, the issue of having to say yes when the group say yes tormented me. I could remember many situations I couldn't stand being a part of a group; in the school; in tuitions. Frustration, angry, disappointment and sadness were the emotions as a result of not being able to adapt to a place where collectivism runs. Sri Lanka is mostly a collectivist country, not much of an individualist country. This struggle continued about half a decade. To learn the realities and familiarize myself with social and cultural practices, and to make some friends, only I know how much I had to suffer and sacrifice.
On the bright side, pursuing to know new things and trying understand social stigmas gave me difference experience about things and people. In this regard, there is a range of metaphysical (the branch of philosophy that talks about the principles of things, including abstract concepts such as being, knowing, identity, time, and space.) subjects caught my attention. I started finding information on anything relating to the issues I found difficult to deal with; starting with interpersonal skill development to psychology and social norms. Only in my early twenties, I started to understand that how other people think of me affects me a great deal, positively or negatively.
From a range of interesting topics in metaphysics, I thought of typing (not writing:) ) post on individualism and collectivism from the tiny bit l learnt and from the book I read nowadays. Baboon Metaphysics by Dorothy L. Cheney & Robert M. Seyfarth is one of the most interesting books I could suggest you read which talks about Human life and how it is conducted within a network of social relations, social groups, and societies.
Now., Individualism is the idea that the individual’s life belongs to him and that he has an inalienable right to live it as he sees fit, to act on his own judgement, to keep and use the product of his effort, and to pursue the values of his choosing. Collectivism is the idea that the individual’s life belongs not to him but to the group or society of which he is merely a part, that he has no rights, and that he must sacrifice his values and goals for the group’s “greater good.” According to collectivism, the group or society is the basic unit of moral concern, and the individual is of value only insofar as he serves the group. (https://www.theobjectivestandard.com/issues/2012-spring/individualism-collectivism/ , Accessed 4th Oct 2014)
Yet there are still people who confuse individualism and selfishness.
― Albert Camus
In our society, in Sri Lanka, or in the world, I have no rights except those which society permits me to enjoy. From the day we were born till the day we die the society permits us to enjoy certain things so-called rights and deprives the others. We don't have a choice but to obey these as we all have to live sharing this one earth. I do not have a problem with the fact that there are rules or we can't do certain things for a greater good of the community. I could very well understand that it's almost impossible to live without rules. But the conceptual deference between individualism and collectivism is not about whether to have rules or not, it's about how well we could act on our own or question authorities.
Harmony - Photograph @ Gampaha, LK. 2012 © JEYARAMJ.COM |
Every single day we are controlled, monitored, judged, manipulated and punished or awarded by authorities, leaders, governments and corporations. From the day we are born, we are brain washed to act in a certain way. This type of conditioning allows many of us to limit ourselves and kept in dark that we have to go through very negative things that otherwise we wouldn't go through. What am I talking about now? Let me try to list some of the things I find irritating because of the group pressure or because there is a tiny bit of collectivist social behaviours or some other social conventions.
- In one of the projects I was working for we had a new manager. On the first day, he had a meeting with us and told "I want to talk to those engineers who say I can't test reasoning that it's QA job. I want to talk to those who say I can't do managerial work because it's managers Job. I don't like to keep people in my project those who are not willing to work with others and share the workload… ". Most of our team members who were refusing to do any managerial jobs or testing jobs were quiet and ever since we had the meeting, we had to do few managerial things. If he had told me this in person, I would have definitely given him an explanation saying why it's not a good idea. None of us told anything objecting our new manager because, I believe, it's the bystander apathy psychologist talk about. Sometime I have had wished that I had told the manager that we can't, when I had urgent development works to do and also had to do some of the managerial tasks we willingly undertook. This might not be an ideal example, yet the point is that sometime we willingly respect the authority and allow them to control us as a group we wouldn't do that as an individual. Collectivist cultural background contributes to this kind of group behaviours, I believe. Collectivists believe that prioritizing group benefit over individual benefit creates harmony and betterment. Individualists believe that they are responsible for their own actions not the group, so prioritizing own benefit over group benefit is more appropriate.
- One of my school friends got married last April and our class mates were invited. I noted on my phone the date and location and forgot about the wedding till the notification pop-up on my phone. I requested a short leave from work, bought a gift and went to the wedding with the clothing I normally wear to work. I didn’t think even a little about what other people would dress or how I would be looked-at in the wedding. Every one of my class mates were wearing suits and were in one place as a group. They looked at me weird and asked me “what are you wearing?”. One of my friends told me that he called the others and found out that they will all wear suit. It was crazy for me to understand they had called everyone to know what they are going to wear for the wedding. The fact that they all were in the suit and I was in a denim and shirt made them feel uncomfortable to keep me in the group. It’s really surprising for me to understand how clothing could make people feel connected and how one person could become a stranger wearing different dress. In this there is a dissonance between those who feel majority wearing the same and the one or two don't wear what the majority wears. I believe this is also might be because of the expectation from a member of a group should adhere to the group's values and practices.
- At work, whenever we have a meeting or any announcement from the management, most of our team members will be invited and at the end the discussion the person who holds the meeting or make an announcement will ask from us as to whether we have any questions. Only a few of them ask some questions and others don't ask even if they had any question. It's definitely a cultural/racial thing I find among Sri Lankans, at least in the people I work with. Whenever I ask questions in the meetings or forums, I have my team mates coming and trying to comment negatively condemning that I ask the question or how stupid the question was or they knew how the management would answer backing the company. The fact that one person asks questions differentiate the person form the rest of them don't ask any questions. There might be different reasons why this behaviour among our team members, but for a small degree that they don't like to ask question because the group doesn't encourage asking questions.
“The word "We" is as lime poured over men, which sets and hardens to stone, and crushes all beneath it, and that which is white and that which is black are lost equally in the grey of it. It is the word by which the depraved steal the virtue of the good, by which the weak steal the might of the strong, by which the fools steal the wisdom of the sages.
What is my joy if all hands, even the unclean, can reach into it? What is my wisdom, if even the fools can dictate to me? What is my freedom, if all creatures, even the botched and impotent, are my masters? What is my life, if I am but to bow, to agree and to obey?
But I am done with this creed of corruption.
I am done with the monster of "We," the word of serfdom, of plunder, of misery, falsehood and shame.
And now I see the face of God, and I raise this god over the earth, this god whom men have sought since men came into being, this god who will grant them joy and peace and pride.
This god, this one word:
"I.”
― Ayn Rand, Anthem
Farewell.
Sunday, April 20, 2014
Everything is a miracle
I promptly informed my colleagues, partially completed my morning tasks, had breakfast at the office, and decided to head home on sick leave, my mind racing with a million thoughts. Usually, I avoid doctors - I can't even recall my last visit. Assuming I'd caught the viral fever making rounds among my friends, I figured a week of rest would suffice, regardless of medication. My feverish mind could only focus on how to endure the coming week and return to normalcy. Despite the fever's fog and discomfort, I hopped on my bike, intent on getting home to sleep it off.
- Deciding to go home instead of staying at the office - 50%
- Opting to seek medication rather than just sleeping it off - 50%
- Choosing to visit a doctor instead of just buying pharmacy medicine - 50%
- Finding a competent doctor who suspected dengue and ordered appropriate tests - 50%
- Actually getting the blood test after two days (as someone who never takes blood tests and didn't suspect dengue) - Should be 1%, but let's say 50%
- Returning to the doctor, discovering it was dengue with low platelet count, and getting hospitalized - Again, should be less than 1%, but we'll say 50%
- Having sufficient platelet count for the hospital to administer saline and increase platelet levels - 50%
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
― Albert Einstein
- Eliminate mosquitoes on sight. Invest in effective mosquito-killing tools.
- Take action against those who ignore the mosquito problem.
- Drink at least 100 ml of water or other liquids hourly.
- Consume plenty of fruits and maintain a healthy diet.
- Get ample rest and sleep.
- Slow down when needed. (I often rush without purpose. Now I remind myself to pace myself and rest when necessary.)
- Six hours of focused, smart work outperforms ten hours of distracted effort.
- Exercise and meditate regularly.
- Constantly revisit life's important lessons.
- Spend time alone contemplating life's mysteries and seeking solutions.
“There is more to life than simply increasing its speed.”
― Mahatma Gandhi
Saturday, March 8, 2014
Leadership, Communication & Motivation
Leadership
Communication
Motivation is defined as the process that initiates, guides and maintains goal-oriented behaviors. Motivation is what causes us to act, whether it is getting a glass of water to reduce thirst or reading a book to gain knowledge. It involves the biological, emotional, social and cognitive forces that activate behavior.
I find the blow very useful and is from about.com/od/motivation.
William James has created a list of human instincts that included such things as attachment, play, shame, anger, fear, shyness, modesty and love. The main problem with this theory is that it did not really explain behavior, it just described it. By the 1920s, instinct theories were pushed aside in favor of other motivational theories, but contemporary evolutionary psychologists still study the influence of genetics and heredity on human behavior.
Incentive Theory of Motivation
The incentive theory suggests that people are motivated to do things because of external rewards. For example, you might be motivated to go to work each day for the monetary reward of being paid. Behavioral learning concepts such as association and reinforcement play an important role in this theory of motivation.
Drive Theory of Motivation
According to the drive theory of motivation, people are motivated to take certain actions in order to reduce the internal tension that is caused by unmet needs. For example, you might be motivated to drink a glass of water in order to reduce the internal state of thirst. This theory is useful in explaining behaviors that have a strong biological component, such as hunger or thirst. The problem with the drive theory of motivation is that these behaviors are not always motivated purely by physiological needs. For example, people often eat even when they are not really hungry.
Arousal Theory of Motivation
The arousal theory of motivation suggests that people take certain actions to either decrease or increase levels of arousal. When arousal levels get too low, for example, a person might watch and exciting movie or go for a jog. When arousal levels get too high, on the other hand, a person would probably look for ways to relax such as meditating or reading a book. According to this theory, we are motivated to maintain an optimal level of arousal, although this level can vary based on the individual or the situation.
Humanistic Theory of Motivation
Humanistic theories of motivation are based on the idea that people also have strong cognitive reasons to perform various actions. This is famously illustrated in Abraham Maslow's hierarchy of needs, which presents different motivations at different levels. First, people are motivated to fulfill basic biological needs for food and shelter, as well as those of safety, love and esteem. Once the lower-level needs have been met, the primary motivator becomes the need for self-actualization, or the desire to fulfill one's individual potential.
----
Wednesday, January 15, 2014
Clean Coding Techniques and Best Programming Practices
“ Java is to JavaScript what Car is to Carpet. ” - Chris Heilmann
“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” - Martin Golding |
“ Before software can be reusable it first has to be usable. ” - Ralph Johnson
Two types of info flow: data or control.
Cohesion
Many levels of cohesion:
Coincidental cohesion:Coding Standards and Code Reviews
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”
- Bill Gates (co-founder of Microsoft)
When you write code, consider the following to improve performance, keep the coding clean and to reduce run time exceptions.
- Declare All Variables - In some programming languages, like in JavaScript or in C#. A variable that is not declared will be created with a default type. Normally it will be implicitly created as a Variant.
- Avoid elusive names that are open to subjective interpretation, such as Analyze() for a routine, or jjK4 for a variable. Such names contribute to ambiguity more than abstraction.
- In object-oriented languages, it is redundant to include class names in the name of class properties, such as Book.BookTitle. Instead, use Book.Title.
- Use the verb-noun method for naming routines that perform some operation on a given object, such as CalculateInvoiceTotal().
- In languages that permit function overloading, all overloads should perform a similar function. For those languages that do not permit function overloading, establish a naming standard that relates similar functions.
- Use Strongly Typed Object Variables - Object variables represent pointers to COM objects. They can be declared in two ways, as follows:
- When you defect a variable As Object in Java or C# that variable can be used to represent any kind of object; this is a weakly typed object variable.
- Use the As keyword with the specific type of the object; this is a strongly typed object variable.
- Names - Perhaps one of the most influential aids to understanding the logical flow of an application is how the various elements of the application are named. A name should tell "what" rather than "how." By avoiding names that expose the underlying implementation, which can change, you preserve a layer of abstraction that simplifies the complexity. For example, you could use GetNextStudent() instead of GetNextArrayElement().
- Append computation qualifiers (Avg, Sum, Min, Max, Index) to the end of a variable name where appropriate.
- Use customary opposite pairs in variable names, such as min/max, begin/end, and open/close.
- Since most names are constructed by concatenating several words together, use mixed-case formatting to simplify reading them. In addition, to help distinguish between variables and routines/functions, use Pascal casing (CalculateInvoiceTotal) for routine/functions names where the first letter of each word is capitalized. For variable names, use camel casing (documentFormatType) where the first letter of each word except the first is capitalized.
- Boolean variable names should contain Is which implies Yes/No or True/False values, such as fileIsFound.
- Avoid using terms such as Flag when naming status variables, which differ from Boolean variables in that they may have more than two possible values. Instead of documentFlag, use a more descriptive name such as documentFormatType.
- Even for a short-lived variable that may appear in only a few lines of code, still use a meaningful name. Use single-letter variable names, such as i, or j, for short-loop indexes only.
- If using Charles Simonyi's Hungarian Naming Convention, or some derivative thereof, develop a list of standard prefixes for the project to help developers consistently name variables. For more information, see "Hungarian Notation."
- For variable names, it is sometimes useful to include notation that indicates the scope of the variable, such as prefixing a g_ for global variables and m_ for module-level variables in Microsoft Visual Basic®.
- Constants should be all uppercase with underscores between words, such as NUM_DAYS_IN_WEEK. Also, begin groups of enumerated types with a common prefix, such as FONT_ARIAL and FONT_ROMAN.
- A tenet of naming is that difficulty in selecting a proper name may indicate that you need to further analyze or define the purpose of an item. Make names long enough to be meaningful but short enough to avoid being wordy. Programmatically, a unique name serves only to differentiate one item from another. Expressive names function as an aid to the human reader; therefore, it makes sense to provide a name that the human reader can comprehend. However, be certain that the names chosen are in compliance with the applicable language's rules and standards.
- When naming tables, express the name in the singular form. For example, use Employee instead of Employees.
- When naming columns of tables, do not repeat the table name; for example, avoid having a field called EmployeeLastName in a table called Employee.
- Do not incorporate the data type in the name of a column. This will reduce the amount of work needed should it become necessary to change the data type later.
- In Microsoft SQL Server, do not prefix stored procedures with sp_, because this prefix is reserved for identifying system-stored procedures.
- In Transact-SQL, do not prefix variables with @@, which should be reserved for truly global variables such as @@IDENTITY.
- Minimize the use of abbreviations. If abbreviations are used, be consistent in their use. An abbreviation should have only one meaning and likewise, each abbreviated word should have only one abbreviation. For example, if using min to abbreviate minimum, do so everywhere and do not later use it to abbreviate minute.
- When naming functions, include a description of the value being returned, such as GetCurrentWindowName().
- File and folder names, like procedure names, should accurately describe what purpose they serve.
- Avoid reusing names for different elements, such as a routine called ProcessSales() and a variable called iProcessSales.
- Avoid homonyms when naming elements to prevent confusion during code reviews, such as write and right.
- When naming elements, avoid using commonly misspelled words. Also, be aware of differences that exist between American and British English, such as color/colour and check/cheque.
- Avoid using typographical marks to identify data types, such as $ for strings or % for integers.
- When it come to Comments, Software documentation exists in two forms, external and internal. External documentation is maintained outside of the source code, such as specifications, help files, and design documents. Internal documentation is composed of comments that developers write within the source code at development time.
- One of the challenges of software documentation is ensuring that the comments are maintained and updated in parallel with the source code. Although properly commenting source code serves no purpose at run time, it is invaluable to a developer who must maintain a particularly intricate or cumbersome piece of software.
- Following are recommended commenting techniques:
- When modifying code, always keep the commenting around it up to date.
- At the beginning of every routine, it is helpful to provide standard, boilerplate comments, indicating the routine's purpose, assumptions, and limitations. A boilerplate comment should be a brief introduction to understand why the routine exists and what it can do.
- Avoid adding comments at the end of a line of code; end-line comments make code more difficult to read. However, end-line comments are appropriate when annotating variable declarations. In this case, align all end-line comments at a common tab stop.
- Avoid using clutter comments, such as an entire line of asterisks. Instead, use white space to separate comments from code.
- Avoid surrounding a block comment with a typographical frame. It may look attractive, but it is difficult to maintain.
- Prior to deployment, remove all temporary or extraneous comments to avoid confusion during future maintenance work.
- If you need comments to explain a complex section of code, examine the code to determine if you should rewrite it. If at all possible, do not document bad code—rewrite it. Although performance should not typically be sacrificed to make the code simpler for human consumption, a balance must be maintained between performance and maintainability.
- Use complete sentences when writing comments. Comments should clarify the code, not add ambiguity.
- Comment as you code, because most likely there won't be time to do it later. Also, should you get a chance to revisit code you've written, that which is obvious today probably won't be obvious six weeks from now.
- Avoid the use of superfluous or inappropriate comments, such as humorous sidebar remarks.
- Use comments to explain the intent of the code. They should not serve as inline translations of the code.
- Comment anything that is not readily obvious in the code.
- To prevent recurring problems, always use comments on bug fixes and work-around code, especially in a team environment.
- Use comments on code that consists of loops and logic branches. These are key areas that will assist the reader when reading source code.
- Separate comments from comment delimiters with white space. Doing so will make comments stand out and easier to locate when viewed without color clues.
- Throughout the application, construct comments using a uniform style, with consistent punctuation and structure.
- Despite the availability of external documentation, source code listings should be able to stand on their own because hard-copy documentation can be misplaced.
- External documentation should consist of specifications, design documents, change requests, bug history, and the coding standard that was used.
- Formatting makes the logical organization of the code stand out. Taking the time to ensure that the source code is formatted in a consistent, logical manner is helpful to yourself and to other developers who must decipher the source code.
”Walking on water and developing software from a specification are easy if both are frozen.”