Lord Chaitanya (new, expanded, second edition) Urmila Devi…
→ Dandavats



Lord Chaitanya (new, expanded, second edition)
Urmila Devi Dasi: Teacher/Parent Guide activities for children aged 4-18
Five-day Teacher/Parent Activity Guide for Lord Chaitanya festivals, with a concentration each day on one of the five most potent items of devotional service as related to that festival. This program is flexible and can be used in several ways.
To download the pdf document click here: https://goo.gl/8UIdxv

How to avoid becoming discouraged when we are unable to pronounce the mahamantra clearly and correcting it takes too much time?
→ The Spiritual Scientist

Answer Podcast


Download by “right-click and save content”

The post How to avoid becoming discouraged when we are unable to pronounce the mahamantra clearly and correcting it takes too much time? appeared first on The Spiritual Scientist.

Mayapur Kirtan Mela Inauguration Evening (Album with photos)…
→ Dandavats



Mayapur Kirtan Mela Inauguration Evening (Album with photos)
Srila Prabhupada: O my Lord! Persons who chant the holy names of your Lordship are far, far advanced in spiritual life, even if born in families of dog-eaters. Such chanters have undoubtedly performed all kinds of austerities and sacrifices, bathed in all sacred places, and finished all scriptural studies. (Srimad-Bhagavatam, 3.33.7)
Find them here: https://goo.gl/Flpb3I

When Krishna can free us from illusion, can’t he free us from pride too?
→ The Spiritual Scientist

Answer Podcast


Download by “right-click and save content”

The post When Krishna can free us from illusion, can’t he free us from pride too? appeared first on The Spiritual Scientist.

If Bhagavatam and Bible come from different frames of reference, does that mean everything is relative?
→ The Spiritual Scientist

Answer Podcast


Download by “right-click and save content”

The post If Bhagavatam and Bible come from different frames of reference, does that mean everything is relative? appeared first on The Spiritual Scientist.

Is the Biblical Adam-Eve story of creation reconcilable with the Bhagavatam’s description of narration?
→ The Spiritual Scientist

Answer Podcast


Download by “right-click and save content”

The post Is the Biblical Adam-Eve story of creation reconcilable with the Bhagavatam’s description of narration? appeared first on The Spiritual Scientist.

If everything coming from Krishna is also Krishna, then is everyone God?
→ The Spiritual Scientist

Answer Podcast


Download by “right-click and save content”

The post If everything coming from Krishna is also Krishna, then is everyone God? appeared first on The Spiritual Scientist.

Их пожеланье
→ Traveling Monk

 “Я поклоняюсь ежедневно Махадеву, тому, который на берегу Ямуны.
Тому же Гопишваре Махадеву со всей своей преданностью поклонялись гопи,
и он быстро исполнил их пожелание заполучить ценнейшую драгоценность – объятья сына Нанды Махараджи”.

[ Шрила Рагхунатха дас Госвами, «Враджа-виласа-става» ]

https://www.facebook.com/photo.php?fbid=10205736299349683&set=a.3707173840886.2134384.1321748113&type=3&theater&viewas=100000686899395
“Each day I worship Gopisvara Mahadeva, who is situated on the bank of Yamuna. That same Gopisvara was worshipped with deep devotion by the gopis, and he quickly fulfilled their desire to attain a supremely precious jewel in the form of the embrace of the son of Nanda Maharaja .”
[ Srila Raghunatha das Goswami, Vraja-vilasa-stava ]

Chatur Shloki Bhagavatam 1 – Understanding the Absolute Truth
→ The Spiritual Scientist

Podcast


Download by “right-click and save content”

The post Chatur Shloki Bhagavatam 1 – Understanding the Absolute Truth appeared first on The Spiritual Scientist.

Preaching
→ Dandavats

Hare KrishnaBy Krpakara dasa

When is a person Krsna conscious enough to preach? Lord Caitanya encouraged all His disciples and followers to preach Krsna consciousness widely-to every town and village. The Krsna consciousness movement following in the footsteps of Sri Caitanya is very much a missionary movement, and our founder Srila Prabhupada exemplifies that preaching spirit. Prabhupada travelled to the West to introduce Krsna Consciousness for no other reason than to fulfill the desires of his spiritual master, the previous acaryas, and the Supreme Personality of Godhead. Those desires are to give everyone the chance to know about Krsna, to give everyone the benediction of Krsna Consciousness. That desire of the acaryas is so strong because they see the suffering of the people without Krsna Consciousness. Continue reading "Preaching
→ Dandavats"

The Problem with the World in Two Letters: MY
→ Dandavats

Hare KrishnaBy Karnamrita dasa

The concept that we are not our bodies is considered a preliminary basic understanding for devotees, yet this conception has proved not so easy to put into practice. We can all look within ourself and at our communities and society and contemplate how our failure to realize this truth is the cause of many of our disagreements and heated debates. Lets look at the basics of our embodiment. The soul takes on a material body and mind, with an ego that says, “This is me.” The false ego (“false” because we have a real spiritual identity beyond physical forms) or our material “I” defines itself by what it thinks it possesses--what is mine, our “mys”. This “my-ness” is the basis of all problems the soul faces in the material world, including our problems in dealing with other persons, or souls also conditioned by “my-ness”. It is interesting how “my-ness” sounds like minus, since our material conceptions of identity can only exist if our spiritual identity is forgotten (the soul minus its true eternal identity is a forgetful soul habituated to living under the conditions or laws of matter.) Continue reading "The Problem with the World in Two Letters: MY
→ Dandavats"

Promoting the Vedic Culture
→ Dandavats

By Bhakti Nilaya das

A sign of a good leader is that he does not request those under him to do something that he is not prepared to do. So before we desire to distribute this Vedic culture to the whole world, we ourselves have to be following it in such a way that nobody can find even a minute discrepancy in our practice. People are too attached to their sense gratification and won't be so readily eager to give it up, and although they may have some attraction to the Vedic culture, if the mind can find an excuse for why they should not practice it, they will most likely follow the mind. They have seen that the Vedic culture is the actual original culture with the most bonafide and practical philosophy. They want to see whether this is really what they and their family will want to commit to. They usually base their decisions upon seeing the way the current practitioners practice. The common question that arises is: ''The Vedic culture has the worlds best philosophy but is it practical for me and my family?'' So if the character of the preacher is spotless then they will wholeheartedly embrace this culture, the opposite is also there. Continue reading "Promoting the Vedic Culture
→ Dandavats"

“I want you to go to China.” Tamal Krishna Goswami:…
→ Dandavats



“I want you to go to China.”
Tamal Krishna Goswami: Our Radha Damodar party was quite energetic. By the time a year was over, forty percent of the total BBT proceeds came from our party. But we were creating quite a bit of disturbance because some brahmacharis were leaving their temples, wanting to be with the sannyasis, and the sannyasis were saying, “It’s better for the brahmacharis to be with us than to be under these grihastha temple presidents.”
So, by the time we went to India, we brought with us ninety brahmacharis. The Radha Damodar party had the whole third floor of the lotus building. We were riding the crest waves of success.
The Christmas marathon had been a heavy competition between Jayatirtha in California and the Radha Damodar party. Ramesvara kept on asking me, “How much are you going to give to the book fund?”
I said, “I’m going to send you a blank check. Put it in your safe and whatever the amount Jayatirtha gives, add ten thousand and deposit it and it will clear at the end of the month.” I was very determined to defeat them.
By the end of the 1975 Christmas marathon, the Radha Damodar Party gave one hundred ninety-five thousand dollars to the book fund. We did a quarter of a million Back to Godhead’s and sixty thousand big books. It was a massive thing.
But people were getting agitated. In Mayapur, all the temple presidents complained to Prabhupada. I was sitting in the room and Prabhupada was looking at me. When everybody left I kept sitting there because I thought, “I’d better talk to Prabhupada alone.”
Prabhupada looked at me and I said, “I don’t know what to do. Maybe I should go to China or something.” To go to China was like going to the moon. It was said like that. Anyway, I walked out.
The next morning, right in the middle of arati, Prabhupada’s servant tapped me and said, “Prabhupada wants to see you.” I said, “I’m not going.” I meant, “I’m not going up to see him, and I’m not going to China.”
Finally I had to go to Prabhupada. Prabhupada said, “I want you to go to China.” I said, “China? The Radha Damodar Party—I have to be there.” He said, “No, I want you to go to China,” and he walked out to go to the bathroom, brush his teeth, and freshen up for his walk.
He came back and put on tilak. He said, “I want you to go to China.” I started to give excuses, that “If I go to China, what’s going to happen to the Party?” Prabhupada said, “Don’t worry about the Party.”
His bottom lip started to quiver. His hand was shaking. He said, “Don’t worry about the Party.” I said, “But this is an important service.” He said,
“Then I take that service away from you. You have no other service to do now. Either you go to China, or you sit in Mayapur and chant Hare Krishna. There’s nothing else for you to do.”
Gurukripa was sitting behind me, and he said, “I’ll go to China.” Prabhupada said, “No, he must go to China.” I was sitting there going, “Oh.” Then I suddenly realized, “Wait a moment, the Radha Damodar Party is meant for Prabhupada’s pleasure, and if by going to China Prabhupada will be pleased, my life is made.”
So I immediately looked at Prabhupada and said, “Okay, I’m ready to go.” Prabhupada beamed. We went upstairs, because Prabhupada would walk around and around on the roof.
He announced, “Tamal Krishna Maharaj is going to China.” Everybody went, “Jai, hari bol!” Prabhupada turned this heavy situation into a glorious act. He was so expert. He never said too much about the whole thing.
He never said to me, “People are complaining about you,” or this or that. He found a way to correct the entire situation and open up something wonderful for Krishna. He found a way to turn what appeared to be a negative situation into a positive event.
—Tamal Krishna Goswami
Excerpt from “Memories-Anecdotes of a Modern-Day Saint”
by Siddhanta das www.prabhupadamemories.com

March 7. ISKCON 50 – S.Prabhupada Daily Meditations. Satsvarupa…
→ Dandavats



March 7. ISKCON 50 – S.Prabhupada Daily Meditations.
Satsvarupa dasa Goswami: Prabhupada Wrote His Books for Us!
Prabhupada loved to write because it was an effective way to spread Krishna consciousness. He got good results from his writing. He also communed deeply with the previous acaryas when he wrote. He felt their power, even when his essays weren’t being read. Writing seemed to be his dharma. Even his spiritual master encouraged him to write. So, Srila Prabhupada became occupied with writing books, and he saw temple construction as not important for him, especially in the years before he came to America. He saw himself as following his guru’s example, and his order: “If you ever get money, print books.” Prabhupada wrote that the first duty of a sannyasi is to write books.
Prabhupada’s books teach us about the spiritual relationship between the disciple and the spiritual master. Prabhupada’s books are like the map, but I still have to undertake the journey myself. I study the symbols on the page; they refer to a situation like my own, describing what is required of me as a disciple in giving my whole life to Srila Prabhupada. The map marks out hazard areas – don’t be whimsical, don’t disrespect the spiritual master, pray to him, inquire from him … But it remains general. Each of us has to make our own journey guided by the map of the sastra. The journey is meant to be long; one has to pass through all phases of life in this body while he traverses the path. But still, the sastra gives us only general guidelines.
The Nectar of Devotion states that one should accept the shelter of a bona fide spiritual master, accept initiation from him, and receive instruction in Krishna consciousness while serving him in faith and confidence. But even Rupa Gosvami admits that he is speaking only basic principles. Prabhupada comments,
To read the entire article click here: http://www.dandavats.com/?p=20490&page=6

Vidura Das 1944 – 2016
→ New Vrindaban

A disciple of Srila Prabhupada and long time resident of New Vridaban, Vidura and his wife of 45 years, Tryadhisa, have been serving in the Dhama since 1984.

On July 31st of 1970 Vidura and Tryadhisa married, soon after Vidura ran across a copy of the Bhagavad Gita As It Is in a used book store and began his spiritual awakening. That same year while in Boston they ran into devotees in downtown Boston performing sankirtan. “Jadhurani was taking donations in a conch shell and gave us the pamphlet on chanting Hare Krishna” recalls Tryadhisa. Shortly afterwards they both joined ISKCON in Boston and Vidura took first initiation from Srila Prabhupada, July 18, 1971.

Vidhura holding the umbrella serving Srila Prabhupada

Vidhura holding the umbrella serving Srila Prabhupada

Vidura served as the sankritan leader in many cities and setup college preaching programs wherever he went. A land surveyor by profession, he endeavored on many projects in New Vrindaban such as the brick road, parking lot, devotee houses and many land surveys. In 1973, he participated in the construction of the Krishna Balarama Mandir in Vrindavan.

After living in Boston for some time Vidura missed Sri Sri Radha Vrindaban Chandra and in 2008 he built his own house, close to the temple in New Vrindaban, mostly himself. He woke up every morning at 4:30 to chant his rounds, and read from Srimad Bhagvatam for the rest of his life. He enjoyed listening to Prabhupada lectures and kirtans throughout the day.

Back in 2013, Vidura was diagnosed with cancer of the tonsils and began two rounds of chemotherapy and radiation at Wheeling Hospital in West Virginia. At first the doctors thought his condition was improving; however, a PET scan on August 28, of 2015 revealed that the cancer had metastasized, spreading to his lungs and they gave him 6 months to live. As the months progressed his condition declined and it became increasingly difficult for him to breath.

Then on Lord Nityananda's appearance day, Vidura's breathing went from labored to shallow as his loving wife was reading to him from Srimad Bhagavatam about the soul going back to Godhead. She sprinkled Ganga jala into his mouth and on to his head as she chanted Hare Krsna to him. He left his body at 10:15 am February 20, 2016, as Srila Prabhupada was singing Nitia Pada Kamala softly in the background.

Vidura Prabhu is survived by his wife of 45 years, Tryadhisa Dasi, and many friends around the world.

How to be a better developer
→ Home

Head over to the SilverStripe team page and take a look at Hamish Friedlander, the SilverStripe CTO. Now take a look at me, then look back to Hamish, then back to me. What do you see? I think you will see that I am not nearly as smart as Hamish.

You might be thinking: “No way! Dr. Seidenberg, you have a PhD, you must be supremely smart!” But that’s not true, I assure you, I can’t match Hamish’s intelligence, not even close. But that’s okay. Why? Well, that’s what this blog post is about.

While it is very difficult to increase raw intelligence. There is much more to being a good developer (and getting a PhD) than being smart. So, for us lesser mortals, here are some tips for becoming a better developer.

Being a better developer is about four things:

  1. Qualities
  2. Attitude
  3. Techniques
  4. Communication

 

1. Qualities

Humility

C.S. Lewis once said:

“Humility is not thinking less of yourself, it is thinking of yourself less”.

A great developer will act for the good of the software, not their own ego. The best ideas and the best code need to win, regardless of their origin. A great developer will listen to the even the most quiet intern who has a great idea for improving the project. They will say: “Oh, great point! I didn't think of that. Let's do as you suggest.”

Grit

After 4.5 years of researching Semantic Web ontologies, I was ready to quit. But I didn’t. I had some grit. Grit is the ability to pursue long-term goals despite numerous struggles and setbacks. I had enough grit, enough tenacity, perseverance and drive to push through and finish the PhD.

A great developer has lots of grit. You might try this self-test to see how gritty you are. Learn more about grit on this TED talk.

Enthusiasm

“Nothing great was ever achieved without enthusiasm” - Ralph Waldo Emerson

Enthusiasm is necessary. No one likes a mopping developer who complains about everything. That brings down everyone’s morale. A great developer likes technology and finds programming fun, interesting and rewarding. If you are currently not overly enthusiastic, fake it till you make it. Soon you and the rest of your team will be genuinely bouncing off the walls with enthusiasm.

2. Attitude

Desire

The first step in any action is desire. Without desire nothing happens. Ask yourself: do you actually want to be a better developer? You might be surprised that for some people the answer is “no”. Some developers are content with their current skill level. For some people, it’s enough to have a stable job, do adequate work, support their family and pay the bills. That’s a perfectly reasonable life decision for someone to make. But that’s not who this blog post is for. This post is for someone who desires to be supremely awesome at their job.

However, say, for example, you don’t have the desire to become a super-developer, but you wish you did. Congratulations! That kind of recursive meta-desire is both a good first step and a very cool concept in and of itself. The way to develop desire is to associate with others who have a strong desire already. So, find some developers who really care about improving themselves, make friends and hang out with them. Soon their infectious desire will rub off on you.

Appreciation

A good developer appreciates beautiful code. Let me give you an example. Take a look at this code sample:

Can you guess what the code is? It’s the Quicksort algorithm implemented in Javascript. This algorithm was developed by Sir Tony Hoare in 1959 and is still in use today. Just look at that code. It’s beautiful. It’s poetry. So clever, clean, and concise. I love it!

A good developer must genuinely appreciate excellent code. To be truly good at programming you need to appreciate good coding when you see it - just like a good musician naturally appreciates good music.

Ask for help

There is no shame in asking for help. Some lone-wolf developers would rather hack away at a problem for days, rather than admitting that they could use some help. Don’t be that person. Ask for help. Sometimes a second set of eyes will point out the obvious to you. Sometimes just explaining your thinking to another person will give you the critical insight. Sometimes someone doing right kind of socratic questioning on you will make you think of something you hadn’t previously considered. Great developers love asking for help.

Ownership

The difference between a senior developer and an intermediate developer is that the senior developer takes ownership of the software they are creating. An intermediate developer will do a good job working on their assigned task, competently implementing all the requirements. A senior developer, however, will discover five additional requirements the person writing the requirements document hadn’t even considered and make sure those are done, too. The senior developer takes ownership of the software.

3. Techniques

Memory management 

No, not the computer’s memory. The developer’s memory. Humans can only hold 5-9 conceptsin their short term memory at one time. That is an extremely limited amount of RAM we have to work with. So, while programming, a good developer always uses abstraction and interfaces to make it possible for them to understand what one aspect of the application is doing without having to remember the whole thing. A good developer constantly juggles layers of information they hold in their memory while programming. Sometimes focusing-in on the details of a particular method, other times zooming out to arrange software components at a high level.

I would also recommend adding copious amounts of comments to remind oneself what one was thinking when one wrote a particular class or method. That makes zooming-in so much quicker.

Plan

It’s so tempting to dive in and start coding right away. Don’t do it! Any programming task can benefit from a bit of up-front thought. Maybe draw a little diagram, maybe sketch something out on a whiteboard, maybe write some high-level pseudo-code, maybe just think about your approach for an hour or two, whatever you do, do some planning.

ToDo is a NoNo

Have you written a comment something like this before?

//TODO: This is kind-of a hack, it might fail in a way that is unlikely to happen, but will totally break production when it does, and it will be impossible to diagnose. We should refactor this sometime.

Don’t ever do this. No one ever goes back through all the random todo comments in a codebase. I find there are two reasons why developers add todo comments:

1. They are lazy and can’t be bothered to implement something properly.
2. Doing something properly will genuinely take too long at the current stage of the project.

If you find yourself in scenario #1: easy, don’t be lazy! With scenario #2: don’t use a todo that no one will remember. Instead, use your project management software to write a task and make sure the Project Manager knows about it and why it is important, so they can prioritise the task appropriately.

Take a break

There is some false bravado in working long hours, hacking away at a problem. But the brain works in mysterious ways. Our subconscious is often much better at solving a problem without our conscious awareness, certainly better than our haze of sleep-deprived, caffeine-fueled forced-thinking.  It happens to me all the time: I’m faced with an impossible problem, spend the whole day working on it, get nowhere; then, after a good night’s sleep, I solve the problem in 10-minutes flat.

Sometimes the most productive thing you can do is to stop working. A good developer will know themselves well enough to know when they should work and when they should relax.

4. Communication

Teamwork

The productivity of the team is more important than one’s own productivity. A great developer will gladly spend the entire day helping team members who are stuck, even if it means they get nothing done that day themselves. This highly scientific formula explains it: (One developer working + five developers stuck) < (one developer getting nothing done + five developers working).

Talk

Talking in-person is a great way to communicate. Talking in-person allows people to communicate rapidly and use non-visual cues to focus on the exact knowledge that needs to be communicated.

Introverted developers like to focus on their computer, maybe occasionally using instant messaging, or email to communicate. But written communication is slow and easy to misunderstand. A good developer will know when it’s time to stand up, walk three meters to the next desk and talk to their fellow developers.

Pair program

Awesome developers have a secret superpower. It’s a power one level up from the awesome “talking in-person” superpower. Pair programming is this power.

Pair programming is something all developers should do when faced with a difficult programming challenge. Two developers working together can solve a difficult problem much quicker and much better than one developer working alone. Two developers can talk with each other, sharing understanding and vocalising their thoughts, they can keep each other focused on the task at hand, giving the task far more concentrated attention than a single developer could bring to bear, and they can constantly be checking each other’s work for bugs or oversights. Finally, at the end of the endeavour, both developers have a detailed understanding of the solution. It’s also just plain fun. So, be a great developer, use the pair programming superpower.

Get in the zone

Watch a Starcraft tournament sometime. Starcraft is a serious sport with the top players (all Korean) winning hundreds of thousands of dollars in prize money and sponsorships. As you watch a Starcraft game occasionally the camera will show the players’ faces. The players are ultra-focused on the game. They are some of the most concentrated people you will ever see in your life. They are in the zone.

If you have experienced the zone, then you know it is blissfully absorbing. Your attention is completely taken away from other things. Your mind detaches from your body. You are fully in the moment, not conscious of the body, outside reality, or the passage of time. The zone produces an inner clarity where the activity you are doing becomes its own reward and you feel fantastic.

Needless to say, programming in the zone is super-productive. The best developers try to get into the zone as often as possible, and a long time period with no distractions is a prerequisite for entering into the zone.

So, if you want to enter the zone, arrange your day so all the meetings are clustered together and you have a big chunk of uninterrupted time. Also, use an obvious visual cue, like wearing big headphones, and explain to everyone around that it means: “if you value your life, don’t interrupt me unless something is on fire”. Then relax and enjoy your amazing zone-level programming productivity.

Conclusion

You don’t need Hamish-level intellect to be a good developer. Just develop excellent qualities, adopt the right attitude, practice good development techniques and communicate well; and soon you’ll be developing with the best of them. Good luck!

(previously published on SilverStripe.org)

How to be a better developer
→ Home

Head over to the SilverStripe team page and take a look at Hamish Friedlander, the SilverStripe CTO. Now take a look at me, then look back to Hamish, then back to me. What do you see? I think you will see that I am not nearly as smart as Hamish.

You might be thinking: “No way! Dr. Seidenberg, you have a PhD, you must be supremely smart!” But that’s not true, I assure you, I can’t match Hamish’s intelligence, not even close. But that’s okay. Why? Well, that’s what this blog post is about.

While it is very difficult to increase raw intelligence. There is much more to being a good developer (and getting a PhD) than being smart. So, for us lesser mortals, here are some tips for becoming a better developer.

Being a better developer is about four things:

  1. Qualities
  2. Attitude
  3. Techniques
  4. Communication

 

1. Qualities

Humility

C.S. Lewis once said:

“Humility is not thinking less of yourself, it is thinking of yourself less”.

A great developer will act for the good of the software, not their own ego. The best ideas and the best code need to win, regardless of their origin. A great developer will listen to the even the most quiet intern who has a great idea for improving the project. They will say: “Oh, great point! I didn't think of that. Let's do as you suggest.”

Grit

After 4.5 years of researching Semantic Web ontologies, I was ready to quit. But I didn’t. I had some grit. Grit is the ability to pursue long-term goals despite numerous struggles and setbacks. I had enough grit, enough tenacity, perseverance and drive to push through and finish the PhD.

A great developer has lots of grit. You might try this self-test to see how gritty you are. Learn more about grit on this TED talk.

Enthusiasm

“Nothing great was ever achieved without enthusiasm” - Ralph Waldo Emerson

Enthusiasm is necessary. No one likes a mopping developer who complains about everything. That brings down everyone’s morale. A great developer likes technology and finds programming fun, interesting and rewarding. If you are currently not overly enthusiastic, fake it till you make it. Soon you and the rest of your team will be genuinely bouncing off the walls with enthusiasm.

2. Attitude

Desire

The first step in any action is desire. Without desire nothing happens. Ask yourself: do you actually want to be a better developer? You might be surprised that for some people the answer is “no”. Some developers are content with their current skill level. For some people, it’s enough to have a stable job, do adequate work, support their family and pay the bills. That’s a perfectly reasonable life decision for someone to make. But that’s not who this blog post is for. This post is for someone who desires to be supremely awesome at their job.

However, say, for example, you don’t have the desire to become a super-developer, but you wish you did. Congratulations! That kind of recursive meta-desire is both a good first step and a very cool concept in and of itself. The way to develop desire is to associate with others who have a strong desire already. So, find some developers who really care about improving themselves, make friends and hang out with them. Soon their infectious desire will rub off on you.

Appreciation

A good developer appreciates beautiful code. Let me give you an example. Take a look at this code sample:

Can you guess what the code is? It’s the Quicksort algorithm implemented in Javascript. This algorithm was developed by Sir Tony Hoare in 1959 and is still in use today. Just look at that code. It’s beautiful. It’s poetry. So clever, clean, and concise. I love it!

A good developer must genuinely appreciate excellent code. To be truly good at programming you need to appreciate good coding when you see it - just like a good musician naturally appreciates good music.

Ask for help

There is no shame in asking for help. Some lone-wolf developers would rather hack away at a problem for days, rather than admitting that they could use some help. Don’t be that person. Ask for help. Sometimes a second set of eyes will point out the obvious to you. Sometimes just explaining your thinking to another person will give you the critical insight. Sometimes someone doing right kind of socratic questioning on you will make you think of something you hadn’t previously considered. Great developers love asking for help.

Ownership

The difference between a senior developer and an intermediate developer is that the senior developer takes ownership of the software they are creating. An intermediate developer will do a good job working on their assigned task, competently implementing all the requirements. A senior developer, however, will discover five additional requirements the person writing the requirements document hadn’t even considered and make sure those are done, too. The senior developer takes ownership of the software.

3. Techniques

Memory management 

No, not the computer’s memory. The developer’s memory. Humans can only hold 5-9 conceptsin their short term memory at one time. That is an extremely limited amount of RAM we have to work with. So, while programming, a good developer always uses abstraction and interfaces to make it possible for them to understand what one aspect of the application is doing without having to remember the whole thing. A good developer constantly juggles layers of information they hold in their memory while programming. Sometimes focusing-in on the details of a particular method, other times zooming out to arrange software components at a high level.

I would also recommend adding copious amounts of comments to remind oneself what one was thinking when one wrote a particular class or method. That makes zooming-in so much quicker.

Plan

It’s so tempting to dive in and start coding right away. Don’t do it! Any programming task can benefit from a bit of up-front thought. Maybe draw a little diagram, maybe sketch something out on a whiteboard, maybe write some high-level pseudo-code, maybe just think about your approach for an hour or two, whatever you do, do some planning.

ToDo is a NoNo

Have you written a comment something like this before?

//TODO: This is kind-of a hack, it might fail in a way that is unlikely to happen, but will totally break production when it does, and it will be impossible to diagnose. We should refactor this sometime.

Don’t ever do this. No one ever goes back through all the random todo comments in a codebase. I find there are two reasons why developers add todo comments:

1. They are lazy and can’t be bothered to implement something properly.
2. Doing something properly will genuinely take too long at the current stage of the project.

If you find yourself in scenario #1: easy, don’t be lazy! With scenario #2: don’t use a todo that no one will remember. Instead, use your project management software to write a task and make sure the Project Manager knows about it and why it is important, so they can prioritise the task appropriately.

Take a break

There is some false bravado in working long hours, hacking away at a problem. But the brain works in mysterious ways. Our subconscious is often much better at solving a problem without our conscious awareness, certainly better than our haze of sleep-deprived, caffeine-fueled forced-thinking.  It happens to me all the time: I’m faced with an impossible problem, spend the whole day working on it, get nowhere; then, after a good night’s sleep, I solve the problem in 10-minutes flat.

Sometimes the most productive thing you can do is to stop working. A good developer will know themselves well enough to know when they should work and when they should relax.

4. Communication

Teamwork

The productivity of the team is more important than one’s own productivity. A great developer will gladly spend the entire day helping team members who are stuck, even if it means they get nothing done that day themselves. This highly scientific formula explains it: (One developer working + five developers stuck) < (one developer getting nothing done + five developers working).

Talk

Talking in-person is a great way to communicate. Talking in-person allows people to communicate rapidly and use non-visual cues to focus on the exact knowledge that needs to be communicated.

Introverted developers like to focus on their computer, maybe occasionally using instant messaging, or email to communicate. But written communication is slow and easy to misunderstand. A good developer will know when it’s time to stand up, walk three meters to the next desk and talk to their fellow developers.

Pair program

Awesome developers have a secret superpower. It’s a power one level up from the awesome “talking in-person” superpower. Pair programming is this power.

Pair programming is something all developers should do when faced with a difficult programming challenge. Two developers working together can solve a difficult problem much quicker and much better than one developer working alone. Two developers can talk with each other, sharing understanding and vocalising their thoughts, they can keep each other focused on the task at hand, giving the task far more concentrated attention than a single developer could bring to bear, and they can constantly be checking each other’s work for bugs or oversights. Finally, at the end of the endeavour, both developers have a detailed understanding of the solution. It’s also just plain fun. So, be a great developer, use the pair programming superpower.

Get in the zone

Watch a Starcraft tournament sometime. Starcraft is a serious sport with the top players (all Korean) winning hundreds of thousands of dollars in prize money and sponsorships. As you watch a Starcraft game occasionally the camera will show the players’ faces. The players are ultra-focused on the game. They are some of the most concentrated people you will ever see in your life. They are in the zone.

If you have experienced the zone, then you know it is blissfully absorbing. Your attention is completely taken away from other things. Your mind detaches from your body. You are fully in the moment, not conscious of the body, outside reality, or the passage of time. The zone produces an inner clarity where the activity you are doing becomes its own reward and you feel fantastic.

Needless to say, programming in the zone is super-productive. The best developers try to get into the zone as often as possible, and a long time period with no distractions is a prerequisite for entering into the zone.

So, if you want to enter the zone, arrange your day so all the meetings are clustered together and you have a big chunk of uninterrupted time. Also, use an obvious visual cue, like wearing big headphones, and explain to everyone around that it means: “if you value your life, don’t interrupt me unless something is on fire”. Then relax and enjoy your amazing zone-level programming productivity.

Conclusion

You don’t need Hamish-level intellect to be a good developer. Just develop excellent qualities, adopt the right attitude, practice good development techniques and communicate well; and soon you’ll be developing with the best of them. Good luck!

(previously published on SilverStripe.org)

Route Whitelist
→ Home

Say you have a SilverStripe website. Then along comes a bot probing your security vulnerabilities on your site. This bot could be written by a Chinese hacker, the NSA or, most embarrassingly, by a security firm you hired to tell you if your website is vulnerable to attack.

The next thing you know: your server’s load goes through the roof; the server runs out of memory; and the website crashes, failing to respond to any requests until you do a hard-reboot.

What just happened?

The inner life of security bots

Security scanning bots work is by sending requests to your website trying to detect potentially exploitable code. The bot has a long list of possible URLs that indicate your website is running xyz software. If xyz software is detected, the bot can try various exploits on that software. Since you are running a SilverStripe website, most of the probing tests result in a 404 responses. There is, for example, no “/wp-admin” on your website.

SilverStripe and 404 Page Not Found requests

Here is what happens when you send request to a SilverStripe site, and that request results in a “Page not found” response:

The request goes to Apache and then Apache runs rules to check for a static file matching the request.

  1. Apache passes the request to SilverStripe.
  2. SilverStripe spins up, loads 1000s of files, checks for logged-in users, etc.
  3. SilverStripe checks for routes that match request.
  4. SilverStripe checks for controllers that match request.
  5. SilverStripe does a bunch of database queries to try and match the request to URLSegments of pages in the database.
  6. SilverStripe fetches the “Error page” from the database.
  7. SilverStripe asks the “Error page” to construct a response.
  8. The response object is rendered to HTML.
  9. The server passes the HTML response back to the web browser.

That whole process typically takes somewhere between 200 - 1000ms, depending on the complexity and page count of your website.

If the bot has no request throttling built-in, it will send a flood of probing requests to your site, all resulting in 404 responses. Each of these requests will trigger multiple database queries, tying up server threads and preventing your site responding to genuine user requests. If too many requests come in all at once, then your server experiences a Denial of Service (DoS) attack and goes down in flames.

I wrote a simple script to simulate a bot scanning for security vulnerabilities. The script sequentially queries 880 potentially vulnerable URLs and reports how long the scan takes. The longer this mock-scan takes, the worse your website will do targeted by a real scan. The result here:

  • Large fully-featured SilverStripe website with 2000 pages: 302 seconds
  • Base SilverStripe installation: 138 seconds
  • Large fully-featured SilverStripe website with Route Whitelist installed: 8 seconds

Route Whitelist

Now I bet you are wondering: what’s this Route Whitelist thing and how does it makes the security scanning problem go away?

Route Whitelist is SilverStripe module that generates a whitelist of potentially valid URLs. That is, a list of URLs that may result in a 200 response. Any request not matching a URL in the whitelist will definitely result in a 404.

It is nearly impossible to generate a list of every possible valid URL for a large complex site. So, instead, the Route Whitelist module generates a list of only all top-level routes, all top-level pages and all controllers. The whitelist will include, for example:

/admin
/who-we-are
/Page_Controller

The module then adds a check to the very first step of the SilverStripe page serving process. That is, it adds an Apache htaccess rule to immediately serve a 404 if a request does not match a URL in the whitelist. That’s why it’s so fast. It cuts out 9 unnecessary steps.

But it only includes top-level items. What about subURLs like: “/who-we-are/our-team”?

Route Whitelist will match only on the first segment of a URL. A request for an invalid subURL (/who-we-are/zyx-cheap-viagra) still gets processed in the slow traditional way.

But that’s okay. We don’t need to speed up every possible “Page Not Found” request. Speeding up 99.9% of 404-requests is plenty good enough. It’s a pragmatic compromise to make this module work.

No fear of the big bad bot

In summary, by installing Route Whitelist you no longer need to fear that a security scanning bot might accidentally or intentionally take down your website.

If that sounds like something you’d like to have running on your website, then go ahead, download a copy of the Route Whitelist module.

(previously published on SilverStripe.org)

Route Whitelist
→ Home

Say you have a SilverStripe website. Then along comes a bot probing your security vulnerabilities on your site. This bot could be written by a Chinese hacker, the NSA or, most embarrassingly, by a security firm you hired to tell you if your website is vulnerable to attack.

The next thing you know: your server’s load goes through the roof; the server runs out of memory; and the website crashes, failing to respond to any requests until you do a hard-reboot.

What just happened?

The inner life of security bots

Security scanning bots work is by sending requests to your website trying to detect potentially exploitable code. The bot has a long list of possible URLs that indicate your website is running xyz software. If xyz software is detected, the bot can try various exploits on that software. Since you are running a SilverStripe website, most of the probing tests result in a 404 responses. There is, for example, no “/wp-admin” on your website.

SilverStripe and 404 Page Not Found requests

Here is what happens when you send request to a SilverStripe site, and that request results in a “Page not found” response:

The request goes to Apache and then Apache runs rules to check for a static file matching the request.

  1. Apache passes the request to SilverStripe.
  2. SilverStripe spins up, loads 1000s of files, checks for logged-in users, etc.
  3. SilverStripe checks for routes that match request.
  4. SilverStripe checks for controllers that match request.
  5. SilverStripe does a bunch of database queries to try and match the request to URLSegments of pages in the database.
  6. SilverStripe fetches the “Error page” from the database.
  7. SilverStripe asks the “Error page” to construct a response.
  8. The response object is rendered to HTML.
  9. The server passes the HTML response back to the web browser.

That whole process typically takes somewhere between 200 - 1000ms, depending on the complexity and page count of your website.

If the bot has no request throttling built-in, it will send a flood of probing requests to your site, all resulting in 404 responses. Each of these requests will trigger multiple database queries, tying up server threads and preventing your site responding to genuine user requests. If too many requests come in all at once, then your server experiences a Denial of Service (DoS) attack and goes down in flames.

I wrote a simple script to simulate a bot scanning for security vulnerabilities. The script sequentially queries 880 potentially vulnerable URLs and reports how long the scan takes. The longer this mock-scan takes, the worse your website will do targeted by a real scan. The result here:

  • Large fully-featured SilverStripe website with 2000 pages: 302 seconds
  • Base SilverStripe installation: 138 seconds
  • Large fully-featured SilverStripe website with Route Whitelist installed: 8 seconds

Route Whitelist

Now I bet you are wondering: what’s this Route Whitelist thing and how does it makes the security scanning problem go away?

Route Whitelist is SilverStripe module that generates a whitelist of potentially valid URLs. That is, a list of URLs that may result in a 200 response. Any request not matching a URL in the whitelist will definitely result in a 404.

It is nearly impossible to generate a list of every possible valid URL for a large complex site. So, instead, the Route Whitelist module generates a list of only all top-level routes, all top-level pages and all controllers. The whitelist will include, for example:

/admin
/who-we-are
/Page_Controller

The module then adds a check to the very first step of the SilverStripe page serving process. That is, it adds an Apache htaccess rule to immediately serve a 404 if a request does not match a URL in the whitelist. That’s why it’s so fast. It cuts out 9 unnecessary steps.

But it only includes top-level items. What about subURLs like: “/who-we-are/our-team”?

Route Whitelist will match only on the first segment of a URL. A request for an invalid subURL (/who-we-are/zyx-cheap-viagra) still gets processed in the slow traditional way.

But that’s okay. We don’t need to speed up every possible “Page Not Found” request. Speeding up 99.9% of 404-requests is plenty good enough. It’s a pragmatic compromise to make this module work.

No fear of the big bad bot

In summary, by installing Route Whitelist you no longer need to fear that a security scanning bot might accidentally or intentionally take down your website.

If that sounds like something you’d like to have running on your website, then go ahead, download a copy of the Route Whitelist module.

(previously published on SilverStripe.org)

5 Principles to Optimise Your Website
→ Home

We all like fast websites, and doing website optimisation work is fun. This blog post will give you five principles that you can use to build blazingly fast websites.

Why optimise?

But before we begin we need to consider: why optimise in the first place? Or rather, how do you convince your boss/product-owner/client/spouse that you need to spend the time/money to make your website faster?

Take a look at some research Walmart did to convince themselves to speed up their website. The research shows: the slower your site, the lower your sales. Customers simply get bored waiting for your slow site to load and go elsewhere.

Also, Google now takes website speed into account when calculating your site’s search engine ranking. An analysis clearly shows, all other things being equal, the slower your website speed, the lower its ranking in the Google search results.

Finally, Facebook, frustrated with the slowness of the mobile web, has implemented Facebook Instant Articles. This feature makes certain supported articles in the Facebook news feed load instantly, giving a much better user experience, and getting users to spend (even) more of their time in the Facebook app.

So, without further ado, here are five principles you can use to increase sales on your site, boost your search ranking and increase user engagement.

1. Measure everything

It isn’t useful to micro-optimising something that was really fast to begin with. When optimising anything, it’s important to focus on the slowest part of the application first. Clearing such bottlenecks gives the most speed benefit for the least amount of work. There are a bunch of tools available to help you find the bottlenecks. 

Analyse and profile

An easy way to measure how long a website takes to load is to look at the red “Load” measure at the bottom of the Chrome Network tab. That tells you how long it takes for your page to fully load.

If you want to go a bit deeper, the Chrome dev tools also have an excellent timeline profiling tool available.

You can also run YSlow and PageSpeed Insights on your website to get a report of optimisations you can make.

The JSPerf website is a useful tool to benchmark variations in Javascript code snippets and across different browsers.

Facebook’s XHProf is a great tool for profiling PHP, and it can create nice graphs of the call stack showing bottlenecks highlighted in red and yellow. XHProf also gives you the ability to compare multiple runs, so you can see if and how your optimisation efforts are helping make the code run faster.

bottleneck image

Log slow requests

Configuring your web server to show you slow requests is a great way to zero-in on performance problems to focus your optimisation efforts. Here are some things you can do.

Log the request speed by adding the “%D” parameter to your Apache access log. Logging request speed adds a tiny bit of performance overhead, but gives you great visibility on what aspects of your website are running really slowly. Add this to your Apache configuration:

/usr/local/apache/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %D" combined

Then you can, for example, get a real-time view of all http requests taking longer than 0.5 seconds by running:

tail -f /var/log/apache/access.log | awk '$(NF) > 500000'

You can also enable the slow query log in your MySQL/MariaDB database to gain some insight into performance problems stemming from slow database queries. 

Load test

A website might run fine when doing single requests, but fall over as soon you hit it with multiple concurrent requests. That’s why it is important to load test your website. Load testing tools give you a nice report of how your website performs under load.

Two load testing tools I like are Siege (guide) and Apache Bench (guide). Siege is better at simulating real-world requests patterns while Apache Bench is easy-to-use and comes pre-installed on almost any server.

2. Ignore your job title

Minimalist content and design

Are you a content author, information architect, or designer? Some of the biggest performance gains or losses result from decisions made by those disciplines. So, what to do if that’s not your job title? Easy, insert yourself into those discussions anyway and try to make a difference.

For example, try loading these two websites: Google and Dick Smith Electronics. Which takes longer to load? Oh, it’s not a fair comparison you say? The Dick Smith website has a whole bunch of huge banners, images, annoying pop-overs, lots of CSS and slow JS while the Google website is just one image and a search box. Yeah, my point exactly.

Scale horizontally

Are you an Infrastructure Architect? If you have a high-traffic website, then ignore your lack of title, put on your Infrastructure Architecture hardhat and make some changes. You can gain huge performance under load by horizontally scaling out your server stack.

Use a load balancer, introduce multiple web servers, and create multiple database read replicas. It takes some doing to get right and costs a bit more money, but, in circumstances where a single server is struggling and you’ve done all you can to optimise your code, it’s time to scale horizontally and add more servers.

Hint: adding more servers is so much easier if you are in a cloud hosting environment likeAmazon Web Services (AWS).

Spend money, not time

Are you a CEO? Do you have budget approval to purchase third-party software that costs thousands of dollars?

Because most of us don’t have such budget approval, we hesitate to use high-quality commercial software components. For example, you might spend months implementing a charting solution for your website, or you could buy Highcharts. A month of your salary almost certainly adds up to more than the price of Highcharts, and yet I’ve seen developers struggle for months to implement a home-grown charting solution.

Don’t be a penny wise and pound foolish developer. Make use of paid software components and make your project come in early and under-budget.

3. Push to the left

Cache database queries

Take a look at this five-tier website architecture.

5 tier architecture diagram

The database is the slowest component and it is way on the right. You can get massive speed-gains by pushing content from the right to the left of the architecture. The fastest possible database request is a request that is cached by the application server and never actually reaches the database.

Use Nginx (other reverse proxy)

Using a reverse proxy server such as Nginx allows you to cache your static content at the reverse-proxy tier. Nginx is really good at efficiently serving static content (and yes, Apache can be almost as fast if you disable all the features that make Apache so good at serving dynamic content, such as switching Apache from prefork-mode to worker-mode and turning off htaccess file parsing; but doing those things defeats its purpose). Let Nginx handle the static requests and use Apache to handle your complex dynamic request, and you get the best of both worlds.

Use a CDN

A Content Delivery Network (CDN) takes your content and distributes it to end-points all over the world. It does this because the speed of light is too slow. Or rather, light is pretty fast, but light doesn’t travel through optical fibre at the actual speed of light, and there are a bunch of routers, repeaters and stuff that slow the light down. The end result is that a request from New Zealand to Europe has a latency of over half a second and there is nothing you can do to speed that up. Well, if you’re Elon Musk you can launch your own fleet of 4000 Low Earth Orbit satellites but, chances are, you’re not Elon Musk, so use a CDN instead (if you are Elon Musk, please give meTesla).

Some CDNs that have endpoints in New Zealand are: FastlyAkamaiIncapsulaCloudFlare.

If I were choosing a CDN right now, I’d choose CloudFlare. But your experience and requirements may vary. So, please do your own research.

Let the browser do the work

Taking the principle to the extreme, you can push your content to the far left. Push it all the way into the browser.

You can set caching headers so the browser caches content appropriately and doesn't ask for the same content again. Use a cachebuster GET parameter to invalidate content, rather than trying to invalidate using ETags, content expiry settings, etc. You can even use this technique forimage references within CSS.

Do as much processing as possible in JavaScript. For example, an online calculator that does its processing in JavaScript is so much faster than one that needs to ask the server for the result. Doing stuff in the browser takes a load off your server and gives a better user experience to boot.

4. Deliver fast content

Pre-compute

A static request is much faster than a dynamic request. If you can pre-compute the result of a dynamic request and save it as static content, that greatly improves performance. You might generate a JSON file onAfterWrite of a SilverStripe DataObject, rather than generating it dynamically on every request. You might statically cache page HTML, so you can serve a page without invoking any PHP. Or you might de-normalise some database tables when joins are too slow.

Minify and combined

Take your JavaScript and CSS and remove all the whitespace, comments and line breaks. Then rewrite all your variable names to make them shorter. Now take all your files and combined them into a single file. A single http request for a large file is quicker than multiple requests for several smaller files, so combining files makes your site load faster.

Luckily, you don’t need to do any of these optimisation by hand. There are tools to help you. SilverStripe has the built-in Requirements::combine_files feature. If you want to do more fine-grained optimisation, then you should look into using a build system such as GruntGulp orWebpack.

Compress

Compressing textual content is an easy way to speed things up. All browsers support compressed content (even IE6 with SP2+). Test your site to see if it is already using compressing. If not, then you can easily enable gzip compression by vomiting up some punctuation into (adjusting) your Apache configuration.

Inline content

Consider the following scenario: you have a web page that displays a list of a few thousand items from a server database by loading in a JSON file (a file that you have cleverly pre-generated using the “Pre-compute” principle). You load your page, then the document.ready event fires off an AJAX request to load the JSON file and display it on the front-end, using JavaScript to page through it (cleverly using the “Let the browser do the work” principle). All is well, right? No!

You can speed this page up by having that data already loaded into the HTML of the page. That way the browser doesn’t need to wait for any events and doesn’t need to do any more HTTP requests. The data is right there so that as soon as the JavaScript is loaded, it can display the content.

You can do this by inlining the content directly into the HTML of the page. Be careful not to do this with libraries that might already be cached in the browser, or with files that you are reusing across multiple pages of the site. But, if you have content that sits in a single file and isn’t used anywhere else on the site, and you can efficiently write the file’s content into the HTML of your page, that gives you a nice optimisation. Be sure to json_encode your inlined content to protect against cross-site scripting attacks. 

Know your framework

Spend some time getting to know your framework. You need to know your tools like the back of your hand. Know all the little tricks and implementation details that let you make smart decisions and write efficient code.

For example: know that jQuery.find() is faster than jQuery.children(), because it is a native browser method; know that AngularJS ng-if is faster that ng-show, because it completely removes elements from the DOM instead of just hiding them; and know that SilverStripe <% cached %> partial caching is essential for efficiently generating a menu.

5. Cheat

Great performance isn’t so much about actual raw speed, but more about the perception of speed. If you can make something seem really fast without doing the hard work of actually making it fast, then, by all means, do that. I promise I won’t tell anyone you cheated.

Load in the background

Do you know how Facebook Instant Articles work? They simply pre-load the article before you actually click on it, using up all your bandwidth in the process. You can do that, too. If you have a single-page app, you can use analytics to measure what your user is most likely to click next and load that content before they actually click. The result: instant UI, without any actual increase in speed.

Similarly, you can load additional content as a user scrolls down a long webpage, resulting in so-called infinite scrolling. The old-fashion way would be to display a “next” button. But users typically don’t click onwards to the next page, so infinite scrolling can improve your user-experience in certain cases.

Queue

Sometimes you can respond to the user instantly while doing the actual processing in the background.

This happens, for example, when you send an email in Gmail, or try to order an iPhone on a launch day. Gmail tells you “message sent”, but actually just queues the message for sending at some later time. Similarly, Apple takes your credit card details when you order, puts them into a giant message queue, processes them later, then sends you a message if your payment validation fails, asking you to try again.

Both examples show how you can achieve the illusion of speed by using a queue to immediately respond to the user and delay some slow processing until later. That’s great user experience.

Run less code

Sometimes you don’t need that massive framework. Sometimes a few lines of PHP are all you need. You don’t need to include thousands of PHP files just to increment a counter, give an autocomplete result, or redirect to a different URL.

When you find yourself writing a feature that doesn’t need all the power of SilverStripe, cheat a little: betray your beloved framework, go behind its back and write a cute little stand-alone PHP file. 

Generalise the optimisation

You’ve done all this work, applying all these principles to create a perfectly optimised website. What are you going to do for your next project? Do it all again? Please, don’t do that. Instead, figure out a way to generalise all the great optimisation work you do, so you can take advantage of it for all future projects.

SilverStripe Platform is one way to do just that.

(previously published on SilverStripe.org)

5 Principles to Optimise Your Website
→ Home

We all like fast websites, and doing website optimisation work is fun. This blog post will give you five principles that you can use to build blazingly fast websites.

Why optimise?

But before we begin we need to consider: why optimise in the first place? Or rather, how do you convince your boss/product-owner/client/spouse that you need to spend the time/money to make your website faster?

Take a look at some research Walmart did to convince themselves to speed up their website. The research shows: the slower your site, the lower your sales. Customers simply get bored waiting for your slow site to load and go elsewhere.

Also, Google now takes website speed into account when calculating your site’s search engine ranking. An analysis clearly shows, all other things being equal, the slower your website speed, the lower its ranking in the Google search results.

Finally, Facebook, frustrated with the slowness of the mobile web, has implemented Facebook Instant Articles. This feature makes certain supported articles in the Facebook news feed load instantly, giving a much better user experience, and getting users to spend (even) more of their time in the Facebook app.

So, without further ado, here are five principles you can use to increase sales on your site, boost your search ranking and increase user engagement.

1. Measure everything

It isn’t useful to micro-optimising something that was really fast to begin with. When optimising anything, it’s important to focus on the slowest part of the application first. Clearing such bottlenecks gives the most speed benefit for the least amount of work. There are a bunch of tools available to help you find the bottlenecks. 

Analyse and profile

An easy way to measure how long a website takes to load is to look at the red “Load” measure at the bottom of the Chrome Network tab. That tells you how long it takes for your page to fully load.

If you want to go a bit deeper, the Chrome dev tools also have an excellent timeline profiling tool available.

You can also run YSlow and PageSpeed Insights on your website to get a report of optimisations you can make.

The JSPerf website is a useful tool to benchmark variations in Javascript code snippets and across different browsers.

Facebook’s XHProf is a great tool for profiling PHP, and it can create nice graphs of the call stack showing bottlenecks highlighted in red and yellow. XHProf also gives you the ability to compare multiple runs, so you can see if and how your optimisation efforts are helping make the code run faster.

bottleneck image

Log slow requests

Configuring your web server to show you slow requests is a great way to zero-in on performance problems to focus your optimisation efforts. Here are some things you can do.

Log the request speed by adding the “%D” parameter to your Apache access log. Logging request speed adds a tiny bit of performance overhead, but gives you great visibility on what aspects of your website are running really slowly. Add this to your Apache configuration:

/usr/local/apache/conf/httpd.conf
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" %D" combined

Then you can, for example, get a real-time view of all http requests taking longer than 0.5 seconds by running:

tail -f /var/log/apache/access.log | awk '$(NF) > 500000'

You can also enable the slow query log in your MySQL/MariaDB database to gain some insight into performance problems stemming from slow database queries. 

Load test

A website might run fine when doing single requests, but fall over as soon you hit it with multiple concurrent requests. That’s why it is important to load test your website. Load testing tools give you a nice report of how your website performs under load.

Two load testing tools I like are Siege (guide) and Apache Bench (guide). Siege is better at simulating real-world requests patterns while Apache Bench is easy-to-use and comes pre-installed on almost any server.

2. Ignore your job title

Minimalist content and design

Are you a content author, information architect, or designer? Some of the biggest performance gains or losses result from decisions made by those disciplines. So, what to do if that’s not your job title? Easy, insert yourself into those discussions anyway and try to make a difference.

For example, try loading these two websites: Google and Dick Smith Electronics. Which takes longer to load? Oh, it’s not a fair comparison you say? The Dick Smith website has a whole bunch of huge banners, images, annoying pop-overs, lots of CSS and slow JS while the Google website is just one image and a search box. Yeah, my point exactly.

Scale horizontally

Are you an Infrastructure Architect? If you have a high-traffic website, then ignore your lack of title, put on your Infrastructure Architecture hardhat and make some changes. You can gain huge performance under load by horizontally scaling out your server stack.

Use a load balancer, introduce multiple web servers, and create multiple database read replicas. It takes some doing to get right and costs a bit more money, but, in circumstances where a single server is struggling and you’ve done all you can to optimise your code, it’s time to scale horizontally and add more servers.

Hint: adding more servers is so much easier if you are in a cloud hosting environment likeAmazon Web Services (AWS).

Spend money, not time

Are you a CEO? Do you have budget approval to purchase third-party software that costs thousands of dollars?

Because most of us don’t have such budget approval, we hesitate to use high-quality commercial software components. For example, you might spend months implementing a charting solution for your website, or you could buy Highcharts. A month of your salary almost certainly adds up to more than the price of Highcharts, and yet I’ve seen developers struggle for months to implement a home-grown charting solution.

Don’t be a penny wise and pound foolish developer. Make use of paid software components and make your project come in early and under-budget.

3. Push to the left

Cache database queries

Take a look at this five-tier website architecture.

5 tier architecture diagram

The database is the slowest component and it is way on the right. You can get massive speed-gains by pushing content from the right to the left of the architecture. The fastest possible database request is a request that is cached by the application server and never actually reaches the database.

Use Nginx (other reverse proxy)

Using a reverse proxy server such as Nginx allows you to cache your static content at the reverse-proxy tier. Nginx is really good at efficiently serving static content (and yes, Apache can be almost as fast if you disable all the features that make Apache so good at serving dynamic content, such as switching Apache from prefork-mode to worker-mode and turning off htaccess file parsing; but doing those things defeats its purpose). Let Nginx handle the static requests and use Apache to handle your complex dynamic request, and you get the best of both worlds.

Use a CDN

A Content Delivery Network (CDN) takes your content and distributes it to end-points all over the world. It does this because the speed of light is too slow. Or rather, light is pretty fast, but light doesn’t travel through optical fibre at the actual speed of light, and there are a bunch of routers, repeaters and stuff that slow the light down. The end result is that a request from New Zealand to Europe has a latency of over half a second and there is nothing you can do to speed that up. Well, if you’re Elon Musk you can launch your own fleet of 4000 Low Earth Orbit satellites but, chances are, you’re not Elon Musk, so use a CDN instead (if you are Elon Musk, please give meTesla).

Some CDNs that have endpoints in New Zealand are: FastlyAkamaiIncapsulaCloudFlare.

If I were choosing a CDN right now, I’d choose CloudFlare. But your experience and requirements may vary. So, please do your own research.

Let the browser do the work

Taking the principle to the extreme, you can push your content to the far left. Push it all the way into the browser.

You can set caching headers so the browser caches content appropriately and doesn't ask for the same content again. Use a cachebuster GET parameter to invalidate content, rather than trying to invalidate using ETags, content expiry settings, etc. You can even use this technique forimage references within CSS.

Do as much processing as possible in JavaScript. For example, an online calculator that does its processing in JavaScript is so much faster than one that needs to ask the server for the result. Doing stuff in the browser takes a load off your server and gives a better user experience to boot.

4. Deliver fast content

Pre-compute

A static request is much faster than a dynamic request. If you can pre-compute the result of a dynamic request and save it as static content, that greatly improves performance. You might generate a JSON file onAfterWrite of a SilverStripe DataObject, rather than generating it dynamically on every request. You might statically cache page HTML, so you can serve a page without invoking any PHP. Or you might de-normalise some database tables when joins are too slow.

Minify and combined

Take your JavaScript and CSS and remove all the whitespace, comments and line breaks. Then rewrite all your variable names to make them shorter. Now take all your files and combined them into a single file. A single http request for a large file is quicker than multiple requests for several smaller files, so combining files makes your site load faster.

Luckily, you don’t need to do any of these optimisation by hand. There are tools to help you. SilverStripe has the built-in Requirements::combine_files feature. If you want to do more fine-grained optimisation, then you should look into using a build system such as GruntGulp orWebpack.

Compress

Compressing textual content is an easy way to speed things up. All browsers support compressed content (even IE6 with SP2+). Test your site to see if it is already using compressing. If not, then you can easily enable gzip compression by vomiting up some punctuation into (adjusting) your Apache configuration.

Inline content

Consider the following scenario: you have a web page that displays a list of a few thousand items from a server database by loading in a JSON file (a file that you have cleverly pre-generated using the “Pre-compute” principle). You load your page, then the document.ready event fires off an AJAX request to load the JSON file and display it on the front-end, using JavaScript to page through it (cleverly using the “Let the browser do the work” principle). All is well, right? No!

You can speed this page up by having that data already loaded into the HTML of the page. That way the browser doesn’t need to wait for any events and doesn’t need to do any more HTTP requests. The data is right there so that as soon as the JavaScript is loaded, it can display the content.

You can do this by inlining the content directly into the HTML of the page. Be careful not to do this with libraries that might already be cached in the browser, or with files that you are reusing across multiple pages of the site. But, if you have content that sits in a single file and isn’t used anywhere else on the site, and you can efficiently write the file’s content into the HTML of your page, that gives you a nice optimisation. Be sure to json_encode your inlined content to protect against cross-site scripting attacks. 

Know your framework

Spend some time getting to know your framework. You need to know your tools like the back of your hand. Know all the little tricks and implementation details that let you make smart decisions and write efficient code.

For example: know that jQuery.find() is faster than jQuery.children(), because it is a native browser method; know that AngularJS ng-if is faster that ng-show, because it completely removes elements from the DOM instead of just hiding them; and know that SilverStripe <% cached %> partial caching is essential for efficiently generating a menu.

5. Cheat

Great performance isn’t so much about actual raw speed, but more about the perception of speed. If you can make something seem really fast without doing the hard work of actually making it fast, then, by all means, do that. I promise I won’t tell anyone you cheated.

Load in the background

Do you know how Facebook Instant Articles work? They simply pre-load the article before you actually click on it, using up all your bandwidth in the process. You can do that, too. If you have a single-page app, you can use analytics to measure what your user is most likely to click next and load that content before they actually click. The result: instant UI, without any actual increase in speed.

Similarly, you can load additional content as a user scrolls down a long webpage, resulting in so-called infinite scrolling. The old-fashion way would be to display a “next” button. But users typically don’t click onwards to the next page, so infinite scrolling can improve your user-experience in certain cases.

Queue

Sometimes you can respond to the user instantly while doing the actual processing in the background.

This happens, for example, when you send an email in Gmail, or try to order an iPhone on a launch day. Gmail tells you “message sent”, but actually just queues the message for sending at some later time. Similarly, Apple takes your credit card details when you order, puts them into a giant message queue, processes them later, then sends you a message if your payment validation fails, asking you to try again.

Both examples show how you can achieve the illusion of speed by using a queue to immediately respond to the user and delay some slow processing until later. That’s great user experience.

Run less code

Sometimes you don’t need that massive framework. Sometimes a few lines of PHP are all you need. You don’t need to include thousands of PHP files just to increment a counter, give an autocomplete result, or redirect to a different URL.

When you find yourself writing a feature that doesn’t need all the power of SilverStripe, cheat a little: betray your beloved framework, go behind its back and write a cute little stand-alone PHP file. 

Generalise the optimisation

You’ve done all this work, applying all these principles to create a perfectly optimised website. What are you going to do for your next project? Do it all again? Please, don’t do that. Instead, figure out a way to generalise all the great optimisation work you do, so you can take advantage of it for all future projects.

SilverStripe Platform is one way to do just that.

(previously published on SilverStripe.org)

5 tips for SEO with Silverstripe 3
→ Home

SEO or Search Engine Optimization, is the practice of getting your website to show up high in search results. SilverStripe 3 provides a number of great SEO features out-of-the-box. Here is a quick rundown of the most useful of these features:

  • Automatic and manual redirects
  • Clean search-engine-friendly URLs
  • Broken link reports
  • Ability to customize meta-tags on each page
  • Easy-to-use CMS UI to craft your website’s content
  • Powerful developer API to implement anything you want

This blog post is about the last two points. How you can use SilverStripe 3 to build a website that is nicely optimized for Google searches (yes, there are other search engines, but let’s face it, no one uses them).

Alright, let’s get to it. Here are some specific optimization techniques you can use to improve your search ranking.

Don’t be a spammer

Google makes 500+ changes to its search ranking algorithm every year. The last two major updates to this search algorithm were called Panda and Penguin. Both these updates focused on detecting low-quality content, content created by spammers with the purpose of tricking Google into ranking their website high in the search results, attracting lots of gullible visitors, displaying lots of ads and ultimately making lots of money. Google now employs many clever techniques to detect this kind of black-hat SEO and penalize sites that use it.

You need to make sure your website doesn’t look like a spam website to Google. That way Google won’t decide to reduce your search engine ranking and you will continue to enjoy lots of visitors coming to your site. Here is the one golden rule to keep in mind:

Build a website that looks like a human built it.

That may seem obvious, but let me break that down into some concrete recommendations:

  • Keep your page titles and headings short and descriptive
  • Vary the anchor text of your links
  • Place no more than 100 links on a single page
  • Avoid duplicate content like the plague (or use rel="canonical")
  • Use only a few carefully selected keywords on each page
  • Remove links to low quality “spam” content

Read more about the Panda and Penguin updates here:

Search Engine Watch

Search Engine Journal

Write compelling content

Ultimately, the most importing thing you can do for your website is to write good content. Great content is what attracts visitors to your websites, causing them to recommend your site to others, mention your site on their blog, tweet about it, post it to facebook, etc. I can’t offer much advice on what makes for amazing content. I can say: don’t be afraid to experiment. You can then use Google Analytics to track how many people look at each page on your website and thereby find the best content on your site from an SEO point-of-view and write more content like that.

Learn more about Google Analytics

Use the SilverStripe Google Analytics module to make installing Google Analytics easy.

Landing pages are your best friend

Create landing pages. They are a great way to rank highly in Google search results and they are useful for humans visiting your website, too.

A landing page is a special page on your site that you have optimized for one or two keywords that you want to rank highly for. It’s quite simple: all you need to do is craft a page that is a great resource for someone searching for a specific keyword.

The first step is to do some research to find the keywords you want to target. Then you can write an overview of the topic each keyword relates to, include a few links to other websites that people might find useful, include some deeper links into your own websites that go into more detail on various sub-topics and put all that on an attractively designed page. Keep the entire page short and uncluttered and be sure to link to it directly from your website's homepage (keeping in mind not to put too many links on your homepage).

Check out the guide to creating a good landing page and some examples of effective landing pages.

Decide to go multi-site or single-site

An important decision about how you want to build your website is if you want to put all your content into a single website on a single domain, or if you want to spread it out across multiple websites on separate domains.

Multiple websites mean that you can take advantage of a special boost that Google gives your website if your domain is an exact match for what someone is searching for. E.g. if someone searches for “silverstripe cat food” and you happen to own silverstripecatfood.com, then you get a huge boost in your Google ranking. So, if your goal is to get as many people as possible to visit your network of websites, because more visitors means more advertising revenue for you, then multi-site might be the right way to go.

A single-site approach also has its advantages. If you put all your content onto a single website, then that website benefits from all your compelling content. The site can become the ultimate resource for whatever your organization is about. It might not attract quite as many total visitors as the multi-site approach, but if you are selling a product or service on your single website, then that is where you want your visitors to land. No use attracting visitors to numerous other websites, even if those sites have links back to your main website, if those visitors could just as well be coming directly to your main website.

Read more about the trade offs between multi-site or single-site website structures here.

If you want to go “multi-site”, then you can avoid many of the headaches that come with maintaining and administrating multiple websites by using the SilverStripe Subsites module.

Speed up your site

Website speed makes a small but noticeable difference in your Google ranking. This is especially true if your website loads particularly slowly. Besides hurting your Google rank, a slow website is extra load on your web-server, a bad user experience and risks that your website will go down if it gets an unexpected spike in visitors.

The good news is that we have optimized SilverStripe 3 to be faster. Here are some of the new features in SilverStripe 3 that increase its performance.

In addition to those benefits that you get simply by using SilverStripe 3, you can implement specific optimizations to further improve your websites performance. Here is a list of techniques. We can go into detail on some of these in future blog posts.

  • Static caching
  • Partial caching
  • Enabling gzip compression
  • Adding expiry headers
  • Optimizing your Javascript performance
  • Combining and minifying Javascript
  • Combining and minifying CSS
  • Creating image sprites
  • Resampling and re-compressing images

Read more about more techniques for improving website performance here:

http://developer.yahoo.com/yslow/

https://developers.google.com/speed/pagespeed/

(previous published on SilverStripe.org)

5 tips for SEO with Silverstripe 3
→ Home

SEO or Search Engine Optimization, is the practice of getting your website to show up high in search results. SilverStripe 3 provides a number of great SEO features out-of-the-box. Here is a quick rundown of the most useful of these features:

  • Automatic and manual redirects
  • Clean search-engine-friendly URLs
  • Broken link reports
  • Ability to customize meta-tags on each page
  • Easy-to-use CMS UI to craft your website’s content
  • Powerful developer API to implement anything you want

This blog post is about the last two points. How you can use SilverStripe 3 to build a website that is nicely optimized for Google searches (yes, there are other search engines, but let’s face it, no one uses them).

Alright, let’s get to it. Here are some specific optimization techniques you can use to improve your search ranking.

Don’t be a spammer

Google makes 500+ changes to its search ranking algorithm every year. The last two major updates to this search algorithm were called Panda and Penguin. Both these updates focused on detecting low-quality content, content created by spammers with the purpose of tricking Google into ranking their website high in the search results, attracting lots of gullible visitors, displaying lots of ads and ultimately making lots of money. Google now employs many clever techniques to detect this kind of black-hat SEO and penalize sites that use it.

You need to make sure your website doesn’t look like a spam website to Google. That way Google won’t decide to reduce your search engine ranking and you will continue to enjoy lots of visitors coming to your site. Here is the one golden rule to keep in mind:

Build a website that looks like a human built it.

That may seem obvious, but let me break that down into some concrete recommendations:

  • Keep your page titles and headings short and descriptive
  • Vary the anchor text of your links
  • Place no more than 100 links on a single page
  • Avoid duplicate content like the plague (or use rel="canonical")
  • Use only a few carefully selected keywords on each page
  • Remove links to low quality “spam” content

Read more about the Panda and Penguin updates here:

Search Engine Watch

Search Engine Journal

Write compelling content

Ultimately, the most importing thing you can do for your website is to write good content. Great content is what attracts visitors to your websites, causing them to recommend your site to others, mention your site on their blog, tweet about it, post it to facebook, etc. I can’t offer much advice on what makes for amazing content. I can say: don’t be afraid to experiment. You can then use Google Analytics to track how many people look at each page on your website and thereby find the best content on your site from an SEO point-of-view and write more content like that.

Learn more about Google Analytics

Use the SilverStripe Google Analytics module to make installing Google Analytics easy.

Landing pages are your best friend

Create landing pages. They are a great way to rank highly in Google search results and they are useful for humans visiting your website, too.

A landing page is a special page on your site that you have optimized for one or two keywords that you want to rank highly for. It’s quite simple: all you need to do is craft a page that is a great resource for someone searching for a specific keyword.

The first step is to do some research to find the keywords you want to target. Then you can write an overview of the topic each keyword relates to, include a few links to other websites that people might find useful, include some deeper links into your own websites that go into more detail on various sub-topics and put all that on an attractively designed page. Keep the entire page short and uncluttered and be sure to link to it directly from your website's homepage (keeping in mind not to put too many links on your homepage).

Check out the guide to creating a good landing page and some examples of effective landing pages.

Decide to go multi-site or single-site

An important decision about how you want to build your website is if you want to put all your content into a single website on a single domain, or if you want to spread it out across multiple websites on separate domains.

Multiple websites mean that you can take advantage of a special boost that Google gives your website if your domain is an exact match for what someone is searching for. E.g. if someone searches for “silverstripe cat food” and you happen to own silverstripecatfood.com, then you get a huge boost in your Google ranking. So, if your goal is to get as many people as possible to visit your network of websites, because more visitors means more advertising revenue for you, then multi-site might be the right way to go.

A single-site approach also has its advantages. If you put all your content onto a single website, then that website benefits from all your compelling content. The site can become the ultimate resource for whatever your organization is about. It might not attract quite as many total visitors as the multi-site approach, but if you are selling a product or service on your single website, then that is where you want your visitors to land. No use attracting visitors to numerous other websites, even if those sites have links back to your main website, if those visitors could just as well be coming directly to your main website.

Read more about the trade offs between multi-site or single-site website structures here.

If you want to go “multi-site”, then you can avoid many of the headaches that come with maintaining and administrating multiple websites by using the SilverStripe Subsites module.

Speed up your site

Website speed makes a small but noticeable difference in your Google ranking. This is especially true if your website loads particularly slowly. Besides hurting your Google rank, a slow website is extra load on your web-server, a bad user experience and risks that your website will go down if it gets an unexpected spike in visitors.

The good news is that we have optimized SilverStripe 3 to be faster. Here are some of the new features in SilverStripe 3 that increase its performance.

In addition to those benefits that you get simply by using SilverStripe 3, you can implement specific optimizations to further improve your websites performance. Here is a list of techniques. We can go into detail on some of these in future blog posts.

  • Static caching
  • Partial caching
  • Enabling gzip compression
  • Adding expiry headers
  • Optimizing your Javascript performance
  • Combining and minifying Javascript
  • Combining and minifying CSS
  • Creating image sprites
  • Resampling and re-compressing images

Read more about more techniques for improving website performance here:

http://developer.yahoo.com/yslow/

https://developers.google.com/speed/pagespeed/

(previous published on SilverStripe.org)

England, 06 February 2016
→ KKSBlog

Written by Harsarani dd

A day in Leicester

As the cold and freezing mornings of the winter season were set to leave, the sun slowly pushed its way through with its effulgence, welcoming spring to reappear once again. It was Saturday, 06 February, when Kadamba Kanana Swami arrived in Leicester with his warm and charismatic smile. He was enthusiastically welcomed by the cheerful devotees, from local regions and other parts of the UK, who were eager to receive his association. Maharaj was to spend the entire day in Leicester and planned to return to Bhaktivedanta Manor, in London, in the evening.

Jaganatha Suta Prabhu and Artee Mataji’s had invited Maharaj to their home to facilitate the morning program. The savoury aroma of the mountains of prasadam was wafting into the air from the kitchen; devotees were famished and waiting to be served. Whilst almost everyone was indulging in delicious breakfast such as paneer sabhji, and pancakes filled with cream and forest fruits amongst other treats, Maharaj was tucking into a plateful of fruit, along with some freshly homemade bread and cheese.

After having fed our external bodies with prasadam, it was now time to feed and nourish the soul. Maharaj started with an uplifting and soul vibrating kirtan in a meditative mood. He had the devotees chanting so nicely and loudly that the holy name echoed throughout the house and beyond!

After the blissful kirtan had stopped, Maharaj then opted to give a lecture based on Canto 5, Chapter 14 of Srimad-Bhagavatam, titled ‘The Material World as the Great Forest of Enjoyment’. He started by speaking elaborately on the pushings of the senses and how we cannot control our senses but can engage them by being absorbed in devotional service. Then he referred to devotees who were inclined to take on any type of devotional service, by naming them ‘Jack of all trades’ and the service attitude of the surrendered souls who were always willing and present to do the service.

Maharaj briefly narrated the story of Gajendra the elephant from Canto 8, Chapters 2-4 of Srimad-Bhagavatam, where Gajendra was enjoying himself with the female elephants in the waters of the beautiful mountain of Trikūṭa when suddenly he got attacked by a crocodile. He tried to fend-off the crocodile who bit into his leg, but because Gajendra’s natural position was not in water, but rather on land, he did not have the strength to fend-off the crocodile.

This story was to highlight the subject matter of varnasrama as Srila Prabhupada quotes, “We must choose an asrama where we are comfortable.” Maharaj added that one should also stay in the asrama that he feels comfortable with, either brahmacārī, gṛhastha, vānaprastha or sannyāsī. To conclude Maharaj stated, “Wherever we are, let us do something for Krsna. It does not matter which asrama we are in… the essence of varnasrama is let us do some service and that will be an effort.”

Later in the day…

Maharaj took lunch at Hara Mataji’s and Puskaar Prabhu’s home. The afternoon program was held at the Temple which was situated in the heart of Leicester City Centre. Maharaj started the lecture by glorifying Lord Krsna and how his unlimited beauty, can be attracted by almost anyone. And although there are a lot of conceptions of Krsna within India, only a few can comprehend that he is the origin of all other manifestations.

Maharaj went on to say how all information is in the Srimad-Bhagavatam and unlike the Bhagavad-gita, it consists of descriptions of the sweetness of Lord Krsna. Maharaj pointed out, “Our culture is to speak Srimad-Bhagavatam.” Maharaj emphasised that Lord Krsna appeared into this world by setting social custom based on behaviour, and to re-establish religion based on prescribed duties of varnasrama, in order for others to follow his example. Srimad-Bhagavatam Canto 1 Chapter 8 titled ‘Prayers by Queen Kunti’ was highlighted where Lord Krsna displayed signs of respect to those who were older than him by paying obeisances to King Yudhisthira, which displayed a society on the groundings of humility and opposed to pride which is the case in this contemporary world.  Maharaj described Krsna as being ‘Bhakta-Vatsala’ the protector and well-wisher of devotees who would break the rules of dharma in order to protect his devotees.

According to Maharaj, the rule of dharma in Vrindavan is, “Service to Krsna and glorification of Krsna.”  Maharaj touched upon the topic of prescribed duty by explaining that if one follows their prescribed duty then there would be an essence of morality reflected within their behaviour. Maharaj then started to compare the material world to spiritual world by stating that time is a ruling factor in the material world as opposed to the spiritual world which is heavily centred on the relationship with Krsna. As Maharaj explained, the spiritual world is inconceivable due to dealings such as the ‘talking sweet rice’ for which such experiences cannot be encountered within the material world.

The lecture then shifted onto great Vaishnava’s who had the ability to see Krsna. Maharaj pointed out that Srila Prabhupada had the vision to see Krsna. A short story about Prabhupada and a journalist was narrated to explain further. Maharaj also started to reflect on his conversation with Tamal Krsna Goswami, who remarked, “The duty of spiritual master is to give his disciple a vision of life greater than what the disciple can imagine himself or herself it to be.” Maharaj made the following comment, “The duty  of the spiritual master is NOT to answer all of his emails, all day! Then he will not have the time to chant Hare Krsna.” Artificial amenities such as electronics and computers etc. make life so complicated, as Maharaj recalled his life in Vrindavan in the past, where there was only the one telephone and post was very rarely delivered, in fact it was normal to receive post that was one year old, and where the water had to be fetched from the well. He found that type of simple life as being very nice…

Toward end the lecture, Maharaj said that it was up to us to make the change in Leicester by spreading the glories of Srimad Bhagavatam, that will result in an increase in people following the rules and regulations, making Leicester a revolution, and then Ratha Yatra in Leicester will have three chariots as oppose to just the one.

And thus ended his visit to Leicester!


England, 08 February 2016

Written by Nandan

It was Maharaj’s last day in London for this trip. Again I had the great joy and privilege of driving Maharaj back to the Airport. It was a smooth journey and apart form a few verbal exchanges here and there, Maharaj was taking rest for most of the journey. The weather was atrocious, biting cold, heavy rain and incredibly strong winds.

When we got out of the car and walked towards the terminal, the wind was blowing full force against us. Some of the devotees were even concerned their dhotis may come off from the sheer force of the wind!! It truly was a horrible walk. In the midst of all the bother, we eventually made it inside the terminal; Maharaj looked at us with a sarcastic grin,

“Well! That was a nice pleasant walk to the terminal!”

Leicester (1) Leicester (3) Leicester (7) Leicester (11)

Vidura Prabhu (ACBSP) 1944 – 2016
→ New Vrindaban Brijabasi Spirit

9320673_1456096966.5451

Vidura Prabhu, born November 25, 1944, left his body peacefully at his home in New Vrindaban, WV, on the auspicious appearance day of Lord Nityananda, February 20, 2016, at the age of 71.

A disciple of Srila Prabhupada and long time resident of New Vrindaban, Vidura and his wife of 45 years, Tryadhisa, have been serving in the Dhama since 1984.

On July 31st of 1970 Vidura and Tryadhisa married, soon after Vidura ran across a copy of the Bhagavad Gita As It Is in a used book store and began his spiritual awakening. That same year while in Boston they ran into devotees in downtown Boston performing sankirtan. “Jadhurani was taking donations in a conch shell and gave us the pamphlet on chanting Hare Krishna” recalls Tryadhisa. Shortly afterwards they both joined ISKCON in Boston and Vidura took first initiation from Srila Prabhupada, July 18, 1971.

Vidhura holding the umbrella serving Srila Prabhupada

Vidhura holding the umbrella serving Srila Prabhupada

Vidura served as the sankirtan leader in many cities and setup college preaching programs wherever he went. A land surveyor by profession, he endeavored on many projects in New Vrindaban such as the brick road, parking lot, devotee houses and many land surveys. In 1973, he participated in the construction of the Krishna Balarama Mandir in Vrindavan, India.

After living in Boston for some time Vidura missed Sri Sri Radha Vrindaban Chandra and in 2008 he built his own house, close to the temple in New Vrindaban, mostly himself. He woke up every morning at 4:30 to chant his rounds, and read from Srimad Bhagvatam for the rest of his life. He enjoyed listening to Prabhupada lectures and kirtans throughout the day.

Back in 2013, Vidura was diagnosed with cancer of the tonsils and began two rounds of chemotherapy and radiation at Wheeling Hospital in West Virginia. At first the doctors thought his condition was improving; however, a PET scan on August 28, of 2015 revealed that the cancer had metastasized, spreading to his lungs and they gave him 6 months to live. As the months progressed his condition declined and it became increasingly difficult for him to breath.

Then on Lord Nityananda’s appearance day, Vidura’s breathing went from labored to shallow as his loving wife was reading to him from Srimad Bhagavatam about the soul going back to Godhead. She sprinkled Ganga jala into his mouth and on to his head as she chanted Hare Krsna to him. He left his body at 10:15 am February 20, 2016, as Srila Prabhupada was singing Nitia Pada Kamala softly in the background.

Vidura Prabhu is survived by his wife of 45 years, Tryadhisa Dasi, and many friends around the world.

2nd Day of Gaura Purnima festival in Mayapur- 6 Feb 2016. After…
→ Dandavats



2nd Day of Gaura Purnima festival in Mayapur- 6 Feb 2016.
After the ecstatic Sri Radha-Madhava Elephant Procession & Adhivas ceremony of Kirtan mela on the first day of the festival, the day 2 of the Gaura Purnima began with packed Mangala arotika & Srngar arotika darshan and HH Sivaram Swami‘s lecture on the glories of the Holy name -a topic in line with Kirtan Mela! Maharaj spoke on the verse from Brihad Bhagavatamrta, which is:
“Dearer to the Lord than even His own beautiful form, His easily worshiped holy name benefits the entire world. Indeed, nothing is as full of nectar as the holy name of the Lord.”
After Sravanam, devotees joyfully took breakfast prasada at Gada hall, sponsored by Mr. Naresh Soken. Kirtan Mela day1 started with Agnidev prabhu’s kirtan, followed by Kamalgopal Prabhu.
HH Jayapataka Swami has arrived in Mayapur. We are happy to welcome HH Jayapataka Swami. A new Annadan complex , an initiative of Food for Life is being opened today with the deity installation and Maharaja will grace the occasion to bless the project.

Barsana Parikrama (Album with photos) Deena Bandhu Das: Barsa…
→ Dandavats



Barsana Parikrama (Album with photos)
Deena Bandhu Das: Barsa means rain. We wandered through the enchanting pastime places that are sprinkled around Barsana, begging for Radharani’s mercy! For here, not ordinary rain is falling, but rain of Krishna Prema! Then we went to Vrinda Kunda to honor the delicious wedding feast of Warsa and Vyas from Holland! Dive into the nectar with Vittalrukmini’s pics!
Find them here: https://goo.gl/1bng4Z

The Solution to Food Shortages
→ Dandavats

Hare KrishnaBy His Divine Grace A. C. Bhaktivedanta Swami Prabhupada

My suggestion is that people should utilize all this vacant land for crops. I have seen so much land lying dormant. For instance, in Australia and also in America, there is so much land lying dormant. The people are not utilizing it. And whatever produce they get, sometimes they dump tons of it into the ocean to keep the prices high. And I have heard here in Geneva that when there was excess milk production, some of the people wanted to slaughter twenty thousand cows just to reduce the milk production. This is what is going on in people's brains. Actually, they have no brains. So if they want to get some brains, they should read these authentic Vedic literatures, and they should take spiritual guidance. And that guidance is simple: produce your food – all the food the world needs – by properly utilizing the land. But today people will not utilize the land. Rather, they have left their villages and farmlands and let themselves be drawn into the cities for producing nuts and bolts. All right, now eat nuts and bolts. Continue reading "The Solution to Food Shortages
→ Dandavats"