Answer Podcast
Download by “right-click and save content”
The post What are the differences between plenary portions, expansions and incarnations? appeared first on The Spiritual Scientist.
Websites from the ISKCON Universe
Answer Podcast
Download by “right-click and save content”
The post What are the differences between plenary portions, expansions and incarnations? appeared first on The Spiritual Scientist.
Speaker: HH Lokanath Swami
Venue: Mayapur Candrodaya Mandir
Date: 7 March 2016
So thats the verse, Eleventh Canto, Chapter 5, Text 32. Are you familiar, if you have looked at the board? Yeah! Sounds familiar? Not new! But ever ever new also at the same time! Never becomes old!
So here we are in land of Gauranga, Gauranga! (Devotees respond: Gauranga!) Sri Krishna Caitanya Mahaprabhu ki (Devotees respond: Jaya!) And also we have gathered here amongst other reasons, gathered here for Kirtan Mela ki (Devotees respond: Jaya!) Yes, you have come here for Kirtan Mela! Some of you have just come for the Kirtan Mela. Don’t show me hands! You have hands, I know! So you are here for the Kirtan Mela, many of you. So I thought of selecting a verse that talks of Caitanya Mahaprabhu as well as of course talks about the kirtana, sankirtana- yajna, that we are engaged in here. So quickly as time is running.
krsna-varnam tvisakrsnam
sangopangastra-parsadam
yajñaih sankirtana-prayair
yajanti hi su-medhasah ( SB 11.5.32)
Translation and Purport by disciples of His Divine Grace A C Bhaktivedanta Swami Srila Prabhupada ki (Devotees respond: Jaya!)
“In the Age of Kali, intelligent persons perform congregational chanting to worship the incarnation of Godhead who constantly sings the names of Krsna. Although His complexion is not blackish, He is Krsna Himself. He is accompanied by His associates, servants, weapons and confidential companions.”
Purport
“This same verse is quoted by Kṛṣṇadasa Kaviraja in the Caitanya-caritamṛta, Adi-lila, Chapter Three, verse 52….”
Maharaja: And I was reminded that Laghu Bhagavatamrta of Rupa Goswami, he also quotes this verse in the very beginning of Laghu Bhagavatamrta, Rupa Goswami does, its part of his mangalacarana, same verse.
“His Divine Grace A.C. Bhaktivedanta Swami Prabhupada has given the following commentary on this verse. “This text is from Srimad-Bhagavatam (11.5.32). Srila Jiva Gosvami has explained this verse in his commentary on the Bhagavatam known as the Krama-sandarbha, wherein he says that Lord Kṛṣṇa also appears with a golden complexion. That golden Lord Kṛṣṇa is Lord Caitanya,….”
Maharaja: Did you hear that, “That golden Lord Kṛṣṇa is Lord Caitanya.” Very nice the way Prabhupada is commenting based on Krama-sandarbha.
“who is worshiped by intelligent men in this age. That is confirmed in Srimad-Bhagavatam by Garga Muni, who said that although the child Kṛṣṇa was blackish, He also appears in three other colours — red, white and yellow….”
Maharaja: idanim krsnatam gatah (SB 10.8.13), Garga Muni, idanim krsnataam gatah, now He has become Krishna. But previously He was, suklo raktas tatha pita (SB 10.8.13). He has three other colours, sukla-white in Satya Yuga, rakta-red in Treta Yuga and pita….(indistinct) and now He has appeared in Dvapara Yuga as Krishna, so what is the remaining age, Kali Yuga, pita. So four colours mentioned and then he had already mentioned three ages. So fourth age is Kali and pita is remaining colour, so that is Sri Krishna Caitanya Mahaprabhu’s colour.
“who said that although the child Kṛṣṇa was blackish, He also appears in three other colors — red, white and yellow. He exhibited His white and red complexions in the Satya and Tretā ages respectively. He did not exhibit the remaining color, yellow-gold, until He appeared as Lord Caitanya, who is known as Gaurahari….”
Maharaja: Hari who is Gaura. Either Gauranga whose complexion is Gaura anga, golden complexion or Hari Hari (aside: What happened? No dont look behind! You! Sleeping so, the one who is sleeping he looks at, not me! This always happens! This is very human! Indians, Africans, whatever! He looks behind! Not me!) So Gaurahari! He is Hari, but what kind of Hari He is? (Devotees respond: Gaurahari) Gaurahari! Don’t just say Hari! Hari! Say Gaurahari!
“Srila Jiva Gosvami explains that kṛṣṇa-varṇam means Sri Kṛṣṇa Caitanya…”
Maharaja: That is he is getting back to the verse, there is kṛṣṇa-varṇam and that refers to Caitanya.
“Kṛṣṇa-varṇam and Kṛṣṇa Caitanya are equivalent. The name Kṛṣṇa appears with both Lord Kṛṣṇa and Lord Caitanya Kṛṣṇa.”
Maharaja: namo maha-vadanyaya krsna-prema-pradaya te krsnaya krsna-caitanya-namne, that part, I offer my obeisances unto krsnaya, krsnaya because namah is there, I offer my obeisances unto Krishna, you say that in Sanskrit as krsnaya, which kind of Krishna, krsnaya krsna-caitanya-namne, Krishna whose name is Krsna Caitanya, unto that Krishna I offer my obeisances. krsnaya krsna-caitanya-namne, Krishna whose name is Krsna Caitanya, I offer my obeisances unto Him.
“Lord Sri Caitanya Mahaprabhu is the Supreme Personality of Godhead, but He always engages in describing Kṛṣṇa and thus enjoying transcendental bliss by chanting and remembering His name and form. Lord Kṛṣṇa Himself…”
Maharaja: So that is kṛṣṇa-varṇam, anyway I will go ahead, keep going and then get back.
“Lord Kṛṣṇa Himself appears as Lord Caitanya to preach the highest gospel. Varṇayati means ‘utters’ or ‘describes.’ Lord Caitanya always chants the holy name of Kṛṣṇa and describes it also….”
Maharaja: He chants and He describes. And that is why He is called here as kṛṣṇa-varṇam, the very first word of this verse is what, kṛṣṇa-varṇam, kṛṣṇa-varṇam, varna. So Krishna, these are varna’s. Also varnan, from that comes, varhah, description. So kṛṣṇa-varṇam, who always chants and describes, so thats kṛṣṇa-varṇam.
“and because He is Kṛṣṇa Himself, whoever meets Him will automatically chant the holy name of Kṛṣṇa and later describe it to others…”
Maharaja: Yes, you are doing that. You chant and then you describe it to others. Thats preaching.
“He injects one with transcendental Kṛṣṇa consciousness, which merges the chanter in transcendental bliss…”
Maharaja: Many fans. I am not fan of a fan! But I know some of you don’t survive without fans.
“In all respects, therefore, He appears before everyone as Kṛṣṇa, either by personality or by sound…”
Maharaja: He appears as personality or sound. Personality is there in the form of vigraha and sound is,
Hare Krishna Hare Krishna Krishna Krishna Hare Hare
Hare Rama Hare Rama Rama Rama Hare Hare
He appeared you could say. And there is no difference. The form and the description, not different. Or form and the sound no difference, form and the sound.
‘Simply by seeing Lord Caitanya one at once remembers Lord Kṛṣṇa. One may therefore accept Him as viṣṇu-tattva. In other words, Lord Caitanya is Lord Kṛṣṇa Himself.”
Haribol! (Devotees: Haribol!)
So its a long purport but we don’t have long time for the class here. So I will kind of stop there and well go to the verse and make few comments. Some comments have been made and we’ve already read, we heard. But we could make few more connections.
Earlier in this same chapter question was raised by Nimi, King Nimi and Karabhajana Muni, he is talking to Karabhajana Muni. It is a dialogue between King Nimi and Karabhajana Muni. And the question raised was,
sri-rajovaca
kasmin kale sa bhagavan
kim varnah kidrso nrbhih
namna va kena vidhina
pujyate tad ihocyatam (SB 11.5.19)
Please tell me, kasmin kale, or kasmin yuge, in which age, bhagavan kim varnah, Lord appears in which kind of varnah, or complexion, colour. namna, or what name does He become known as in different ages, kena vidhina pujyate and by which process, paddhati, mode of worship He is worshipped in or worshipped by.
So he was interested to know in which age, which Lord, which incarnation, colour, please tell me colour, please tell me the name, please tell me the process He is worshipped. So after Satya, Treta, and Dvapara, he has already given reply to those questions or those ages have been described. Which Lord appears and what colour does He appear and how is He worshipped and what are the names. And now is the turn of the age of Kali and then he talks of this verse.
In the age of Kali, the Lord appears, krsna-varnam tvisakrsnam sangopangastra-parsadam, so this kind of Krishna, Lord appears in the age of Kali, krsna-varnam, krsna varna, He always chants,
Krsna Krsna Krsna Krsna Krsna Krsna Krsna he!
Like that. krsna-varnam, He always chants and always describes Krishna, thats krsna-varnam, krsna varna tvisa akrsna, tvisa refers to the lustre, complexion, ok what kind of complexion, a-krsnam, a means no, krsna means black. He does not appear as a blackish complexion. Opposite of black is what? White, more than white! He appears as golden, which is very close, white plus much more! krsna-varnam tvisakrsnam and that one also, krsnaya krsna-caitanya-namne gaura-tvise namah, same tvisa is, you find tvisa here and that pranama mantra of Sri Krishna Caitanya Mahaprabhu there is also tvisa, tvisa, grammar has done something to that tvisa,
So gaura-tvise, I offer my obeisances unto the Lord who is of golden complexion, like that mantra we offer obeisances with.
namo maha-vadanyaya
krsna-prema-pradaya te
krsnaya krsna-caitanya-
namne gaura-tvise namah
Four things quickly, four things are mentioned, Krishna’s, Lord’s name is mentioned, what is His name, krsnaya krsna-caitanya, then His form is mentioned, what kind of form, gaura-tvise, form of the Lord, gaura-tvise is a form. So name, form, and quality, what is the quality of, namo maha-vadanyaya, this is the quality of Sri Krishna Caitanya Mahaprabhu, amongst all or many, so many qualities, this is predominating quality of Sri Krishna Caitanya. He is namo maha-vadanyaya, maha, most magnanimous, matchless Lord, no one comes close to Him when we talk of the magnanimity of the Lord. So namo maha-vadanyaya, this is, this is the quality, guna of the Lord and what is remaining, nama, rupa, guna and lila, the pastimes, so what is the pastime of this Lord Gauranga, namo maha-vadanyaya krsna-prema-pradaya te, krsna-prema-prada, krsna-prema-prada, da the giver of Krishna prema, prada, He gives so much, prakrsta rupena, gives so much. So its not only, like narada, just da there but prada, He gives so much, ocean of prema. So that pranama mantra itself has nama, rupa, guna, lila of Gauranga.
So tvisakrsna, tvisa, refers to complexion of the Lord which is a-krsna, not black. sangopangastra-parsadam, so there are four items here. The letter sa there, sa means with, equipped with, with that, sa anga, anga, upanga, sangopangastra, astra, sangopangastra-parsada, fourth is parsada.
sa anga, sa upanga, sa astra, sa parsada, He appears along with all these items here. So He appears with anga, limbs, they are like a part of Him. So Nityananda, Advaita is anga of the Lord. In the commentaries by acharyas, Jiva Goswami they explain this. Bhaktisiddhanta Sarasvati Thakura also quoting other commentators. Srila Prabhupada briefly does mention, we did not reach that part in the purport.
upanga, Srivasa and many many devotees are upanga’s. So anga, upanga, sastra,
Hare Krishna Hare Krishna Krishna Krishna Hare Hare
Hare Rama Hare Rama Rama Rama Hare Hare
is a sastra, is a weapon, to do what, paritranaya sadhunam vinasaya ca duskrtam (Bg 4.8), there are so many duskritina’s, dusta’s the demons, Haribol! I did say Haribol for some other reason but I thought some one was sleeping, so, I dislike the sleepers. They always get my attention, what to do? Its my weakness.
So sastra the holy name, so the sastra’s are used for killing the demons. But the Lord has appeared as the most magnanimous. So this time His weapons are not the normal usual bow and arrow, the axe like a Parasurama is using, Krishna is Sudarshana. In fact when Nityananda Prabhu was attacked, offended Caitanya Mahaprabhu had appeared on the scene with Sudarshana! But then He was reminded, No, No, No, Nityananda Prabhu, not in this age, not this weapon. The weapon is,
Hare Krishna Hare Krishna Krishna Krishna Hare Hare
Hare Rama Hare Rama Rama Rama Hare Hare
It is also described that Lord’s beauty is also weapon. The demoniac mentality or demoniac consciousness is killed or defeated just by the beauty of Gauranga. He was so beautiful, just by looking at Him, the arrows are shot at, at the person who is looking at Mahaprabhu and he is killed in no time. His beauty is the weapon, captivating, capturing and then that person surrenders unto Gauranga.
So there are the astra’s mentioned, there are several astra’s. Prasadam is also astra. And hence comes the ISKCON bullet, ISKCON bullets are gulab jamuns. And you are finished! So Prabhupada just fed prasada and so many demons, American demons, demoniac nature was killed. There were hippies, there were demons, they chanted Hare krishna, ate gulab jamuns and they were happy. The hippies became happies.
So Prabhupada was senapati bhakta, talking of senapati, sena means army, he is chief in commander and then he made New York his destination. Go to New York. New York the capital of the age of Kali. And upon arrival there he started showering bombs of the holy name and the time bomb his books were also weapons. They would explode but not destroy but construct beautiful heart or consciousness.
So Bhagavatam is a weapon, Bhagavatam is complete, in there is Krishna’s beauty, Krishna’s form, Krishna, Krishna. So sangopangastra-parsadam, His parsada’s are Gadhadhara is His parsada, Govinda was His parsada, Ramananda Raya was His parsada, Rupa Sanatana were His parsada and many others. So all those who were with Him at that time, those who appeared along with Him, they are anga’s limbs or upanga’s secondary limbs, or astra’s the weapons or parsada’s His companions close, they are always around.
yajñaih sankirtana-prayair yajanti hi su-medhasah
So first two lines is one part in this verse. Lord is described. It is just Lord’s description. What kind of Lord is described? Like this, krsna-varnam tvisakrsnam sangopangastra-parsadam, am, am, you see, for some reason it is ‘am’, ‘am’. So they are one family, they are together. They all describe Lord. And here is already established now. He is Sri Krishna Caitanya, because gaura-tvise a-krsna, He is not black, He is golden.
So then the two more parts are there, yajanti hi su-medhasah, su-medhasah yajanti, su-medasah is su means susthu nice wonderful, medhasah intelligent. The most intelligent persons yajanti, they worship, most intelligent persons, what do they do, they worship. Who do they worship? In this verse, they worship krsna-varnam tvisakrsnam sangopangastra-parsadam, su-medhasah yajanti, intelligent persons worship this Lord, Gauranga.
alpa medhasam, Krishna says in Bhagavad Gita, alpa medhasam, those who are less intelligent devan deva-yajo yanti, they worship demigods, less intelligent Lord said. Less intelligent alpa medhasam, here is su-medhasah. Alpa means no or little, and su-medhasah, susthu, so much intelligent, highly intelligent persons, most intelligent persons would go for Gauranga! go for Gauranga! go for Gauranga! go for Gauranga! go for Gauranga!
So yajanti his su-medasah, now they worship this Lord, but how do they worship, what is the mode of worship, what is the process do they adopt, that is the third part. yajñaih sankirtana-prayair su-medhasah yajanti, they worship, how do they worship yajñaih, yajñaih means by performance of yajna and doesn’t stop there, not giving any room for speculation, immediately that yajna’s name is mentioned. Which yajna, sankirtana yajna. There is no yajñaih and then full stop. Period! No! yajñaih sankirtana-prayair yajñaih su-medhasah yajanti, the intelligent persons worship this Lord in the age of Kali by chanting
Hare Krishna Hare Krishna Krishna Krishna Hare Hare
Hare Rama Hare Rama Rama Rama Hare Hare
So you must be intelligent that you have assembled here to worship the Lord who appears in the age of Kali. Worship how, by chanting krsna-varnam, as Lord did personally in fact, krsna-varnam, Lord personally did this. apani acari jagate sikhaya, by His own example He taught others, He taught the whole world. So He chanted 500 years ago personally. All that chanting started in Mayapur, Navadvipa and He takes sannyasa, He travels all over India chanting and dancing and the way He has shaken up, shaken, shaken up the whole world, or universe and left the vibrations – Hare Krishna! Hare Krishna! So that is what is shaking us up, waking us up, those vibrations are still in the air! Of course He has not stopped chanting, still He is here, Gauranga is here! kona kona bhagyavan dekhi bare pare, those who are fortunate they could even see today, Gauranga Mahaprabhu performing His pastimes and His pastimes here are kirtana lila.
And same lila Prabhupada expanded that. Mahaprabhu chanted just within the boundaries of India and Prabhupada said, ‘Mahaprabhu left this job of spreading, chanting beyond the boundaries of India up to the International Society for Krishna Consciousness.’ (Devotees: Haribol!) So he became the founder acharya 50 years ago, ISKCON was founded, and then same sankirtanaih kapitarau, as sankirtana was started by Mahaprabhu here was then inauguration took place and now it has reached far and wide. And what is the indication, how do we know it has reached far and wide? Right here, we see the faces from around the world, we heard day before yesterday devotees from 70 countries are here. (Devotees: Haribol!)
And then I say, I have been saying this, from nama to dhama. Devotees receive nama wherever they are, in their country they receive nama, and that nama the holy name brings them to dhama. (Devotees: Haribol!) So nama to dhama.
So one day will come as predicted by Caitanya Mahaprabhu, this yajnah, sankirtana-yajnah will be performed in every town, every village of this planet. And from every village, from every town devotees will be making plans to come to Mayapur for Kirtan Mela, amongst other festival aspects. And they will coming from every little town, Timbaktu, there is a Timbaktu, Timbaktu, from there also they will come. So this is just the beginning, this is just the beginning, 50 years passed and now another 9000 years to go. You could imagine. This temple which is going to hold 10000 devotees, the TOVP temple in the front is built to accommodate how many devotees,10000 but for sure as soon as temple is opened it will be filled, it will be packed. (Devotees: Haribol!) Then we have to make plans for bigger temple, or stadium, there is some talk up.
Ok Thank you very much!
3rd Day of Gaura Purnima festival in Mayapur- 7 Feb 2016 (Album with photos)
The number of devotees arriving for the festival is increasing! Panca Tattva hall was packed and everyone was trying to get into the hall to take part of this eternal Sankirtan lila of Sri Caitanya Mahaprabhu and His associates! HH Lokanath Swami gave today’s lecture on the famous verse:
Krishna varnam tvisa krsnam – where the incarnation of Lord Krishna as Gaura Avatar with the weapon of Sankirtan is predicted. The lecture is available at mayapur.tv archives.
Find them here: http://goo.gl/kbfG5b
Kadamba Kanana Swami visited Czech from 12-18 January. Please find recordings below.
Download ALL
KKS_CZ_13Jan2016_Ostrava_SB_2.1.4
KKS_CZ_13Jan2016_Ostrava_Evening_Kirtan
KKS_CZ_13Jan2016_Ostrava_Evening_Lecture_The-secret-path-to-Vrindavan
KKS_CZ_14Jan2016_Ostrava_SB_2.1.5
KKS_CZ_14Jan2016_Ostrava_Evening_Kirtan
KKS_CZ_14Jan2016_Ostrava_Evening_Lecture_The-KC-inside-when-everything-gets-taken-away
KKS_CZ_15Jan2016_Ostrava_SB_2.1.6
KKS_CZ_15Jan2016_Village_Evening_Lecture
KKS_CZ_15Jan2016_Village_Evening_Kirtan
KKS_CZ_16Jan2016_Village_SB_6.1.19
KKS_CZ_16Jan2016_HarinamaMandir_Evening_Kirtan
KKS_CZ_16Jan2016_HarinamaMandir_Evening_Lecture_Reality-check
KKS_CZ_17Jan2016_PragueTemple_SB_2.3.13
KKS_CZ_17Jan2016_PragueTemple_SundayProgram_Kirtan
KKS_CZ_17Jan2016_PragueTemple_SundayProgram_Lecture
KKS_CZ_18Jan2016_PragueTemple_SB_5.2.29
The number of devotees arriving for the festival is increasing! Panca Tattva hall was packed and everyone were trying to get into the hall to take part of this eternal Sankirtan lila of Sri Caitanya Mahaprabhu and His associates! HH Lokanath Swami gave today’s lecture on the famous verse: Krishna varnam tvisa krsnam – where […]
The post 3rd Day of Gaura Purnima festival in Mayapur- 7 Feb 2016 appeared first on Mayapur.com.
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
The post Mayapura evening kirtana, March 7th appeared first on SivaramaSwami.com.
The post Maha Shiva Ratri 2016 appeared first on Mayapur.com.
Sri Sri Radha Madhav Mandir, ISKCON Kanpur, is celebrating ISKCON 50, on 9th April 2016 for the pleasure of Srila Prabhupada. We are organizing a Mega Youth festival named “Xpression: A Festival of Gratitude”.
For more info: https://www.facebook.com/iskconkanpur/
To watch the promo video click here: https://www.youtube.com/watch?v=QSYvRRG2SaM
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
The post Daily Darshan: March 7th, 2016 appeared first on Mayapur.com.
Answer Podcast
Download by “right-click and save content”
The post What is the exact difference between brahmavadis and mayavadis? appeared first on 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.
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.
Answer Podcast
Download by “right-click and save content”
The post Is the soul is eternal, how is Krishna the cause of the soul? appeared first on 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.
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.
Podcast
Download by “right-click and save content”
The post Holy Name is Everything Part 2 appeared first on The Spiritual Scientist.
Podcast
Download by “right-click and save content”
The post Holy Name is Everything Part 1 appeared first on The Spiritual Scientist.
[ Шрила Рагхунатха дас Госвами, «Враджа-виласа-става» ]
Prerana-Dining With A Monkey–Learning To Live With The Mind -Chaitanya Charan Prabhu 2016 02 26
Podcast
Download by “right-click and save content”
The post Chatur Shloki Bhagavatam 2 – Understanding Maya appeared first on 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.
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 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"
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: 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 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
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
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.
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:
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.”
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.
“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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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)
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:
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.”
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.
“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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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)
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?
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.
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.
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:
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.
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)
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?
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.
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.
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:
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.
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)
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.
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.
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.
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.
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.
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.
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.
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).
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.
Take a look at this five-tier website architecture.
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.
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.
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: Fastly, Akamai, Incapsula, CloudFlare.
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.
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.
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.
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 Grunt, Gulp orWebpack.
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.
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.
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.
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.
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.
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.
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.
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)
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.
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.
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.
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.
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.
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.
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.
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).
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.
Take a look at this five-tier website architecture.
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.
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.
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: Fastly, Akamai, Incapsula, CloudFlare.
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.
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.
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.
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 Grunt, Gulp orWebpack.
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.
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.
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.
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.
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.
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.
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.
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)
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:
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.
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:
Read more about the Panda and Penguin updates here:
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.
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.
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.
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.
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)
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:
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.
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:
Read more about the Panda and Penguin updates here:
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.
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.
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.
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.
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)
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
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!”
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
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.