Search
 
Minimize
 Old Town IT Blog
Author: Don Worthley Created: 9/12/2007 3:12 PM
Business, Technology and everything in between.

image image "Meh."  That was my reaction to Live Mesh, and that's probably just because I've been using Groove for the past 5 years and have enjoyed the wonderful benefits of file synchronization over multiple PCs through seamless integration with Windows Explorer.  If you haven't used Groove for project collaboration, you need to spend a few minutes checking into this product.  As I watched the video (see image on the right for directions), I had to ask myself...

Read More »

The odd result

OK, while the pictures are copying, I have to tell you a little story.  One of the byproducts of our ice storm was a plate full of candles that we let burn too long that had melted and spilled over the edge of the plate and down the mantle of our fireplace.  

Fast forward to last Sunday evening.  I see the plate of wax full of half burned candles and large pieces of wax that actually broke away from the stone and brick and I realize...

Read More »

They say that time files when you're having fun, so I must have had a blast during February.  Somebody please let me know. 

Actually, it has been fun.  I've spent the better part of the month creating the foundation for some exciting features with metaPost (A module IT Crossing has created for use with DotNetNuke, an open source enterprise class CMS I've used with clients now for a couple of years.).  Yes, I laid down all of my books on leadership and hunkered down in my little cave (it's actually a nice office with a great view!) to work on increasing the fun and the ease of use one more notch for metaPost.

Here's a sample of my favorite new feature which synthesizes a small JavaScript library with metaPost to automatically add stunning visual effects to your images.  I just dragged and dropped these images from my digital camera into the page.  Well, OK, I did set the alt attribute to a nice short description of the image.  Go ahead!  Try it out!  Click on the first image and use your arrow keys to move around.  Then try to open more than one at a time!  Very fun, and this is all handled automatically by metaPost Professional Edition. 

Poor tree.  You can add captions simply be setting and alt attribute for the image. Front bushes - be sure to try your arrow keys after you have expanded an image! Neighbor's ornate grasses 1
Neighbor's ornate grasses 2 Pine bushes? Can you believe this is grass?
You could even stand on the grass! The trees didn't fair so well. Front bushes
This is my favorite WLW automatically handles the resizing of the images from a digital camera.  Just drag and drop! Not sure what this was.

Well, it's late here in the US, so I'll have to sign off for now.  For those of you who have used metaPost, notice that there is no footer in this post!  I can customize my footer with metaPost Professional Edition!  Don't worry, it will be released soon.

As Search Engine Optimization (SEO) becomes more and more important, web professionals are looking at ways to increase their Google juice, the much sought after increase in page rank that is achieved through a variety of means most of which are very simple to implement.  One such optimization, which many web developers have overlooked, is the importance of the format of the URL.

And one of the standards which strives to make excellent use of the conceptual meaning behind the URL is referred to as Representation State Transfer, or REST for short.  Basically with REST, which has morphed in meaning over the years, has grown to mean among web professionals the attempt to address resources on the web and deal with them as nouns rather than verbs.  Verbs are actions that can be performed on the nouns, and the two should be distinct.  It turns out that the World Wide Web provides a great foundation for this if only people would write their URLs in a RESTful format.  Most of what we do on the web makes use of the HTTP GET command, so many are not aware that there are actually other commands such as PUT, DELETE and POST.  Well, we use POST a lot too, come to think of it.  That's what we use behind the scenes when we fill out online forms or when we upload a picture.

So, what would a RESTful URL look like and what what a non-RESTful URL look like?  Great question.

Non-RESTful URL:

http://www.yourdomain.com/onlinestore/default.aspx?category=new_rel&get_mem_price=true&...

RESTful URL:

http://www.yourdomain.com/online-store/members/products/new-releases

The main idea behind REST is the focus on using URLs to identify resources, or nouns, basically things that we might want to see or perform some action on. 

Do you buy this?

No, not really.  In an ideal world, yes, but I'll still be using the QueryString in development, especially in situations where there is an integration between two parts of a system.  Yes, you could use cookies, but then your users can't just copy and paste URLs into an email that they send to their colleagues.  When I've worked with online stores for customers, this is always a concern.

So, no, my URLs won't please the REST purists.

But, I do want my URLs to help my clients drink deep of some fine fresh squeezed Google juice, so I will be paying attention to ways I can make my URLs more attractive to search engines and it turns out the RESTful URLs tend to lend themselves well to SEO.  So much so, that I would recommend adding this to the list of considerations when looking into a Content Management System (CMS) for your organization.  If your proposed CMS has stuff like this (WizardKey=f5da82f6-2140-4dea-8d9d-be112b16c3fd&WizardStep=93d4ee5a-70eb-4570-ae5d-fdbc6e3f43c2) in the QueryString, I would hazard a guess that this is not very meaningful information for search engines.

This was one of the things I liked about DotNetNuke (An ASP.NET-based, open source CMS) the first time I investigated it for use with a client about 3 years ago.  The DNN architects were early in realizing that QueryStrings were not helpful when trying to increase page rank.  However, one of the drawbacks to DotNetNuke (it's actaully a drawback to ASP.NET running on IIS 6 or lower and I've heard it's fixed in IIS 7) is that you can't have a URL without a file and a known file extension such as .aspx.  This means that the closest thing I can get to a RESTful URL is something like this:  http;//www.mydomain.com/products/chrome-bumpers.aspx.  That's closer, but still not quite to the completely RESTful form of http;//www.mydomain.com/products/chrome-bumpers. 

DotNetNuke Resources for SEO and Human Friend URLs

I stumbled upon this resource from Scott McCulluch last night.  I haven't used it yet, but it looks really helpful.

Also, here's a video I created showing an attempt I made to implement a RESTful URL in DNN using an ISAPI filter and some changes to the core.

OK, so I've started this conversation.  What do you think?  What technologies are you using to keep the Google juices flowing?

PS This is my first post to the blog using our new metaPost DotNetNuke module.  More on that to come.

powered by metaPost

I had a flash of inspiration this morning which forced me out of bed and to the computer where I routinely fire up my browser and head on over to netsol.com (Network Solutions) to perform a quick test.  I like their interface and figured that since they are the second largest domain registrar (After GoDaddy), my domain searches would be safe.  Just as I was about ready to hit enter to perform my search, I noticed a new section on the page.

image

Fascinated by the need for protective measures for my search through their interface, I decided to check this out.  It turns out that as of this past December (2007), Network Solutions implemented a new policy whereby each domain searched through their online domain lookup tool is purchased immediately.

Now, if you're still a Network Solutions customer this may not be a problem for you.  However, there are many who have found Network Solutions to be overpriced and have switched to other registrars who offer more value for almost one fourth of the price.  Those in this camp will be surprised to find that they are unable to purchase a domain with another registrar after performing a quick lookup using the intuitive NetSol domain lookup tool.  This process of front running will most likely create an even greater loss of business for Network Solutions, and it's dangerous, especially for anyone using their search, even if you're still a Network Solutions customer.

NetSol is touting this as a protective measure, but it's opened up a can of worms for the company.  As I did research this morning, I found that the fears I've had for years that my domain searches were available for others to see were closer to the mark than I realized.  Every time you perform a domain search, almost of any kind, your domain name is available for a variety of people to see.  In fact, your ISP and many of the domain registrars are selling this data to domain scalpers who are then able to abuse the 5 day domain tasting period by kiting the domain for indefinite periods of time.

Where do I stand on this?  Well, I won't be using NetSol to search for domains any more and I'm already 80% through with the process of moving from Network Solutions to GoDaddy.  Yes, I do realize that GoDaddy lacks the professional ring of Network Solutions.  But, at the end of the day, it's more about what the company does and how they treat their customers--and, of course, spam filters.  In fact, spam filtering was the biggest challenge for me moving away from Network Solutions.  But I've been pleasantly surprised to find that the spam filtering services offered through GoDaddy are just as strong as those available through Network Solutions.  Oh yeah, the registration process for a domain with GoDaddy seems to be more complicated than needed and full of up-selling gimmicks that you may not appreciate, but then that has become the norm with most registrars.  I've found the administrative interface for managing domains to be intuitive and easy to use.

The problem you need to consider, even if you are a Network Solutions customer, is that you're searches, especially if they are the brainstorming kind where you sit in front of the computer and try every combination of terms you can think of, could be very dangerous.  It's not uncommon for me to search for 40 or 50 different domain names during one of these sessions, and my search process might span days or weeks.  On one level, it may seem safe to you that Network Solutions is buying your domain and parking it for 5 days, but after the 5 day tasting period, the domain is now on the radar of the 100's of domain scalpers who may register the domain and kite it for years.  And if you don't realize that Network Solutions has purchased the domain, you'll never know that in 5 days the domains for which you searched are most likely gone. 

So How Do I Search Safely?

At this point, I would wait for the dust to settle a little before doing domain brainstorming with any type of domain search tool.  Any type of search is tracked by someone.  Using the address bar in your browser is tracked by your ISP.  Performing whois lookups directly using command line is tracked by the companies that manage the whois databases.  And, of course, now we know that searching for domains using the web interface, even at large, established registrars, isn't safe.

So, if you think you've got an idea for a domain for some new service or product at your organization, search for and register the domain at one registrar, and register it immediately.  Hopefully registrars will realize the need for trust with their customers regarding the domain search process and begin to implement measures to regain our trust. 

Have you been to a site recently where the login button contained a checkbox which said ‘Remember Me.’ I love that feature!  Yes!  I’m going to be remembered and all I have to do is click on a checkbox.

Well, it turns out that a lot of sites (the one’s built using Microsoft’s ASP.NET 2.0) say they’ll remember you, but most of the time they don’t.  I know.  That’s life.  But it doesn’t have to be that way!

For ASP.NET developers, this is a frustrating issue, especially for developers who are moving from a 1.1 version of their product to the new (well, now old) 2.0 version of the product.  It turns out that the ASP.NET team at Microsoft decided to make a change to the way ‘Remember Me’ is implemented behind the scenes. 

One of the Content Management Systems that I encourage clients to use is DotNetNuke, and Cathal Connolly from the core team did a great job of explaining the history of this issue in the DNN blog.  Scott Guthrie has also posted regarding this issue on his blog.

To restate the issue, since this is a separate blog post, the authentication cookie in ASP.NET supported a ‘Remember Me’ option through a Boolean parameter which basically set an explicit expiration on the authentication cookie used by Forms authentication.  For the 1.1 version of ASP.NET, the team decided to hardcode the expiration to 50 years.  As you can imagine, the security folks didn’t like the idea of cookies sitting around on people’s machines for 50 years. 

So, Microsoft changed the timeout to coincide with the forms authentication timeout set inside of web.config.  The idea was that if members wanted a persistent cookie, they could just bump the forms authentication timeout up to some really high number.  The problem with this, as Cathal points out, is that this removes the option to set a shorter timeout for those who choose not to use the ‘Remember Me’ option.  So, if you’re forgetful like me and you log into someone else’s workstation to show them something, that browser instance could be up for days leaving open the possibility that anyone using the workstation could access the site with your privileges. 

Code Alert - If you don't like reading code, skip the rest of this post.

The first thing that many try in their quest for a solution to this problem is to manually set the expiration of the cookie that’s created.  In fact, this is the case with the code in the DNN login control (the UserLogin procedure in UserController.vb )

If user.IsSuperUser Then
    AddEventLog(portalId, user.Username, user.UserID, PortalName, IP, UserLoginStatus.LOGIN_SUPERUSER)
Else
    AddEventLog(portalId, user.Username, user.UserID, PortalName, IP, UserLoginStatus.LOGIN_SUCCESS)
End If
 
' set the forms authentication cookie ( log the user in )
FormsAuthentication.SetAuthCookie(user.Username, CreatePersistentCookie)
 
'check if cookie is persistent, and user has supplied 
‘custom value for expiration
If CreatePersistentCookie = True Then
    Dim PersistentCookieTimeout As Integer
    If Not Config.GetSetting("PersistentCookieTimeout") Is Nothing Then
        PersistentCookieTimeout = _
            Integer.Parse(Config.GetSetting("PersistentCookieTimeout"))
        'only use if non-zero, otherwise leave as asp.net value
        If PersistentCookieTimeout <> 0 Then
            'locate and update cookie
            Dim authCookie As String = FormsAuthentication.FormsCookieName
            For Each cookie As String In HttpContext.Current.Response.Cookies
                If cookie.Equals(authCookie) Then
                    HttpContext.Current.Response.Cookies(cookie).Expires = _
                        DateTime.Now.AddMinutes(PersistentCookieTimeout)
                End If
            Next
        End If
    End If
End If

 

You can see that the cookies collection is enumerated until the authentication cookie is found and the expires property is set to some configurable value.

Unfortunately, this doesn’t work as expected.  The reason is that there are actually two entities with an expiration:  the cookie and the authentication ticket stored in the cookie.   So, how do you set the expiration property of the authentication ticket?  In fact, how do you access the ticket?

To access the ticket, you have to manually create it.  So, the DNN code above could be re-written as follows:

If user.IsSuperUser Then
    AddEventLog(portalId, user.Username, user.UserID, PortalName, IP, UserLoginStatus.LOGIN_SUPERUSER)
Else
    AddEventLog(portalId, user.Username, user.UserID, PortalName, IP, UserLoginStatus.LOGIN_SUCCESS)
End If
 
 
'check if cookie is persistent, and user has supplied custom value for expiration
If CreatePersistentCookie = True Then
 
    Dim PersistentCookieTimeout As Integer
    If Not Config.GetSetting("PersistentCookieTimeout") Is Nothing Then
        PersistentCookieTimeout = Integer.Parse(Config.GetSetting("PersistentCookieTimeout"))
        'only use if non-zero, otherwise leave as asp.net value
        If PersistentCookieTimeout <> 0 Then
            'manually create authentication cookie
            'first, create the authentication ticket
            Dim AuthenticationTicket As FormsAuthenticationTicket = _
             New FormsAuthenticationTicket(user.Username, True, PersistentCookieTimeout)
            'encrypt it
            Dim EncryptedAuthTicket As String = _
             FormsAuthentication.Encrypt(AuthenticationTicket)
            Dim AuthCookie As HttpCookie = _
             New HttpCookie(FormsAuthentication.FormsCookieName, EncryptedAuthTicket)
            'set cookie expiration to correspond with ticket expiration.
            AuthCookie.Expires = AuthenticationTicket.Expiration
            HttpContext.Current.Response.Cookies.Set(AuthCookie)
        End If
    End If
 
Else
    ' set the forms authentication cookie ( log the user in )
    FormsAuthentication.SetAuthCookie(user.Username, False)
End If

 

The key to this solution is getting access to the authentication ticket by creating the ticket manually.  You can see that in the constructor for the FormsAuthenticationTicket, we are able to pass in an integer which sets the timeout in minutes for the ticket. 

 

Even if you’re not using DNN but you do need to provide two separate timeouts--one for your users who want to persist their cookies, and one for those who don’t--you can use code similar to the code above.  Also, if you’re using the ASP.NET login control, you may find this thread on the asp.net forums interesting.  Stefan Schackow does a great job of explaining how you can use the LoggedIn event to manually configure the authentication ticket.   

I saw this a few months back in a Ning network created by Jeff De Cagna but forgot to add a blog entry about it.  It's called Did You Know 2.0. 

The statistics in this video are just mind boggling, but the most amazing one to me is that the amount of new information is expected to double every 72 hours by 2010.

 

A few months back I asked what one word would capture the essence of Web 3.0, and I'm beginning to see that with the overwhelming increase in information available to the average information worker, there is an ever increasing need for context.  Just think about it, it's like an information explosion where the pieces are landing all over the place.  New tools will be needed to bring the pieces together in a way that make it more discoverable and meaningful for the members of a group or organization.  More on this to come since this has been the subject of a great deal of our thought and research over the past year.



Yes, Good to Great was published in 2001, and yes, this is 2008. But as I've said before, I was working with my head in the sand for years on end and the vast majority of my reading was technical in nature.  And you know what, I'm sure in the weeks to come I'll probably be mentioning other books that many of you have read years before, so no more excuses for why I haven't read this until now.

I told my wife the other day that it feels like I've woken up from a 10 or 15 year nap.  Of course, having read Good to Great over the past week, I realize now that I was running around like a fox focusing on only 2 of the 3 circles of focus that Jim Collins uses to describe his hedgehog concept which he borrowed from Isaiah Berlin.  In all honesty, my focus was probably only on one of the 3 circles.  I'll leave you to decide which one.

 

Jim Collins Hedgehog concept.

A Short Review

If you haven't read Good to Great, I would say it's a must read for anyone aspiring to affect change in the world around them.  In my mind, it's a must read for leaders in any type of organization, but the principles outlined in the book, which are based on 5 years of research and study regarding 11 businesses that met his team's strict requirements for greatness, are applicable to organizations of any size. 

The book is broadly organized into 3 main sections entitled:

image

Each of these major sections is divided into 2 main key principles. 

All six of the main principles struck an interesting balance between being counterintuitive and yet strikingly consistent with reality.  Of particular interest to me, were the first and last principles.

Level 5 Leadership

If you haven't read Good to Great, level 5 leadership probably makes immediate sense from the standpoint that 5 is probably the highest level, so we're talking about the larger than life, high-powered leaders who, by the shear force of their personality and intellect are able to stand tall above the masses and provide what many would describe as very strong leadership skills within their organization.  At least that's what I thought when I started the chapter, but I was pleasantly surprised to find something completely different.

Jim (as if I know him personally, but Mr. Collins sounds so formal) does the chapter a great service by making up a new name for the type of leader his team identified at the transition of each of the good to great companies.  What the team found was fascinating.  A level 5 leader is simply a leader who's two greatest strengths are humility and strength of will, most likely in that order.  I realize that I've simplified this concept too much by using just the term humility, but you can read the chapter for yourself to see how Jim brings this concept to life. 

For me, the chapter lead to a refreshing change of perspective regarding great leadership, one that I think many in my generation (The X-Gen) will particularly appreciate given our natural rejection of autocratic, hierarchical styles of leadership.

Technology as an Accelerator

On one level, I found this chapter to be disappointing.  As a technologist, I would like to think that technology is somehow at the heart of some of the amazing success stories of the business world.  I assumed, for example, that companies like Dell, Amazon or Google were successful mainly because of their superior use of technology, and to some degree this may be true, especially in industries where technology is the commodity.  But Jim and his team do an excellent job in the last chapter in the section on disciplined action of demonstrating that technology is merely a tool, an accelerator, which an organization will find to be most useful when disciplined people, who naturally practice disciplined thought are already pursuing their hedgehog goal with disciplined action. 

My own epiphany

Honestly, this book complimented many of the principles I learned from Chris Halliwell during my 3 day Caltech Strategic Marketing Training.  The result of both has been an epiphany for me in both my business and personal life that strong leadership skills are essential.  As is the case with most epiphanies, this will seem patently obvious from the outside.  At the very beginning of the marketing training while Chris was setting the expectations for the course, she said that the course would focus, not on the latest marketing theories or approaches that in many cases are tied to a new technology, but rather on tried and true marketing principles she had learned through years of working as a marketing consultant.  Having sat the class and read Good to Great almost back to back, it's fascinating for me to see that most of the Good to Great principles were covered in the marketing training with a focus on the specific tools and techniques for applying these principles. 

My next read is Wikinomics: How Mass Collaboration Changes Everything.  From there, I plan on reading a series of classics on leadership.  Any suggestions regarding any great books on leadership?

Oh yeah, I almost forgot to mention that Jim Collins has also released a follow-up monograph for leaders involved with associations and non-profits titled Good to Great and the Social Sectors: A Monograph to Accompany Good to Great.

Give and then receive

 

If you find yourself committed to the principle of giving first and then receiving, you'll find yourself at home in the wonderful world of Web 2.0.  This same attitude is prevalent in the open source community.  In fact, I've found that it's a great life principle that's hard to master, but, when mastered, is one of the most powerful keys to success.  The stingy are ignored in the new economy and the giving are rewarded handsomely.  

Registration best practices

Excellent advice regarding the registration process.  A blogger I read on a regular basis, David Gammel provides great anecdotal evidence regarding the importance of simple registration processes.

Social proofing

So, now we should not only worry about SEO, but also SMO (Social Media Optimization).  Argh.  I thought I was being clever, but I see from Wikipedia that I'm more than a year late.

image It's been hectic since I came back from my 3 day strategic marketing course offered through Caltech.  I emailed another member of the course afterwards to say that I felt like I was trying to take a drink out of a fire hydrant.  There was so much great information!

It was an awesome experience, and the timing was perfect since we are early in the process at my company, IT Crossing, of designing and writing Member Crossing, community software we're writing to help organizations create engaging communities where their members can share community knowledge in a format that is highly discoverable. 

The course instructor, Chris Halliwell, has created a great online resource that you can check out (The Technology Marketing Center).

As a part of the pre-reading for the course, we read Chapter 2 (The Winning Strategy) from Marketing High Technology by William Davidow.  My favorite quote from this chapter helped to re-orient the marketing process for me.  William says,

Great devices are invented in the laboratory.  Great products are invented in the marketing department.

Although the course material is geared toward companies in the $100 million range, my class comprised mainly small startups and Chris did a great job of bringing the material down to our level.

The absolute best time to bring marketing into the mix is early on in the development of the product, but even if you've already taken your product to market, there are important marketing aspects to consider, like:

  • how to identify the whole product and not just the device
  • how to properly segment your market and position your product for market leadership
  • the importance of differentiation and specific steps to achieve differentiation in your market
  • specific ways to hear the Voice of the Customer

How about you?  How would you describe the marketing process related to your product or service?  Is marketing involved from the very beginning or just at the end, just before the product or service is taken to market?

    
 Old Town IT Blog
 
Old Town IT
Copyright © Old Town IT, LLC
Patriotic flag
Privacy Policy: Old Town IT will never share your
information with anyone without your permission
Eco-friendly reminder leaf
703.579.6930 | info@oldtownit.com
Register  |  Login
At Old Town IT, we believe in the innovative and hard-working spirit of the American workforce. Since its inception, Old Town IT has created 22 new jobs in Virginia, Maryland, Washington D.C., California and Missouri.
Old Town IT actively works to reduce our team's environmental footprint. Policies and incentives-such as reimbursements for utilizing public transportation and carpooling-reflect our commitment to maintaining sustainable business practices.