Citati iz knjige “Peer Reviews in Software – Karl E. Wiegers”

Vrlo zanimljiva knjiga koja može poslužiti kao smjernica za uvođenje peer review programa u proces razvoja softvera. Kako navodi autor, dalje sve ovisi o specifičnim potrebama organizacije koja uvodi novi proces.

Kao i kod drugih vrsta promjena stvara se otpor, a ova knjiga na praktičan način donosi potencijalna rješenja kako taj otpor savladati. Niti od najboljeg procesa neće biti koristi ako ljudi koji bi to trebali provoditi nisu spremni na promjenu ili joj se aktivno protive.

Code review je definitivno dobra praksa i svi iz toga mogu samo naučiti.

Ovo je samo jedna od knjiga koju sam pročitao tijekom 2022. godine.

[1] The Quality Challenge

Often you are too close to your own work to spot errors you’ve made.

You need a fresh perspective -a pair of eyes that hasn’t seen the code before and a brain that thinks in a different way.

Looking Over the Shoulder

The term ‘peer review’ is sometimes misinterpreted to mean that people are evaluating a coworker’s performance. Not so – the point of any peer review is to critique a work product, not the individual who created it.

Quality Isn’t Quite Free

Reviews don’t slow the project – defects do.

Reviews are waste of time only if your work products do not contain defects the reviews could find.

The defects are there whether you look for them or not; it’s just a question of how much it will cost to fix them when they finally raise their ugly heads.

It is cheaper to prevent defects than to remove them after you have completed implementation or shipped the product.

If the cost of establishing and sustaining a review program, training your team, and holding reviews (the investment) is less than what you save through reduced rework and enhanced customer satisfaction (the return), you come out ahead.

A common perception is that peer reviews are a luxury that schedule-driven projects cannot afford. Yes, reviews take time, but whether they take too much time is a business issue.

‘Good enough’ quality means the product must be good enough for the customer to willingly use it more than once.

[2] A Little Help from Your Friends

If you’re going to hold successful peer reviews, you have to overcome this natural resistance to outside critique of your work.

Scratch Each Other’s Back

Egoless programming addresses the fact that people tie much of their perception of self-worth to their work. You can interpret a fault someone finds in an item you created as a shortcoming in yourself as a software developer – and perhaps even as a human being.

Reviews and Team Culture

Reviews can result in two undesirable attitudes… Some people become lax in their work because they’re relying on someone else to find their mistakes, just as some programmers expect testers to catch their errors. The other extreme to avoid is the temptation to perfect the product before you allow another pair of eyes to see it.

Reviewers should thoughtfully select the words they use to raise an issue, focusing on what they observed about the product.

To accelerate this culture change, managers should encourage and reward those who initially participate in reviews, regardless of the review outcome.

The attitude and behavior that managers exhibit towards reviews affect how well the reviews will work in an organization.

If reviews aren’t planned, they won’t happen.

Without visible and sustained commitment to peer reviews from managers, only those practitioners who believe reviews are important will perform them.

A dangerous situation arises when a manager wishes to use data collected from peer reviews to assess the performance of the authors.

Software metrics must never be used to reward or penalize individuals.

Factors that contribute to the underuse of reviews include lack of knowledge about reviews, cultural issues, and simple resistance to change, often masquerading as excuses.

People who don’t want to do reviews will expend considerable energy trying to explain why reviews don’t fit their culture, needs, or time constraints.

Four cultural paradigms found in software organizations: closed, open, synchronous, and random.

Guiding Principles for Reviews

All peer reviews should follow several basic principles:
– check your egos at the door
– keep the review team small
– find problems during reviews, but don’t try to solve them
– limit review meetings to about two hours
– require advance preparation

[3] Peer Review Formality Spectrum

Several kinds of peer reviews that span a range of formality and rigor.

The Formality Spectrum

I recommend that you begin performing inspections at the outset to gain experience so you can judge when a less formal review approach is appropriate and when it is not.

An inspection is the most systematic and rigorous type of review.

Inspection has been identified as a software industry best practice.

An important aspect of an inspection is that participants other than the work product’s author lead the meeting.

Inspections are especially important for high-risk products that must be as free of defects as possible.

Team reviews are a type of ‘inspection-lite’, being planned and structured but less formal and less rigorous than inspection. … The author might lead a team review, whereas in an inspection the author is not permitted to serve as the moderator.

A walkthrough is an informal review in which the author of a work product describes the product to a group of peers and solicits comments.

Walkthroughs are informal because they typically do not follow a defined procedure, do not specify exit criteria, require no management reporting, and generate no metrics.

Authors can use walkthroughs to test their ideas, brainstorm alternative solutions, and stimulate the creative aspects of the development process.

In pair programming, two developers work on the same program simultaneously at a single workstation.

Pair programming is not specifically a review technique. Instead, it is a software development strategy that relies on the synergy of two focused minds to create products superior in design, execution, and quality.

Peer desk check – infrequent compilations to find errors in the hope of ensuring a clean execution.

A desk check is a kind of self-review, not a peer review.

In a peer desk check (also known as a buddy check and pair reviewing), only one person besides the author examines the work product.

A peer desk check depends entirely on the single reviewer’s knowledge, skill, and self-discipline, so expect wide variability in results.

The peer desk check is the cheapest review approach.

A passaround or distribution is a multiple, concurrent peer desk check. Instead of asking just one colleague for input, the author delivers a copy of the product to several people and collates their feedback.

Ad hoc reviews are the most informal type of review, having little impact beyond solving the immediate problem.

One way to select the most appropriate review method for a given situation is to consider risk: the likelihood that a work product contains defects and the potential for damage if it does.

[4] The Inspection Process

Inspector Roles

The most obvious role is that of the author, also called the producer or owner. The author usually created the work product being inspected, although he might be maintaining a product that someone else created.

The moderator works with the author to plan the inspection, keeps the meetings on track, and leads the inspection team to a successful outcome.

The reader (also known as the presenter) describes to the other participants the material being inspected during the inspection meeting. Logging the defects, issues, and comments raised during the meeting is the job of the recorder or scribe.

A fundamental characteristic of inspection is that the author is not permitted to serve as the moderator, reader, or recorder.

Although the author knows more about the product than anyone else does, he is too close to it to be objective. It’s hard for the author to remain egoless if he is controlling the inspection meeting or presenting the material to the other participants.

The reader typically paraphrases the work product, stating his interpretation in his own words.

The reader’s interpretation often reveals ambiguities, hidden assumptions, inadequate documentation, style problems that hamper communication, or outright errors.

Reading also gives at least one other inspector – the reader – a good understanding of the author’s work.

Rotate the reader role among your team members from one inspection to the next to share the burden of preparing for this challenging function.

Inspection Team Size

Keep your inspection teams small, between three and seven participants in most situations.

If the team is too large, distracting side discussions are likely to erupt.

The more people involved, the harder it is to schedule a meeting.

Inspection Process Stages

The author initiates planning by announcing that a deliverable will be soon ready for inspection.

The moderator is responsible for inviting the other participants.

The overview is typically conducted through an informal meeting in which the author describes the important features, assumptions, background, and context of the work product.

Defect detection begins during the individual preparation stage.

During the meeting, the reader describes the work product to the rest of the inspection team, one small portion at a time.

Issue log is the primary deliverable from the inspection meeting.

The next step is for the author to address each item on the issue log. The moderator might assign certain issues that arise during the meeting to people other than the author for resolution.

Typically, the moderator or another designed individual (the verifier) meets with the author to ensure that all issues and defects were resolved appropriately.

As with the other inspection activities, casual analysis is intended to explore shortcomings in the software development processes the team is using, not in the performance of individual team members.

Variations on the Inspection Theme

Measurement is a critical element of their inspection technique because it aids in determining and maximizing the return on investment from inspection.

Defect prevention is the ultimate reward from an inspection program.

Properly practiced, any inspection technique will give your team substantial improvements in quality, productivity, and knowledge exchange.

[5] Planning the Inspection

The first issue is to decide whether you really need an inspection.

When to Hold Inspections

Plan to inspect a work product when it reaches a completion milestone and is ready to be passed on to the next development step.

One company that began inspecting requirements specifications found that many inspection issues were questions of scope: does a specific requirement even belong in the product? If you resolve scope issues early in the project, people won’t waste time implementing unnecessary requirements.

The inspection Moderator

All of your team members should become comfortable with performing the roles of inspector, author, recorder, and reader. The moderator role, however, is more specialized.

The moderator plays a vital role in an effective inspection.

Avoid using nontechnical meeting facilitators to moderate inspections.

Also, do not allow anyone in the author’s management chain to moderate an inspection.

Selecting the Material

During the planning stage, the author and moderator decide whether to examine the entire deliverable or just selected portions.

Guidelines for choosing the artifacts to inspect:
– Fundamental and early-stage documents, such as requirements specifications and prototypes
– Documents on which critical decisions are based, such as architectural models that define the interfaces between major system components
– The parts you aren’t sure how to do, such as modules that implement unfamiliar or complex algorithms or enforce complicated business rules and other areas in which the developers lack experience or knowledge
– Components that will be used repeatedly

Inspection Entry Criteria

Entry criteria state the conditions that must be satisfied before you can execute a process with confidence of success.

One general entry criterion is that all participants have been trained in the inspection process.

For a reinspection, all issues from the previous inspection must have been resolved.

Assembling the Cast

Because inspections encompass both technical and social aspects, the success of an inspection depends heavily on who participates.

If you’re going to establish a successful inspection program in your organization, every team member must participate.

Consider whether interpersonal issues might inhibit the ability of certain individuals to inspect a particular author’s work.

The conventional wisdom is that managers may not inspect deliverables created by people who report to them. The rationale behind this restriction is that managers will be tempted to evaluate authors, even subconsciously, based on defects identified during the inspection.

Limit the presence of observers who do not actively contribute to the inspection. Observers increase the inspection’s cost while adding no value to the product.

The Inspection Package

The author should freeze the work product so it doesn’t change prior to the inspection meeting.

Inspection Rates

The more material the team covered in an hour, the fewer defects were discovered per page.

A single inspection meeting should not last more than about two hours.

Schedulig Inspection Events

Rather than using a fixed inspection schedule, allocate a portion of each week’s planned effort for inspections on an average basis, recognizing that some weeks will be busier than others.

[6] Examining the Work Product

The Overview Stage

The overview stage brings all inspection participants up to speed on the scope, purpose, context, history, and rationale of the initial deliverable.

The overview often is conducted as a meeting of 30 to 60 minutes in duration, which the author leads.

The primary goal of the overview is education.

The Preparation Stage

During preparation, all inspectors first read through the deliverable to make sure they understand it.

Preparation is especially critical for the reader and the recorder.

Preparation Approaches

The moderator can assign certain preparation objectives to specific inspectors to exploit their specialized technical knowledge or to ensure that all checklist items are addressed.

You don’t want everyone to look closely at the first one-third of a large work product, a few to get to the middle third, and just one stalwart inspector to flip through the final portion.

One disadvantage of having inspectors prepare in different ways is that you must rely on all of them to prepare effectively because there is no redundancy on which to fall back.

Checklists that identify typical defects found in various software work products are an important part of an organization’s inspection infrastructure.

Checklists are usually written in the form of questions for the inspector to ask about the deliverable he is examining, grouped into logical categories.

Rule sets provide an objective way for an inspector to judge whether a work product is correct and complete. Rule violations are defects.

Selecting appropriate analysis techniques from a palette of options is more powerful than always using checklist or just reading through the work product.

Evaluating requirements for testability reveals incomplete, ambiguous, and inconsistent requirements.

Perspective-based reading (PBR) defines steps that inspectors can follow when reading a specific type of document to improve their understanding of it and look for problems.

Scenarios are procedures that help inspectors find specific types of defects, such as missing requirements, inconsistencies, ambiguities, or incorrect functionality.

Missing requirements are among the most difficult requirement problems to detect.

An inspection that identifies unnecessary requirements pays for itself by reducing the project’s development effort.

Inspections can be applied to screenshots, prototypes, paper prototypes, and user interface architecture dedigns such as dialog maps.

Rather than reading sequentially through the code listing, inspectors traverse the hierarchical structure of the code, following function calls down the call tree as they are encountered.

[7] Putting Your Heads Together

The Moderator’s Role

The moderator leads the inspection meeting and plays a major part in a successful inspection.

Launching the Meeting

If the moderator judges that some participants are not properly prepared, he has the authority – and the responsibility – to reschedule the meeting.

The moderator should follow up with inspectors who did not submit any defects. If those inspectors didn’t prepare, either they do not attend the inspection meeting or the moderator reschedules the meeting for a later date.

Conducting the Meeting

Inspection meetings are draining and stressful, even when performed professionally by experienced participants.

During preparation, the reader chooses the most effective sequence and technique for presenting the material being inspected.

The moderator should watch the participant’s body language. A furrowed brow suggests that an inspector is confused or is contemplating making a comment.

Check the body language to see if the inspectors seem to be tuning out, tapping their feet in irritation, or displaying that „come on, let’s move along!“ facial expression.

Most commonly, the reader pauses briefly after presenting each section of material to permit inspectors to offer comments.

An alternative is to use a round-robin approach, asking each inspector in turn for his observation after the reader has presented each section.

[8] Bringing Closure

The Rework Stage

The author must address every issue on the inspection issue log and typo lists received from the inspectors.

The Follow-Up Stage

One purpose of follow-up is to verify that the author resolved all open issues from the inspection meeting appropriately.

Tracking inspection issues to closure is a characteristic of a mature inspection process.

A second objective of follow-up is to determine that the changes made in the initial deliverable were made correctly, without introducing secondary defects.

Inspection Exit Criteria

When you reach this point of stability in your inspections and your development processes, you can predict approximately how much material you can inspect per hour and how many defects you are likely to find.

[9] Analyzing Inspection Data

Why Collect Data?

Data answers important questions, provides quantifiable insights and historical perspective, and lets you base decisions on facts instead of perceptions or memories.

Don’t make your measurement process so elaborate that it inhibits the inspections themselves. Establishing a peer review culture and finding bugs is more important than meticulously recording masses of data.

Some Measurement Caveats

The first time a practitioner is punished for some data he reported is the last time the manager will get accurate data. Word of such misuse of the data spreads quickly among the other team members.

Beware the phenomenon known as measurement dysfunction. Measurement dysfunction arises when the measurement process or the ways in which managers use the data lead to counterproductive behaviors by the people providing the data.

Measuring the Impact of Inspections

A general heuristic is that each major defect that is not found by inspection requires an average of about nine to ten hours to correct later on.

[10] Installing a Peer Review Program

Simply knowing the mechanics of inspections and other types of peer review doesn’t guarantee that everyone will perform them routinely or effectively.

The Peer Review Process Owner

Look for a manager who strongly believes in reviews and is willing to devote energy to making the program succeed.

If no one has responsibility for adjusting the process, improvements won’t be made when the early adopters encounter problems.

Prepairing the Organization

Expect to hear, „We’re already too busy; we don’t have time for reviews,“ both as a genuine concern and as a sign of resistance.

Don’t waste a lot of energy trying to convert people who aren’t going to be willing review participants no matter what you say or do. The train is coming through; they can get on board or get out of the way.

Establishing and sustaining a new process in a software organization. First, you need a documented process.

If you’re serious about incorporating reviews into routine use, issue a written review policy.

A policy without accountability is merely a suggestion.

A meaningful policy demands management commitment at all levels. If your project manager isn’t interested in reviews despite the organizational policy, you’ll conduct reviews only if they are personally important to you.

The bottom line from any process improvement effort is that the team members apply the new practices routinely, not just when it is convenient or when someone reminds them.

Process Assets

Don’t expect your team members to perform peer reviews effectively unless they have a written process description and supporting work aids, collectively termed process assets.

At a minimum, start with one review procedure and the basic review forms.

Rather than trying to devise the ultimate review process right out of the gate, start with a non-intimidating process that provides a solid foundation on which your review program can grow.

The Peer Review Coordinator

Organizations should identify an individual to coordinate the program on a day-to-day basis.

The ideal peer review coordinator is an experienced inspector and moderator who thoroughly understands the technical and social aspects of reviews.

Moderators give him the size, time, effort, and defect data from their inspections, and he generates summary reports and analyzes the metrics. Based on this data analyzis, the coordinator offers process improvement suggestions.

Peer Review Training

It’s demoralizing for developers to walk out of a seminar motivated to use new software practices, only to face resistance from a manager who doesn’t understand or value the new techniques.

Piloting the Review Process

New processes that look good on paper often require adjustment in practice.

[11] Making Peer Reviews Work for You

Weaving peer reviews into the cultural fabric of an organization takes time.

Critical Success Factors

The people involved and their attitude toward quality are the greatest contributions to a review program’s success.

Even motivated team members will struggle to perform reviews if you don’t obtain management commitment.

Critical elements:
– Train reviewers and review leaders
– Allocate time in the project plan for reviews and rework
– Set goals for the review program
– Identify a review champion
– Review early and often, formally and informally
– Analyze your early reviews

Review Traps to Avoid

Participants don’t understand the review process.

The review process isn’t followed.

The right people do not participate.

Review meetings drift into problem-solving.

Reviewers focus on style, not substance.

Troubleshooting Review Problems

People who strongly oppose the review program can damage it, but don’t be held captive by the most recalcitrant members of your organization. If managers and opinion leaders instill pride of craftsmanship and an appreciation of software engineering best practices in the organization, most team members will give reviews a try.

[12] Special Review Challenges

Large Work Products

To get the greatest return from your review investment, use risk analysis to identify the components in which undetected errors could cause the greatest future problems.

Sampling portions of a large work product provides an indication of its overall quality and helps you judge whether it’s worth looking carefully at more than just a few pages.

Generated and Nonprocedural Code

There is little point in manually reviewing code generated by graphical user interface builders, visual development tools, and the like.

Too Many Participants

Sometimes people invite themselves to inspections for political or managerial, not technical reasons.

12 knjiga koje sam pročitao tijekom 2021. godine

U ovom ću blog postu kronološki navesti knjige koje sam pročitao tijekom 2021. godine. Isto sam napravio 2015., 2017. i 2018.

Prošle i pretprošle godine nažalost nisam pročitao onoliko knjiga koliko sam htio pa nisam niti objavio blog post s popisom. Da se to opet ne bi dogodilo odlučio sam svaki dan, bez iznimke, čitati knjigu barem 15 minuta. Neke imam u fizičkom obliku, a druge su digitalne na Kindleu. 15 minuta je dovoljno kratko ako mi se nekada baš ne bude dalo čitati, a dovoljno dugo da me neka zanimljiva knjiga privuče pa produžim čitanje na X * 15 minuta.

Popis ću nadopunjavati kako pročitam neku knjigu.

1.) Slonica koja je izgubila sreću – Ajahn Brahm [5/5]

Knjiga se sastoji od 108 inspirativnih priča budističkog redovnika. U njima se svatko može pronaći i uvijek im se vratiti. Ovo je nastavak knjige “Krava koja je plakala” koju ću tek pročitati i već vidim da ću uživati.

#1 – Stvar s bananama nije ni izdaleka tako banalna. Toliko su prisutne u svakodnevnici da mislimo kako znamo sve o njima. A zapravo ne znamo ni kako ih oguliti! Većina ljudi započinje guliti bananu od stabljike. Međutim, majmuni koji su stručnjaci po pitanju banana, uvijek drže bananu za stabljiku i gule je sa suprotnog kraja. Pokušajte i uvjerite se. Vidjet ćete da je to mnogo lakše “majmunskom metodom”.
Isto tako, budistički redovnici i redovnice stručnjaci su u odvajanju uma od teškoća koje ga okružuju. Pozivam vas da slijedite “redovničku metodu” suočavanja sa životnim problemima. Poput guljenja banane, život će vam postati jednostavniji.

2.) Krava koja je plakala – Ajahn Brahm [5/5]

Ovo je prva knjiga iz serijala o budustičkim pričama. Sadržajno je jednaka gornjoj knjizi koja je zapravo nastavak ove knjige.

#1 – Zašto smo uvjereni da najprije moramo naporno raditi i steći bogatstvo, a tek onda pronaći zadovoljstvo u životu?

#2 – Svako mjesto na kojem ne želite biti, bez obzira na udobnost, za vas je zatvor. Ako radite posao koji ne želite raditi, tada ste u zatvoru. Ako ste u vezi u kojoj ne želite biti isto tako ste u zatvoru. Sloboda znači biti zadovoljan tamo gdje jesi. Zatvor znači željeti biti negdje drugdje.

#3 – Ako mislite da ćete biti sretni kada postanete netko drugi, tada se varate. Postati netko drugi samo znači zamijeniti jednu vrstu patnje drugom. No, ako ste zadovoljni onim što ste i tko ste sada, mlad ili star, oženjen ili samac, bogat ili siromašan, tada ste oslobođeni patnje.

3.) Trump 101: The Way to Success – Donald J. Trump, Meredith McIver [4/5]

Trump mi je postao zanimljiv još od prve sezone showaThe Apprentice“. Zapravo, prije nisam niti znao za njega. Bilo mi je zanimljivo čitati o njegovom projektu “Trump University” o kojemu, ako sada “guglate”, možete pronaći neke vrlo “škakljive” informacije. Puno projekata je pokrenuo i ovaj mu nije prošao. Siguran sam da je iz toga nešto naučio.

Knjige daje uvid u njegov način razmišljanja, a sastoji se od kratkih poglavlja od kojih svako nosi vrlo konkretnu poruku. Sve ono što je Trump naučio kroz život i posao sažeto je u ovoj knjizi. Nije to ništa revolucionarno i zapravo je sve vrlo logično, ali je lijepo sve vidjeti na jednom mjestu i povremeno ‘prelistati’.

#1 – Understand that difficulties, mistakes, and setbacks are inevitable part of business and life. No matter how well you plan and how hard you work, things always change and require you to react.

#2 – You also have to learn when to quit and when to move forward. Since everyone makes mistakes, try to be understanding when other people fail. Don’t immediately give up on them; you wouldn’t want others to write you off without a fair chance.

#3 – Courage isn’t the absence of fear; it’s the conquering of fear. Just because people appear confident doesn’t mean that they are not afraid.

#4 – When things go wrong, look at yourself first. Don’t instinctively blame others of the circumstances.

#5 – A fine line exists between bravery and stupidity. Check out the tides, test the water, and know what you’re getting into before you dive in.

36 – Positive thinking isn’t always enough. In addition to being positive, you must be persistent.

#7 – Many people are afraid to fail, so they don’t try. They may dream, talk, and even plan, but they don’t take that critical step of putting their money and their effort on the line. To succeed in business, you must take risk. Even if you fail, that’s how you learn.

4.) The Cash Machine – Dave Mason, Chana Mason [3/5]

Ovo nije klasična knjiga o financijama, ali može biti odličan početak na putu učenja. U noveli se prati život dvoje glavnih likova kroz čije je priče moguće pokupiti smjernice za izgradnju dobre financijske budućnosti.

#1 – Without a goal, how can you possibly know if you’re moving toward it or not?

#2 – How you deal with money doesn’t change with how much you make.

#3 – The first thing to know with fishing, as with life, is what game you’re going after. Only then can you choose the right location and bait.

#4 – I shouldn’t ask what I’d do when I retire. I ought to ask myself what I’d do if I knew I could never retire.

#5 – There are literally millions of paths regarding money, and each of us can choose the one that appeals to us most. But to make responsible choices, we need financial literacy and education.

#6 – This book is not a blueprint for achieving wealth—it’s more like a treasure map. You’ll no doubt need more research before implementing these strategies, but I hope I’ve shown you where to dig.

5.) The Richest Man in Babylon – George S. Clason [4/5]

Ovu knjigu bi nazvao Biblijom financija i dijelom opće financijske kulture. Sastoji se od priča koje su univerzalne.

Sadržaj knjige temelji se na tzv. pet zakona zlata:
1.) Štedjeti 10% od svih primanja.
2.) Omogućiti novcu da se množi.
3.) Čuvati novac od gubitka.
4.) Ulagati samo u ono što nam je poznato.
5.) Ne pouzdati se da će netko drugi bolje upravljati našim novcem od nas.

#1 – The spirit of procrastination is within all men. We desire riches; yet, how often when opportunity doth appears before us, that spirit of procrastination from within doth urge various delays in out acceptance.

#2 – Opportunities came to all these men. Some grasped theirs and moved steadily to the gratification of their deepest desires, but the majority hesitated, faltered and fell behind.

#4 – Good luck can be enticed by accepting opportunity.

#5 – Wealth that comes quickly goeth the same way.

#6 – If you desire to help thy friend, do so in a way that will not bring thy friend’s burdens upon thyselfs.

#7 – But help must be given wisely, lest, like the farmer’s ass, in our desire to help we but take upon ourselves the burden that belongs to another.

#8 – Three years I have labored each day except fast days, from morning unitl night, and I have denied myself many things that my heart craved. For each year of labor and self-denial I have to show one piece of gold. …. Therefore, I will no longer lend any of it where I am not confident that it is safe and will be returned to me. Neither will I lend it where I am not convinced that its earnings will be promptly paid to me.

#9 – In the day, behind the impregnable walls of insurance, savings accounts and dependable investments, we can guard ourselves against the unexpected tragedies that may enter any door and seat themselves before any fireside.

#10 – The hunger one becomes, the clearer one’s mind works.

#11 – Ill fortune! Wouldst blame the gods for thine own weakness. Ill fortune pursues every man who thinks more of borrowing than of repaying.

#12 -We found the trail to Babylon because the soul of a free man looks at life as a series of problems to be solved and solves them, while the soul of a slave whines, “What can I do who am but a slave?”

#13 – Where the determination is, the way can be found.

#14 – I like to work and I like to do good work, for work is the best friend I’ve ever known. It has brought me all the good things I’ve had, my farm and cows and crops, everything.

#15 – …how valuable work would be to me in the future: Some men hate it. They make it their enemy. Better to treat it like a friend, make yourself like it. Don’t mind because it is hard. … Remember, work, well-done, does good to the man who does it. It makes him a better man.

6.) 12 pravila za život: protuotrov kaosu – Jordan B. Peterson [5/5]

Odlična knjiga koju bi svima preporučio. Pravila koja ćete u njoj pronaći nisu magično rješenje svakodnevnih životnih problema, ali mogu dati dobre smjernice i što je najvažnije – mogu vam na nov način objasniti neke od univerzalnih životnih izazova. U posebnom blog postu donosim više citata.

Ostavio sam iza sebe dobar dio svoje prošlosti. U malenu mjestu svatko zna tko si. Vučeš za sobom svoje godine poput psa koji trči s limenkama zavezanima za rep. Ne možeš umaći onome što si bio.

7.) Željko Malnar: Put Aleksandra Velikog – Hassan Haidar Diab [3/5]

Sa tek 64 stranice ovo je više priča nego knjiga. Moram priznati da me razočara sve što ima ispod 200 stranica kvalitetnog sadržaja. Ipak, za sve koje zanima lik i djelo Željka Malnara ova knjižica biti će dobar uvid u jedno od njegovih putovanja. Cijelu knjigu njezin autor je prepričao gostujući u Podcast Inkubatoru.

Trenutno mi prigovaraju da sam jugoslavenski orijentiran, ali ja to nisam, ja sam Hrvat, rođeni Zagrepčanin i to ću uvijek biti. Osim toga, ja sam svjetski čovjek i želim učiniti nešto za Hrvatsku što će je uvesti u svjetsku kulturu. To će biti najveća ekspedicija na svijetu. Radit ću u ime svoje filozofije i za svoju zemlju. Bit ću ambasador koji će na svojem putu tumačiti svijetu situaciju u Hrvatskoj. Ovaj put može biti moj neki budući kraj, no ja želim postati vječnost.

8.) Izvan reda: još 12 pravila za život – Jordan B. Peterson [3/5]

Ova me se knjiga definitivno nije dojmila kao prva. Nisam se u njoj toliko pronašao niti sam imao osjećaj da se obraća meni. Ocjena koju sam dao ocjenjuje knjigu, a ne autora jer bi u suprotnom vjerovatno dao veću ocjenu. Neke ideje su reciklirane iz prve knjige na način koji mi nije toliko “sjeo”. Više citata iz knige u posebnom blog postu.

Zadajte si nekakav cilj. Izaberite ono najbolje što trenutno možete zamisliti. Bezglavo se tome posvetite. Putem uočavajte svoje pogreške i zablude, suočavajte se s njima i ispravljajte ih.

9.) Pojedi tu žabu – Brian Tracy [2/5]

Knjiga je definitivno mogla biti svedena na nekoliko Power Point slajdova. Naći ćete u njoj 21 natuknicu o načinima kako postići maksimalnu produktivnost, ali postoje puno bolje i detaljnije knjige o toj temi.

Ključ ostvarivanja visokih rezultata poslovanja i produktivnosti jeste stjecanje doživotne navike da se svakog jutra prvo uhvatite izvršenja najvažnije obaveze koju imate. Morate da naučite da rutinski “pojedete svoju žabu” prije no što napravite bilo što drugo i ne trošeći suviše vremena na razmišljanje o tome.

10.) The Millionaire Next Door – Thomas J. Stanley, William D. Danko [4/5]

Ova mi je knjiga dala nešto drugo od onoga što sam očekivao. Definitivno sam imao drugačiji pogled na tipičnog milijanaša. Svidjelo mi se kako autori kroz cijelu knjigu povlače paralelu između nekoga tko se samo prikazuje kao milijunaš od onoga tko to stvarno je.

Zanimljivo je koliko zapravo roditelji mogu odmoći svojoj, odrasloj, djeci ako ih nastave godinama financijski pokrivati. I onda jednom kada roditeljski priljev novca presuši dođe do problema jer se “djeca” nisu naučila brinuti sama o sebi i svojim obiteljima.

#1 – Wealth is not the same as income. If you make a good income each year and spend it all, you are not getting wealthier. You are just living high. Wealth is what you accumulate, not what you spend.

#2 – Most of us want to be wealthy, but most of us do not spend the time, energy, and money required to enhance our chances of realizing this goal.

#3 – Gift receivers … the adult children of the affluent feel that their parent’s wealth/capital is their income. … income to be spent.

#4 – Adult children who receive cash gifts are more likely than other adult children to live in anticipation of the sizable inheritance eventually coming their way.

#5 – People often attempt to shelter their children from the economic realities of life. But such shelter often produce adults who are in constant fear of tomorrow.

11.) Priče za razmišljanje – Jorge Bucay, Željka Somun [2/5]

Znao sam kakav sadržaj mogu očekivati i izgleda da sam imao prevelika očekivanja. Godinu sam htio završiti s knjigom koja će biti “pitka” za čitanje i u kojoj ću uživati tijekom blagdana i godišnjeg odmora. Nakon ove knjige počeo sam čitati i drugu knjigu istog autora pa ćemo vidjeti što će biti.

#1 – Samome sebi rado kažem kako je cijena koju valja platiti, kad konačno uzmognemo reći ne, prilika da ugledamo dosad neviđene vizure naših prijatelja: potiljak, leđa i sve one dijelove koji se vide saom kad netko odlazi.

#2 – Tragač je onaj koji traži, ne nužno onaj koji i nalazi.

12.) Ispričat ću ti priču – Jorge Bucay, Silvana Roglić [4/5]

Super knjiga za završetak kalendarske godine. Jednostavna za čitanje. Vrlo je slična kao prve dvije knjige koje sam pročitao početkom godine. Sastoji se od priča u kojima se svatko može pronaći.

#1 – Kako bi poletio, moraš početi prihvaćati rizik. Ako to ne želiš, najbolje bi bilo predati se i nastaviti hodati zauvijek.

#2 – Sada je napokon znao da je sam, da je to oduvijek bio, da ima samo sebe i sada se mogao smijati ili plakati. .. Ali zbog sebe, a ne zbog drugih. Sada je napokon znao: Njegovo postojanje ne ovisi o drugima. Otkrio je da je morao ostati sam kako bi se mogao suočiti sa samim sobom.

#3 – Gluhi uvijek misle da su oni koji plešu ludi.

Autor naslovne slike: Mystic Art Design

Implementacija CorvusPay kartičnog plaćanja koristeći Node.js, Express.js i Angular

U ovom blog postu možete saznati kako implementirati CorvusPay kartično plaćanje koristeći Node.js tj. Express.js i Angular Framework.

Kartično plaćanje provodi se kroz Corvus Form Service što znači da korisnik nakon odabira artikala bude preusmjeren na URL za autorizaciju kreditne kartice. Na tom URL-u ispunjava se obrazac s potrebnim podacima o kreditnoj kartici nakon čega korisnik ponovno bude preusmjeren na web shop gdje se najčešće prikazuje poruka o ne/uspješnoj kupovini.

Tijek transakcije kroz CorvusPay sustav odvija se na sljedeći način:

  • Kupac u web trgovini odabire proizvod ili uslugu koju želi platiti karticom.
  • Kupac se preusmjerava sa stranice trgovca na CorvusPay platnu formu (stranicu) gdje unosi podatke potrebne za realizaciju kartične transakcije.
  • CorvusPay šalje banci zahtjev za autorizacijom.
  • Banka šalje odgovor na zahtjev za autorizacijom na CorvusPay.
  • CorvusPay preusmjerava kupca na cancel ili success url kojeg definira trgovac ovisno o ishodu transakcije.

Moguća je i integracija tog obrasca unutar web shopa, ali u tom slučaju trgovac mora imati PCI DSS certifikat.

Tijek implementacije

Proces se istovremeno odvija u dva smjera. Prvi se tiče administrativnih poslova u kojima Corvus od trgovca prikuplja potrebnu dokumentaciju za pokretanje procesa aktivacije kartičnog plaćanje koju prosljeđuje prema bankama/kartičnim kućama.

Paralelno trgovac (web shop) postavlja obavezan sadržaj na web trgovinu (uvjeti korištenja i plaćanja, logo CorvusPaya,…), vrši implementaciju prema dostupnim uputama i testira sustav pomoću razvojnog certifikata. Nakon obavljenih testova postavlja se produkcijski certifikat čime se proces implementacije završava.

Uvod

Komunikacija između trgovca i usluge CorvusPay vrši se putem HTTPS POST web zahtjeva.

Svaki web zahtjev prema Corvusu treba obavezno sadržavati tri parametra, a to su:

Store ID
Secret Key
Client Certificate (.p12).

Dobiju se dva seta ovih podataka. Jedan set za testiranje, a drugi za produkciju.

Obavezni CorvusPay parametri

Obavezni parametri su: version, store_id, order_number, language, currency, amount, cart, signature i require_complete.

U slučaju greške pri kreiranju parametara prikazat će se sljedeći ekran:

CorvusPay greška
Vaš zahtjev ne može biti obrađen – CorvusPay

order_number mora biti jedinstven jer sustav će provjeriti i odbiti svaki upit na Corvus API ako narudžba s istim brojem narudžbe već postoji.

signature se kreira koristeći HMAC-SHA256. On se sastoji od svih obaveznih i opcionalnih vrijednosti (key-value field pairs), poredanih abecedno i spojenih bez razmaka.

To onda izgleda ovako:

na osnovu čega se dobije signature

signature = HMAC-256(key, key-value field pairs)

~ ključ: UNV3-i2otJw0rUWzA2lpcNRqTOYRWdAeTw
~ parametri:
– version : 1.3
– store_id : 2029
– order_number : 1537270065109
– amount : 10.00
– currency : HRK
– cart : kindle paperwhite
– require_complete : false
– language : hr

CorvusPay HTTPS POST
CorvusPay Integration Manual v5.1.0

Neobavezni CorvusPay parametri

Osim obaveznih parametara moguće je koristiti i neobavezne. U ovom slučaju to će biti parametri vezani uz plaćanje na rate.

Tri su načina pokretanja transakcije na rate:
• Fiksni broj rata
• Fleksibilan broj rata
• Samostalan odabir rata za određenu karticu

Napomene:
• Ako se za određenu platnu karticu ne pošalje parametar payment_brandName kartica neće biti dostupna za odabir
• Prvi znak parametra payment_ trebao bi biti jednak N ili Y jer to označava je li dozvoljeno jednokratno plaćanje ili ne
• Posljednja četiri znaka određuju raspon broja rata. Kupac može odabrati broj rata u rasponu između prvog dvoznamenkastog broja i drugog dvoznamenkastog broja

CorvusPay plaćanje na rate
CorvusPay Integration Manual v5.1.0

Web aplikacija (Angular)

Unutar forme pomoću POST metode poziva se API za pokretanje kartičnog plaćanja.

Sve navedene vrijednosti su promjenjive tako da ih prilikom svake promjene unutar .ts datoteke treba osvježiti i unutar forme </form>.

Parametri signature i payment_ mogu se kreirati na frontendu i backendu. U ovom slučaju oni će se kreirati na frontendu i prosljeđivati kroz formu na API.

Za potrebu kreiranja HmacSHA256 potpisa koristi se crypto-js. Uz to, unutar environment varijable nalaze se razvojni i produkcijski parametri secretKey i storeId.

Glavna razlika u ovom dijelu tiče se ukupne cijene tj. ovisno o tome prelazi li iznos od 500kn plaćanje na rate biti će odobreno ili onemogućeno. U oba slučaja kreira se različit signature.

Za ukupan iznos veći ili jednak 500kn koristi se sljedeće:

CorvusPay - plaćanje na rate

Dok se za iznose manje od 500kn koristi:

CorvusPay - jednokratno plaćanje

Backend API (Express.js)

Backend logika nalazit će se u server.js datoteci. Kako ju kreirati možete se vidjeti u blog postu “Izrada RESTful API-ja koristeći Node.js i Express.js“. Razlika između primjera iz tog blog posta i ovoga sada je što više nije potrebno koristiti body-parser.

Ova će se datoteka sastojati od tri krajnje točke (API endpoints).

Prva krajnja točka, '/corvusPay', preusmjerit će korisnika na formu za plaćanje.

Nakon unosa i obrade podataka o kartici

CorvusPay - obrada u tijeku
CorvusPay – obrada u tijeku

korisnik je preusmjeren na dodatnu sigurnosnu autentifikaciju kartice.

CorvusPay - sigurnosna autentifikacija kartice
CorvusPay – sigurnosna autentifikacija kartice

Ako je sve prošlo uspješno korisniku će se prikazati obavijest

CorvusPay - transakcija-uspjela
CorvusPay – transakcija uspjela

i na e-mail će dobiti obavijest o uspješnoj narudžbi.

CorvusPay - obavijest o uspješnoj narudžbi
CorvusPay – obavijest o uspješnoj narudžbi

Druga krajnja točka, '/corvusPaySuccess' , prihvaća odgovor od Corvusa kada je plaćanje uspješno provedeno.

CorvusPay - uspješno plaćanje

Treća krajnja točka, '/corvusPayCancel' , prihvaća odgovor od Corvusa kada je plaćanje neuspješno ili otkazano.

CorvusPay - neuspjelo plaćanje

30 dana bez društvenih mreža

Za 30-dnevni izazov u 10. mjesecu odabrao sam 30 dana bez društvenih mreža (Facebook, Instagram i LinkedIn).

Već 30.09. poslije podne sa mobitela sam deinstalirao aplikacije, a na PC-u se odjavio i maknuo prečace.

Prvih nekoliko dana uzeo bih mobitel, otključao ga i krenuo otvoriti Facebook ili Instagram totalno nesvjestan činjenice da sam u ovom izazovu i da zapravo nemam, vrlo vjerovatno, što pametno za vidjeti. Tada sam shvatio da je to navika koje sam se zapravo htio riješiti.

Zašto, samo, 30 dana bez društvenih mreža?

Htio sam sebi dokazati da nisam ovisan o društvenim mrežama i vidjeti do koje razine ide ta navika i koliko će mi sve to svakodnevno faliti.

Prva stvar ujutro i navečer bila bi “obići” društvene mreže i vidjeti što ima novo. Najčešće nije bilo ništa.

Također, još i prije početka izazova smatrao sam da su društvene mreže korisne i da nema smisla trajno ih se riješiti. To mišljenje sam završetkom ovog izazova potvrdio jer nitko umjesto mene nije odabrao što ću i koga pratiti i zato nemam potrebu na društvene mreže gledati toliko negativno.

Krajem prvog tjedna više nisam uopće imao potrebu za društvenim mrežama niti sam imao osjećaj da nešto propuštam (FOMO). Postalo mi je prirodno da ih ne koristim i nisam se više time zamarao.

Tako mi je i sada 07.11. kada pišem ovaj blog post. Iako je izazov prestao navika mi se nije vratila. Jednostavno mi više nije prva stvar otvoriti društvene mreže kada uzmem mobitel ili sjednem za PC. Dobar je to osjećaj. Znam da je klišej, ali više sam čitao nego inače.

Zaključak

Zaključak ovog izazova zapravo je opće poznat – nisu problem društvene mreže nego način na koji se koriste. Mogu biti vrlo korisne ako se koriste ispravno. A svatko za sebe treba odrediti što znači ispravno.

Aplikacije sam ponovno instalirao, ali neće mi više biti na prvom ekranu. Također, prisjetio sam se zašto sam se uopće registrirao na njih i to mi je pomoglo u osvješćivanju činjenice koliko sam se u međuvremenu udaljio od toga. Kako bi se vratio prvotnom cilju obavio sam reviziju sadržaja i osoba koje pratim jer se tijekom vremena korištenja tu stvarno skupilo svega.

Autor naslovne fotografije: Gerd Altmann.

Citati iz knjige “Izvan reda: još 12 pravila za život – Jordan B. Peterson”

Nakon knjige “12 pravila za život” došao je na red i njegov nastavak pod naslovom “Izvan reda: još 12 pravila za život”.

Ova me knjiga nije toliko oduševila. Vjerovatno sam imao puno veća očekivanja.

Nisam se u njoj toliko pronašao niti sam imao osjećaj da se autor obraća meni.

Neke ideje su reciklirane iz prve knjige na način koji mi nije toliko “sjeo”.

U nastavku izdvajam nekoliko citata kao i popis novih 12 pravila.

1. pravilo – nemojte olako kritizirati društvene institucije i kreativna postignuća

1.1. – Međutim, ljudi su društvena bića par excellence i posvuda oko sebe možemo pronaći i mudrost i vodstvo ugrađene u društveni svijet. Zašto se oslanjati na vlastite ograničene sposobnosti da zapamtimo put ili da bismo se znali orijentirati na novom teritoriju kad se možemo osloniti na znakove i putokaze koje su drugi s toliko truda već postavili?

2. pravilo – zamislite tko biste mogli biti i svesrdno tome težite

2.1. – Zadajte si nekakav cilj. Izaberite ono najbolje što trenutno možete zamisliti. Bezglavo se tome posvetite. Putem uočavajte svoje pogreške i zablude, suočavajte se s njima i ispravljajte ih.

3. pravilo – ne skrivajte neželjene stvari u magli

3.1. – Prvo, ako se nešto događa svakoga dana, važno je, a ručak je svakodnevna stvar. … Drugo, ljudi često dopuštaju da navodno sitne iritacije (koje, kako rekoh, nisu sitne ako se stalno događaju) traju godinama, bez komentara ili rješenja.

3.2. – Uostalom, put do Svetoga grala počinje u najmračnijem dijelu šume, a ono što trebate skriveno je tamo gdje najmanje želite gledati.

4. pravilo – uočite da prilike leže tamo gdje su se drugi odrekli odgovornosti

4.1. – Nije dobro biti najstarija osoba na studentskoj zabavi. To je očaj prerušen u ležerno buntovništvo, a s njim dolaze i osjetljiva malodušnost i arogancija. To odiše Nigdjezemskom. Jednako tako, privlačni potencijal talentirana dvadesetpetogodišnjaka bez cilja u tridesetoj počinje izgledati beznadno i patetično, a u četrdesetoj je već odavno premašio rok trajanja. Morate žrtvovati nešto od svoga mnogostrukog potencijala u zamjenu za nešto stvarno u životu. Ciljajte na nešto. Dovedite se u red. Ili snosite posljedice. A koje posljedice? Sva patnja života, bez trunke smisla. Ima li boljega opisa pakla?

5. pravilo – ne činite ono što mrzite

5.1. – Ako se zbog onoga što radite impulzivno istresate na druge; ako vam ono što radite podriva motivaciju da idete naprijed; ako i zbog onoga što radite i zbog onoga što ne radite osjećate prijezir prema samom sebi i prema svijetu (što je još gore); ako vam se zbog načina na koji živite teško buditi ujutro s vedrinom i radošću; ako vas muči snažan osjećaj da ste sama sebe izdali – onda možda ignorirate taj tihi, mali glas jer ste skloni misliti da na njega pozornost obraćaju samo slabi i naivni.

6. pravilo – napustite ideologije

6.1. – Put ressentimenta put je iznimne ogorčenosti. To je dobrim dijelom posljedica nastojanja da neprijatelja radije tražimo vani nego unutra. Primjerice, ako je problem bogatstvo, a bogate vidimo kao razlog postojanja siromaštva i svih drugih problema u svijetu, onda su bogati nužno neprijatelji – poistovjećuje ih se sa samim zlom i njegovim demonskim utjecajem na psihu i društvo. Ako je problem moć, onda oni koji imaju bilo kakvu vlast predstavljaju jedini uzrok sve patnje u svijetu. Ako je problem muževnost, onda sve muškarce (ili čak sam koncept muškoga)treba napasti i obezvrijediti. Takva podjela svijeta na druge kao đavle i nas kao svece opravdava sebeljublje i mržnju, a to su neophodne sastavnice za moral ideološkoga sustava.

7. pravilo – dajte sve od sebe barem u jednoj stvari i vidite što će se dogoditi

7.1. – Ciljajte. Gađajte. Sve je to dio sazrijevanja i discipline, sve je itekako vrijedno i dragocjeno. Ako ni da što niste usredotočeni, sve će vas mučiti. Ako nemate jasan cilj, nemate što činiti i nemate ništa iznimno vrijedno u životu, zato što vrijednost podrazumijeva vrednovanje opcija i žrtvovanje onih nižih u korist onih viših.

7.2. – Puno je bolje postati nešto, nego ostati bilo što i ne postati ništa.

8. pravilo – jednu sobu u svojoj kući nastojte učiniti što ljepšom

8.1. – Teško je nešto učiniti lijepim, ali je itekako vrijedno truda. Ako nešto u životu učinite istinski lijepim – barem jednu stvar – to znači da ste uspostavili vezu s ljepotom. Potom taj odnos možete početi širiti i na druge elemente svoga života i svijeta.

9. pravilo – ako vas progone stare uspomene, zapišite ih, pažljivo i u cijelosti

9.1. – Moramo se prisjećati svojih iskustava i iz njih izvlačiti pouke. U suprotnom ostajemo u prošlosti, a onda nas opsjedaju uspomene, muči nas savjest, cinični smo zbog gubitka onoga što je moglo biti, ne možemo si oprostiti i ne možemo prihvatiti izazove i tragedije s kojima se suočavamo. Moramo se prisjećati sebe samih, inače ćemo patiti proporcionalno svojem neznanju i izbjegavanju. Moramo iz prošlosti prikupiti sve ono što smo izbjegli. Moramo rasvijetliti svaku propuštenu priliku. Moramo se pokajati za svoje promašaje, razmišljati o pogreškama, postići ono što smo trebali postići i dovesti se u red.

10. pravilo – planirajte i marljivo održavajte romantiku u svojoj vezi

10.1. – Ako želite dugoročno sačuvati romantiku s partnerom, morate imati širu strategiju koja će obuhvatiti cijelu vašu vezu. Ma kakva ta strategija bila, uspjeh će joj ovisiti o vašim pregovaračkim sposobnostima. Za pregovaranje je potrebno da i vi i osoba s kojom pregovarate najprije znate što svatko za sebe treba (i želi) – te da i o jednom i o drugom otvoreno razgovarate.

10.2. – Ne uspijete li odrediti što želite, vaš će nesretni partner morati pogađati što vam se sviđa, a što ne – i vjerojatno ćete ga nekako kazniti ako pogriješi. Uostalom, s obzirom na sve ono što biste mogli željeti – a ne želite – gotovo je sigurno da će pogriješiti. Zbog toga ćete imati razlog kriviti ga – barem implicitno, barem neverbalno, možda i nesvjesno – jer mu nije dovoljno stalo da primijeti ono što ni vi sami niste spremni primijetiti. Mislit ćete, odnosno osjećati (i bez svjesnoga razmišljanja) ovako: “Da me zbilja voliš, ne bih ti trebao govoriti što bi me usrećilo.” To nije dobra strategija za sretan brak.

10.3. – Uostalom, život se uglavnom i sastoji od stvari koje se rutinski ponavljaju. Ili ćete pregovaranjem utvrditi tko je odgovoran za svaku od tih dužnosti ili ćete se zauvijek natezati oko njih neverbalnim borbama, tvrdoglavošću, šutnjom i napola ostvarenim pokušajima “suradnje”. Vaša se romantična situacija od toga neće baš popraviti. Zbog toga je od ključne važnosti da u svojoj kućnoj ekonomiji udarite čvrste temelje svemu što se tiče vođenja domaćinstva.

10.4. – Možda ćete se trebati posvađati na stotine puta. Desetke puta sigurno. No to su svađe sa svrhom, a svrha je raspravljati sve dok se ne pronađe rješenje nakon kojega više neće biti potrebno svađati se oko isstoga problema. Prema tome, cilj je mir, kojega nema bez pregovaranja, a to zahtijeva predanost koja je dovoljno snažna da možete izdržati ozbiljne i velike sukobe.

11. pravilo – nemojte postati ogorčeni, podmukli ni oholi

11.1. – Osim toga, ne možete pobjeći od sebe, a to nije šala. Odlugovlačite, lijeni ste, lažete i činite zlo i sebi i drugima. S obzirom na sve što se urotilo protiv vas, nije ni čudo da se osjećate kao žrtva: kaos, nemilosrdna sila prirode, tiranija kulture i zloća vaše vlastite naravi.

11.2. – Zapravo, mislim da opravdano možemo reći kako ogorčenost i kompleks žrtve često nalazimo kod ljudi kojima je odveć lako u životu, kod onih koji su razmaženi i imaju lažno visoko samopouzdanje.

12. pravilo – budite zahvalni usprkos patnji

12.1. – Prema tome, potpuni slom nakon gubitka voljene osobe više nalikuje izdaji preminuloga negoli dokazu naše ljubavi prema njemu zato što samo umnažamo posljedice te kobne katastrofe. Samo narcisoidni egocentrik može poželjeti da njegovi voljeni beskonačno pate nakon što on umre. Puno je bolje pokazati snagu pred licem smrti – bolje je i za osobu koja umire i za one koji za njom ostaju.