Observations on the iPhone 3GS

Okay, we succumbed to the pressure and switched to iPhones.  Yep, the 3GS.  Our contract with Sprint was ending and we had the choice of upgrading to some sort of touch-screen PDA-like device after a few years of Motorola RAZRs.  We looked at them all, Palm Pre, HTC Touch Pro 2, Sprint’s Android, CrackBerry - Every operating system, piece of glitzy hardware and voice/data plan out there.  And the iPhone 3GS won.  Hands down.

Set aside the fact that switching to a Windows Mobile 6 device on Sprint would cost us the same, with a $150 loyalty discount, as if we had walked off the street as a new customer (Wireless companies have never really understood customer loyalty).  And forget that a new, discounted, Palm Pre or CrackBerry would set us back more than the non-discounted iPhone 3GS.  Or that the data plan from AT&T was less expensive than the competition.  Or that the Android and CrackBerry, in spite of the ability to develop third-party apps, really don’t have anything useful available on them.  The iPhone is just simply designed better.

Nobody ever said Apple couldn’t design sexy hardware.  Even without drinking the KoolAid™, Apple hardware has always been a designer’s wet dream.  And the proprietary software has always been designed from the user’s perspective, not the twisted mind of some geeky developer who has arcane keyboard shortcuts embedded in his DNA.  No, we don’t buy the “Macs always run perfect” routine – over the years we’ve seen more than our share of Sad Macs and Mac Bombs, and we struggle with the fact that the only user-solution available is to rebuild the desktop.  And we know that statistically it’s less likely to get a virus on a Mac, but we don’t get viruses, trojans or malware on a PC either — we know how to prevent that.  Even with all that, the iPhone just happens to be a user’s wet dream too.

First, it fits your hand.  All the touch-screen competitors make lousy phones, they don’t fit your hand next to your ear.  Sure, we could join the Borg and get Bluetooth implants on our cheekbones, but that’s not how we use a phone.  Yes, we have used the devices, the Jawbone is absolutely awe insipiring, but sticking a plug in our ear will have to wait until we have lost our natural hearing or we are assigned to a Special Forces detail guarding the President.

More importantly, the iPhone fits your pocket.  One reason we loved the RAZR phones is the clamshell devices were sleek and slipped into your jeans pocket beautifully.  Sure, the shiny coating was rubbed raw, but the phone was protected while banging around with keys, coins and the occasional gore and grit that slip into everyone’s life.  The iPhone, with its exposed touch screen and rather expensive repair policies, is far more scary to slip into your pocket.  But it’s just as capable.  A rubberized slider case from Incase, another group of wet-dream designers, and a cheap screen protector have kept the iPhone from major, and even minor, damage.  The oleophobic glass screen technology Apple chose is far superior to any touch-screen we’ve seen in the area of shedding potential dust, damage or dingyness.  If possible, the glass even appears to shed finger prints and smudges, a technology we’d like to see on our drinking glasses, eyeglasses and windshields.

And the iPhone has apps.  We have Zunes for our MP3 source, and we’re not enamored enough with music to waste our money with iTunes, but there are other apps available for the 3GS.  Like the Geocaching app.  Yes, we’re weekend Geocachers (Sunweasels), and the iPhone makes those park and grabs a bit easier.  We no longer have to plan a Geocaching expedition and load the GPS coordinates, we can thumb up a local cache for a lunch time break.  It doesn’t replace a real GPS, for one thing it’s far less accurate, but the iPhone 3GS, and the Geocaching app, is always tucked in our pocket.

Or mounted on the dash mount in the Wrangler.  It doesn’t bounce like a dedicated GPS (Garmin GPSMap 60CSx) does, plus with a simple cable it becomes the stereo source.  Satellite radio cuts out under trees, but the free Pandora app for the iPhone shines.  We have our own dedicated station playing our own range of hits, with no monthly/annual fee, and better reception than any satellite radio.  As a by-product for a pretty decent phone.

And that may be the key to our pleasure with the iPhone 3GS.  First and foremost, we need a phone.  Not a MP3 player, not a gaming system, not a mapping device and not a way to find the nearest public rest room.  A list of contacts, voice dialing and some sort of voice mail are the primary needs.  And, well served by the iPhone 3GS, these needs somehow fade into the background.  They’re not afterthoughts in this device, as they appear to be with the texting-scion CrackBerry or the sliding-keyboard Palm Pre, which has a more convoluted keyboard than even the CrackBerry.  They’re not overly complicated, as in most implementations of Windows Mobile.  They’re not even as difficult as they were with the phone-only RAZR.

We’re satisfied.  We tried the competitors, even the Go Phone and other disposables (actually quite expensive to use…).  We tried to stay with Sprint, we were happy with the coverage and service even though their pricing kinda ticked us off.  We had even left AT&T for Sprint years ago, when Cingular took over AT&T and their service took a nose dive.  We’ve been moderately satisfied with AT&T, coverage is okay for where we travel, but we probably would be more satisfied with other carriers.  AT&T got us simply because of the iPhone.  And the iPhone 3GS got us simply because, for our needs, it was the best.  Hands down.  Even if the Mac Geniuses are kind of annoying.

Disclaimer

We like our iPhones, you may not.  We really don’t care, but if you buy an iPhone because of us and regret your decision, don’t blame us.  We have a limited amount of exposure to them so far, and we use our phones differently than you may, so it’s your fault if you blindly follow the advice of some schmuck with a blog.

On the other hand, while we are iPhone converts, we don’t really like Macs for computers (we’ve been using them for a decade for specific tasks).  It may be the devil we know, but we’re comfortable with the PC, it goes above and beyond what we can get from a Mac at a third the price.  Or less.  A $300 Acer Aspire One Netbook running Windows 7 beats a MacBook Air any day of the week.  And we could break about five of them before we spent as much as we would have on the Air.  While we think the Mac versus PC commercials are cute, Windows, for us, is the better choice.  Though we have to admit, the Mac makes a good hardware platform for running Windows.

Published in: on November 3, 2009 at 11:04 am Leave a Comment
Tags:

Making a Link, Checking it Twice…

It’s not even Christmas yet and I find myself with a checklist, this one for Federal web site requirements.  If you run a government web site, be it at the Federal, State or local level, or even outside the US, it’s hard to go wrong when you adhere to guidelines and practices developed by the Federal Government.  Although, in many ways, it’s also hard to do it right.

One checklist item mentioned is an external links review, something sorely lacking in many government web sites.  Most webmasters are capable of doing a decent job of ensuring the major links within their site are working, but do you have an easy-to-follow policy for reviewing external link?  Sure, you can run a link-checker to see if the link is broken (Xenu happens to be a current favorite around here…) but what if the link is still valid, only now it doesn’t point to where you intended?  This could be anywhere from annoying to disastrous.

For example, your link to www.sample.com/Default.aspx?Document=1234 is great, until the nice folks at Sample.com renumber their documents and instead of bringing up the schedule for the Bluegrass Festival it now brings up the requirements for applying for a permit to transport live frogs via personal watercraft.  No link checker will tell you that, you have to actually click on the link and make sure it goes where you think it should.  But hey, at least your Bluegrass fans are only a bit disapointed. It’s not like you linked to a list of the local houses of worship and now that link points to Kandi’s Kastle of Kink.

It’s amazing how many sites have menu items that pass to dead links but even more amazing is how many of those same sites have no method of reporting broken links.  Yes, running link checkers can help, analyzing the site’s log files for 404 responses may be even better, but what’s wrong with letting the viewers help?  Are you afraid they just might do so?

The best thing a webmaster can hope for is a dedicated viewer willing to report a broken link.  After all, it means they want to use your site and, even better, they probably have found the place the link should point to.  They have done 90% of your job, you just need to make a quick edit to fix a problem.  A simple “Report a Problem” link on your site that is either a mailto: link or backed by a response form goes a long way toward appeasing a viewer already frustrated by an incorrect or broken link.  A custom 404 message can make this even easier.

No link checking program, service or analyzer can ensure you don’t have problem links.  It is up to the webmaster, or to designated parties in your organization, to stay on top of these seemingly trivial things.  To a viewer, a site with broken or erroneous links appears less maintained, less important and less trustworthy.  And being less trustworthy is not something any government site needs to aspire to.

Disclaimer

The drivel posted here may or may not make a difference in your environment, so please feel free to pass it by at any time.  On the other hand, you know we’re right, so just listen up and follow the advice.

Published in: on August 13, 2009 at 11:16 am Comments (1)

Book Review: Professional DotNetNuke 5

 	 Professional DotNetNuke 5: Open Source Web Application Framework for ASP.NET

Professional DotNetNuke 5: Open Source Web Application Framework for ASP.NET

Professional DotNetNuke 5, published by Wrox, is the first major book to cover the new 5.x release of DotNetNuke, and it’s assuredly the best book on the subject.  With the exception of the first chapter, which covers the evolution of the DotNetNuke framework and appears to be in the book only to justify Shaun Walker, Wrox DotNetNuke Series Editor, getting a portion of the royalties, this book is packed with useful information.  From installing DotNetNuke through administering the portals to using DotNetNuke as a development framework, the materials are covered in detail and in suitable depth for the audience.

The audience for this book is not those users or administrators who simply want an out-of-the-box product, and to be honest, the DotNetNuke framework isn’t really intended for that audience either.  The framework is just that, a development framework, aimed at developers.  And for that audience this book shines.  The second half of this book is almost exclusively aimed at developers writing custom modules for the framework and, if you’re going to get much out of this book, there is an assumption that the reader is a reasonably proficient ASP.NET developer.

Much of the development that programmers would do within the DotNetNuke framework hasn’t changed since version 4.x of DotNetNuke, but the limited changes are significant to developers.  This book dives deep into the use of the DotNetNuke core APIs, especially as they apply to module developers.  It also extensively covers the use of the ASP.NET membership functions, including roles and profiles, as well as the additional attributes added by the DotNetNuke framework.  The latest versions of the DotNetNuke framework incorporate ASP.NET 3.5 features and, in addition to the membership and security enhancements in the ASP.NET 3.5 framework, LINQ now plays a prominent role in module development.

The last quarter of the book is a walk through of developing a simple module for the DotNetNuke framework.  While this module could easily be developed in the DotNetNuke 4.x framework version, the walk through does cover changes to the framework found in the new version.  The book finishes with a simple explanation of skinning the DotNetNuke portal, although the explanation is too simplified and reads like it was stripped from the DotNetNuke documentation.

And that’s the beauty of this book and those like it.  DotNetNuke has always had woefully pitiful documentation, rarely updated and released well behind the updates to the framework.  Books like these are often the only documentation available to users of the DotNetNuke framework.  And unfortunately, in a few months much of this book may be out of date as the framework is updated.

Details

Professional DotNetNuke 5: Open Source Web Application Framework for ASP.NET
By Shaun Walker, Brian Scarbeau, Darrell Hardy, Stan Schultes and Ryan Morgan

Published February 2009 by Wrox
ISBN: 978-0-470-43870-1
Paperback, 600 pages

Disclaimer

This review is solely based on the opinions of one, somewhat insignificant, blog.  While we would love to believe that we are the most important influence in your life’s decisions, in reality we probably don’t know what we’re talking about.  So if you rely on this review to purchase, or reject, this book, don’t blame us if you think you made a bad decision.  We’re not threatening to give you a wedgie if you don’t see things our way.

Published in: on July 22, 2009 at 10:29 am Comments (1)

Everyone isn’t Everyone…

Microsoft has made some unfortunate naming blunders in the past — unfortunate in that they have become standards even though they don’t make sense.  One of these is the Windows security group Everyone.  It sure sounds, from the name at least, that this group is composed of every account on the server.  After all, shouldn’t Everyone really mean every one?

Not to Microsoft.  Originally, this security group, along with the account Guest, was pretty useful.  It didn’t include every account, but it did include every account you would normally want to grant access to.  Fortunately with the Guest account, Microsoft saw the error of its ways and just stopped using the account, to the point of disabling it by default, but not to the point of eliminating it entirely.  Not so with the Everyone group.  That little bugger is still around to, well, bug us.

There are significant accounts that don’t belong to the security group Everyone, and really shouldn’t belong to that group.  One in particular causes no end of confusion for ASP.NET developers and aspiring Windows or IIS administrators.  That’s the ASP.NET process account.  By default this account is NT AUTHORITY/NETWORK SERVICE in Windows Server 2003 and Vista (and newer operating systems such as Server 2008 and Windows 7).  And frequently, this account needs access to files/folders through Windows NTFS permissions.

The problem for many developers and other users who aren’t well-versed in Windows security, is that the first indication that this account needs access is a generic “Access Denied” error.  The confused developer, thrust into the role of server manager, grants access to one account after another, resulting in the same error, and out of frustration grants access to the Everyone group.  That still results in the same aggravating error because, unbeknownst to the developer, the account that needs access — the ASP.NET process account — isn’t in that group.  Even though, through an unfortunate choice of names by Microsoft, it really sounds like it should be.

The solution to this is not to add the NETWORK SERVICE account to the Everyone group, or worse, make it a member of the Local Administrators group.  The NETWORK SERVICE account is a restricted account on purpose, and should stay that way.  The solution is to add the necessary file/folder access for the specific account, NETWORK SERVICE, that needs this access.

But we’re not going to go into detail on how to do this.  This blog isn’t the place to teach you Windows NTFS permissions, you can easily find that information elsewhere, and frankly, we just don’t have the room.  While you’re at it, remove the permissions you granted to the Everyone group.  After all, it didn’t work, did it?  Leaving that unwanted access intact is a security hole you don’t want to have to explain after North Korean hackers just downloaded all your clients’ credit card numbers.

FileMon

By the way, there is a great little tool for figuring out what accounts are being denied access to what files.  This is FileMon, from Systernals, now owned by Microsoft.  For full details, see the TechNet page.

Disclaimer

Messing with NTFS permissions can break your server.  If it does, it’s your own fault for foolishly following advice you got over the Internet.  If you aren’t sure of what you’re doing, find a qualified professional to do it for you.  And while you’re at it, stop running with scissors.

Published in: on July 9, 2009 at 9:49 am Leave a Comment

Project to Watch: IIS SEO Toolkit

It’s only the first beta, but the recently-released IIS Search Engine Optimization Toolkitfrom the IIS team at Microsoft is a project that needs watching.  Currently it has only three features, Site Analysis, Robots Exclusions and Sitemaps, all of which can be handled through other means.  But the SEO Toolkit provides an easy, mostly intuitive and extensible interface to handle these functions.

Robots Exclusion, one of the least understood aspects of SEO for many beginners, really isn’t hard.  Notepad on the server can handle your needs, provided you know what needs you have, and the process should only take a few minutes.  Per server.  Per change.  And that’s where this tool becomes useful.  The SEO Toolkit can run against any IIS server, local or remote, and makes changes to the robots.txt file simple for anyone to do.  Yes, you really do need to know why you’re making the changes, but this is a toolkit, not a Wizard.

Sitemaps are also just simple text files, and anyone with Notepad can create and edit one as well.  But Sitemaps have a lot of code to them (alright, it’s just an XML file, but to non-coders that really does look like difficult code…) and are incredibly easy to break by forgetting a bracket.  The toolkit not only makes editing a breeze, but lets you browse through the site graphically and choose the URL for the Sitemap entry.  Frankly, there’s no other sitemap editing or creation tool that’s this easy to use.

But the crowning glory of the SEO Toolkit is its site analysis features.  Sure, there are tools that can do this, but nothing this easy and free.  Not only can you crawl the site, seeing it the way search robots and browsers do, but you get very detailed reports on the site and general guidelines on fixing common SEO problems.  You will receive an analysis of your site that includes links and references within and to each URL, an analysis of keywords on pages and even the routing a robot takes to get to your pages.  While it doesn’t fix your site to make it more friendly to search engines, it does give you the information you need to make the changes, which is 90% of SEO anyway.

Remember, this is just a beta.  That means the feature list can only grow.  Microsoft’s IIS developers have taken to releasing many tools like this, and even major updates to existing features, completely outside the Windows release schedule.  These out-of-band releases, including the SEO Toolkit, can be downloaded at no charge from the IIS support site.  We’ll be watching this toolkit, you go ceck out the others.

Published in: on June 25, 2009 at 9:26 am Leave a Comment

Forcing IE8 to use IE7 Compatibility Mode with IIS Custom Headers

One of the great things about Internet Explorer 8 is that it finally renders, by default, in a standards mode, using web standards instead of Microsoft’s IE tweaks.  It’s also one of the worst things about IE8, for web developers at least.  Developers who have spent countless hours to ensure that their web site renders correctly in all browsers may find that it now renders poorly in IE8.

Fortunately, Microsoft anticipated this and built in a compatibility mode, which allows IE8 to render as if it were IE7 instead.  If a site worked properly in IE7, it will work properly in IE8 running in compatibility mode.  As long as the end user knows enough to change modes of course.  End users often don’t realize what version of a web browser they are using.  And they even more often won’t know how to, or even that you can, change the browser rendering mode.  So it’s up to the developer to ensure they don’t have to.

There are programmatic solutions, meta tags on web pages, code in the web.config and so on, but sometimes it’s just easier to set the entire web site to force IE8 browsers to use IE7 compatibility mode.  You can easily do this with a custom header in IIS.

IIS 7

  1. In IIS7, open IIS Manager, expand the Sites and highlight the site you want to add the custom header to.
  2. In the IIS section of the Web Site Pane, double-click HTTP Response Headers.
  3. When the HTTP Response Headers section opens, click on Add in the Action Pane.
  4. Enter X-UA-Compatible in the Name field.
  5. Enter IE=EmulateIE7 in the Value field.
  6. Click OK to finish, no reboot or IIS restart needed.

IIS 6

  1. In IIS 6, open IIS Manager and right-click the site you want to add the custom header to. 
  2. Choose Properties, then the HTTP Headers tab.
  3. In the Custom HTTP Headers section, click the Add button.
  4. Enter X-UA-Compatible in the Custom header name field.
  5. Enter IE=EmulateIE7 in the Custom header value field.
  6. Click OK until you have exited the Properties dialog, no reboot or IIS restart is needed.

Just remember to remove this custom header from the site when it is finally IE8 compatible.

Disclaimer

As usual, do this at your own risk.  If it doesn’t work, too bad.  You’re on your own to fix it.  If you have changes or suggestions on this, we’d love to see a comment.  You can also find this documented online at http://msdn.microsoft.com/en-us/library/cc817572.aspx, where you’ll also find code to do this in your web.config file.  Thanks to Joe Healy from Microsoft for pointing out the XUA tag at a very opportune time.

Published in: on June 18, 2009 at 11:52 am Comments (2)

Google Custom Search for DotNetNuke

Let’s face it, the default DotNetNuke search module sucks.  It’s confusing to configure, doesn’t do a proper full text search and doesn’t search any files you may have available for download on your site.  There are third-party modules that replace the standard search, but why pay for a search that is still relatively ineffectual?  Why not use the Mac-Daddy of search engines, Google, to provide a free custom search module for your DotNetNuke site?  And did we mention — Free!

Getting Started

The search script in this post relies on the Google Search API.  In order to use this search effectively, you will want to sign up for a free Google search API key. See the Google Code site to get one.  You will use this key in the JavaScript for the search function.

Once you have your key, you will need to add a Text/HTML module (HTML Module in DNN 5…) on the page where you want the search.  This script is designed so that search results appear immediately below the search field, so make sure you use a pane in DotNetNuke that is wide enough to display the results adequately.

The Script

Okay, without any fanfare, here’s the script (Watch for wrapping…):

<script src="http://www.google.com/jsapi?
key=Enter Your Key Text Here"
type="text/javascript"></script>
<script language="Javascript" type="text/javascript">
//  Script based on a blog post at:
//  http://www.eguanasolutions.com/DNN_Blog/EntryID/7.aspx
<!--    google.load('search', '1.0');
function checkKeypress(e)
{
var kC  = (window.event) ? event.keyCode : e.keyCode;
var Esc = (window.event) ? 27 : e.DOM_VK_ESCAPE;
if (kC == Esc) {  event.keyCode=13;  return;  }
if (kC == 13) return false;
return kC;
}

function OnLoad()
{
var searchControl = new google.search.SearchControl();
var drawOptions = new google.search.DrawOptions();
drawOptions.setInput(document.getElementById("gss_input"));
var options = new google.search.SearcherOptions();
options.setExpandMode
  (google.search.SearchControl.EXPAND_MODE_OPEN);
options.setRoot(document.getElementById("gcsResults"));
searchControl.setResultSetSize
  (google.search.Search.SMALL_RESULTSET);
// Set up a site search - searches the web site pages
var siteSearch = new google.search.WebSearch();
// Replace the site root with your own site URL
siteSearch.setSiteRestriction("http://www.foo.bar/");
//  We're only including "aspx" pages from our site.
//  We're specifically excluding "LinkClick" page links
//  (links with "fileticket")
siteSearch.setQueryAddition("+filetype:aspx -fileticket");
siteSearch.setUserDefinedLabel("Web Pages:  ");
searchControl.addSearcher(siteSearch, options);
//  Configure a search of physical files available
//  for download
var fileSearch = new google.search.WebSearch();
//  Replace with your own URL, portal and folder
//  with the files to be searched
fileSearch.setSiteRestriction
  ("http://www.foo.bar/portals/0/Documents");
fileSearch.setQueryAddition("-filetype:aspx");
fileSearch.setUserDefinedLabel("Files:  ");
searchControl.addSearcher(fileSearch, options);
searchControl.draw(null, drawOptions);
}
google.setOnLoadCallback(OnLoad, true);
-->
</script>
<div>
//  Presentation text to appear before the search
//  input field, change it as you wish
<p>To search all of foo.bar for both web pages and
documents, enter a search term below:</p>
<input type="text" value="Search Now" size="80"
onfocus="if (this.value==this.defaultValue)
this.value='';" id="gss_input"
onkeypress="return checkKeypress(event)" />
</div>
<div id="branding">&nbsp;</div>
<div id="gcsResults">&nbsp;</div>

Just change those few things listed in the comments and this is ready to run. If you decide to use this script, either as-is or modified, please leave the comment, crediting the Eguana Solutions blog post, intact. This script was only slightly changed from the original. The post you are reading now is not meant to steal the original blog post.

Disclaimer

As usual, this script is neither supported nor guaranteed to run on your setup. If it works, great. We’re happy for you. If not, too bad. Fix it yourself or don’t use it. Of course, if there’s an obvious error, or even an improvement, we’d love to have a comment on how to change this script.

This post blatantly exploits trademarked terms, please don’t interpret this to mean that any of these entities have given up their trademarks.  If there are any objections to material in this post based on trademark, copyright, offensive language or the foolishness of the author, please feel free to let us know.

Published in: on June 17, 2009 at 10:47 am Comments (4)
Tags: ,