Tuesday, September 23, 2008

What the Buddha Taught: Meditation as Concentration and Attention to Detail

As part of the wonderfully useful (I'm not being sarcastic) major in philosophy during my college years I had the pleasure of reading a book called What the Buddha Taught by Walpola Rahula. Of course, being a philosophy major I was especially susceptible to the kind of books that stir up what some might call "Deep Thoughts", also "Navel Gazing".

Interestingly, I found out later after a course in Elementary Logic, taught by Dr. Cassandra Pinnick, that there was more to this whole philosophy thing than sensational ideas about religion and boring lectures about the business ethics of companies who are, IMHO, just trying to help factories by selling glue in Guatemala (see H.B. Fuller Glue Sniffing). I mean seriously why would it be my companies fault if some retard kid in Guatemala uses my product in an illegal and reasonably unforeseeable way.

Anyway, the point of this post is to bring a little bit of clarity to your life by way of one of the most misunderstood concepts in modern religion, Meditation (specifically the Buddhist concept of Meditation). I know what you are thinking, "There's not enough room in my cubicle to cross my legs" and besides that, "The weird guy Wesley who sits in the cubicle across the aisle doesn't even like it when I play my new Enya CD more than a whisper; there is no way he will listen to me 'Hummmm' to myself for 15 minutes while I get in the 'Zone'".

As are most actual Buddhist followers, you are probably mistaken about the definition of Meditation. Here is Meditation as described by Walpola Rahula,

"It is unfortunate that hardly any other section of the Buddha's teaching is so much misunderstood as 'meditation', both by Buddhists and non-Buddhists. The moment the word 'meditation' is mentioned, one thinks of an escape from the daily activities of life; assuming a particular posture, like a statue in some cave or cell in a monastery, in some remote place cut off from society; and musing on, or being absorbed in, some kind of mystic or mysterious thought or trance. True Buddhist 'meditation' does not mean this kind of escape at all."
Of the various acts that can involve meditation (Nearly every task can, from eating to reading to coding) the one that has been brought to my mind recently is the act of concentrating fully on a given concept to gain insight. We have a sort of open-ended question that we ask during interviews, "Tell me everything you can about what happens from the time a user enters an address in a web browser to the time the page is displayed."

To me, this is an excellent concept to Meditate on. You see Meditation is really better described as 'Mental Development'; and all exercises/disciplines that cultivate that 'Mental Development' are forms of Meditation. I'm sure you have certain situations where you are forced to sit around with nothing to do; maybe you have a long ride to work in the morning, a weekly 3 hour conference call where you only participate for 5 minutes (right in the middle) or a monthly company meeting where they talk about keeping the damn kitchen counters clean for an hour (I mean seriously, we got it, keep the counters clean, check that one off the list, lets move on for the love of....). Why not try and think deeply about some concept related to your work during that time.

As programmers, we're lucky. There are abstractions all around us that we never really think deeply about. I know I can spend at least 30 minutes thinking about what is really happening when you join two strings together in a simple C# statement like;

var blah = "Miss Piggy loves " + "Kermit";

(Pseudo)Dynamic-typing, operator overloading, memory allocation, character pointers, null terminated strings, character encoding, registers and ALU's have been neatly and nicely stowed away so as to not require too much mental heavy lifting. Don't get me wrong, it makes us extremely productive (Think about having to know internal combustion engines inside and out just to be able to drive to work, not productive).

I think you'll find that concentrating on something specific with as much detail as possible, like the two strings or the HTTP request/response life cycle, will give you a sort of 'enlightenment' when it comes to how you write code, drive to work, cook a meal or even shave your face.

Now Playing: Jimmy Eat World - Futures

Monday, September 8, 2008

Dare Obasanjo's 3 Laws of Platform Adoption: A DotNetNuke Perspective

Dare Obasanjo has an informative post up about the 3 Laws of Platform Adoption, which got me thinking about DotNetNuke as a platform for developers. The first competitor that comes to most peoples minds when thinking about DotNetNuke is Sharepoint but there are other Content Management Systems out there that are viable alternatives to small and medium businesses looking to step up their website in a cost efficient and functionality rich way. Joomla! seems to be getting a lot of attention among developers on the LAMP stack as a hip new replacement for phpNuke.

When it comes to using the 3 Laws of Platform Adoption as a metric I think DotNetNuke stacks up pretty well for your small to medium business. Lets take a look at the condensed version of the 3 Laws.

1. Developers adopt a platform when it offers differentiation from competitors

2. Developers adopt a platform when it reduces the cost of software development

3. Developers adopt a platform when it provides reach and/or better distribution

So, starting with the obvious number 1, what differentiates DotNetNuke from its competitors? For me, DotNetNuke is different than its competitors in that it is designed to run atop your existing Microsoft software without adding any licensing fees. Small business clients running *nix servers are few and far between, so the ability to leverage your existing technology resource investments gives people a warm and fuzzy feeling. As far as Sharepoint as a competitor is concerned, it just doesn't make sense for small businesses because of the licensing fees. I know that Sharepoint Services 3.0 is free to download for Windows Server 2003, but most of the cool features are only available by ponying up extra for MOSS.

In the world of providing custom solutions for small businesses, Cost = Time = Money. This is why DotNetNuke also has a good footing for number 2. From a developers standpoint DotNetNuke runs on very familiar, some would say it's even cheap (as in inexpensive), technology (Visual Studio Express, IIS, Windows Server, Vista, even XP), which means less setup, implementation, deployment and maintenance time. Developers can use the .Net language they are most comfortable in (C# all the way!) and utilize the functionality that DotNetNuke comes with right out of the box. Functionality like user profiles, role based security, multiple authentication providers, secure file access, and rich content editing.

DotNetNuke also has a strong and innovative community of users. The DotNetNuke Marketplace allows developers a place to distribute their products and services to a wide range of customers (current registered user base on DotNetNuke.com. The DotNetNuke core team has made it easy for users of DotNetNuke to find products in this marketplace by way of a link to the "Solutions Explorer" that is standard in all DotNetNuke installations. DotNetNuke acts like an open source community with a business mind. Along with the Marketplace, the introduction of Service Level Agreements that are competitively priced give other businesses the opportunity to make profits on helping users with their DotNetNuke problems.

Sunday, September 7, 2008

DotNetNuke Search Engine Optimizing - Step 7 Good HTML

I found an interesting post in a blog written about a year ago from Tom Kraak, owner of Seablick Consulting. The post gives a good list of SEO tips to consider when using the DotNetNuke framework which I think is helpful for all the people involved in creating a web site. Your modern day web developer simply has to be cognizant about the SEO ramifications of their implementation details.

The one that comes to mind first when thinking about my role, as developer (see previous post about "Three D's", I'm the one with the halo ), is number 7.

Write well-formed, standard compliant HTML to improve accessibility and "crawlability." Consider excessive in-page JavaScript, HTML layout tables and frames junk food for search engines spiders. I'm well aware that strict XHTML remains a challenge with DNN, but let's make an effort to move away from quirks mode by adhering at least to XHTML transitional.

Number 7 is one of several good reasons why I am an advocate of DIV's over Tables. Regardless of the fact that all the cool kids seem to be using div's these days, I still like to be able to answer the question "Why do people use div's over tables?" when occasionally asked by the seasoned developer (aka Old Fogey) and ordinary Dreamweaver adept (aka Graphic Designer). Here is my basic response: Tables were meant for tabular data, that is what they should be used for. Now to add to that, tables are incredibly helpful in some situations; I'm not an advocate of throwing them completely under the bus for all layout handling.

The problem with using tables for layouts (that I personally have found) is that they are very frequently rendered differently in every browser. As a corollary (albeit slightly contrived) to this problem, I like to also point out that it often takes more HTML to do the same layout with tables. One single 120 x 120 block of glorious green background is done in one div tag and some CSS, whereas if it were done with tables it becomes 3 tags and some CSS. The increase in the number of tags means an increased surface area for rendering problems with the browser, not to mention the increase in the amount of code to maintain.

Glorious Green

Now Playing: T.I. - Swagger Like Us