<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1140432460927692102</id><updated>2012-01-18T20:15:10.035-08:00</updated><category term='WYSIWYG tuning'/><category term='mobile'/><category term='indexes'/><category term='release schedule'/><category term='Zac Spitzer'/><category term='requests'/><category term='tools'/><category term='SQL'/><category term='language support'/><category term='web'/><category term='silent updates'/><category term='development'/><category term='knowledge navigator'/><category term='Bromine'/><category term='w3fools'/><category term='fastmovingtarget'/><category term='how to'/><category term='open source'/><category term='quality assurance'/><category term='firefox'/><category term='iphone'/><category term='james bach'/><category term='css'/><category term='favorite'/><category term='AI'/><category term='w3schools'/><category term='natural language processing'/><category term='email'/><category term='load testing'/><category term='performance'/><category term='Apache'/><category term='xhtml'/><category term='PAL'/><category term='web testing'/><category term='ethos'/><category term='java'/><category term='best practices'/><category term='record'/><category term='wordpress'/><category term='preview'/><category term='epistemology'/><category term='Vista winsxs'/><category term='android'/><category term='compatibility'/><category term='html'/><category term='mac'/><category term='newsletter'/><category term='optimization'/><category term='drupal 6'/><category term='simplenews'/><category term='automation'/><category term='Siri'/><category term='w3c'/><category term='module development'/><category term='setup'/><category term='set up'/><category term='proxy'/><category term='javascript'/><category term='context driven'/><category term='Selenium'/><category term='CALO'/><category term='Prism 2'/><category term='help'/><category term='Tim Slavin'/><category term='mobile web apps'/><category term='frameworks'/><category term='nokia'/><category term='ios'/><category term='artificial intelligence'/><category term='buccaneer scholar'/><category term='update'/><category term='database'/><category term='paul irish'/><category term='php'/><category term='robotics'/><category term='tutorial'/><category term='indexing'/><category term='jsfiddle'/><category term='activities'/><category term='mime_email'/><category term='mobile app'/><category term='jakarta'/><category term='jmeter'/><category term='wikipedia'/><category term='Bing'/><category term='futureshock'/><category term='blackberry'/><category term='simplenews_template'/><category term='qa'/><category term='history'/><category term='drupal'/><category term='standards'/><category term='mozilla'/><category term='browser stats'/><category term='machine learning'/><category term='md5'/><category term='fusion'/><category term='fiddler'/><category term='Silverlight'/><title type='text'>Musings of the Dev Minds</title><subtitle type='html'>We know technology.

Innovation in web design, usability, and development.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1448687296356411855</id><published>2012-01-18T15:40:00.000-08:00</published><updated>2012-01-18T15:46:02.047-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='module development'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='Tim Slavin'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal 6'/><category scheme='http://www.blogger.com/atom/ns#' term='simplenews_template'/><category scheme='http://www.blogger.com/atom/ns#' term='WYSIWYG tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='simplenews'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='newsletter'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='mime_email'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><category scheme='http://www.blogger.com/atom/ns#' term='preview'/><title type='text'>Using the Simplenews preview instead of Node preview</title><content type='html'>Nothing like a snowy day to get you pumped to write a blog entry. Today, I am going to write about a thing we have noticed about &lt;a href="http://drupal.org/project/simplenews" target="_blank"&gt;Simplenews&lt;/a&gt; for Drupal 6.&lt;br /&gt;&lt;br /&gt;Firstly, a bit of background: &lt;a href="http://drupal.org/project/simplenews" target="_blank"&gt;Simplenews&lt;/a&gt;&amp;nbsp;is a module that allows for the management of newsletters and distribution lists. Used in conjunction &lt;a href="http://drupal.org/project/mimemail" target="_blank"&gt;Mime Mail&lt;/a&gt;,&amp;nbsp;&lt;a href="http://drupal.org/project/simplenews_template" target="_blank"&gt;Simplenews Template&lt;/a&gt;, and &lt;a href="http://drupal.org/project/node_clone" target="_blank"&gt;Node Clone&lt;/a&gt;, &amp;nbsp;you can build a module that not only manages newsletters and distribution lists, but also manages templates you define, send rich HTML emails, and clone previously sent issues.&lt;br /&gt;&lt;br /&gt;All told, this is a pretty solid set up. Testing it was made much much much easier with Node Clone. But one thing that separates the men from the boys in the world of WYSIWYG email sites is how true to form the WYSIWYG is. As any web-developer will tell you, WYSIWYG stands for 'What you see is what you get" ... but not out of the box. So why not say WYSI'ntWYG? Because its just to difficult to pronounce.&lt;br /&gt;&lt;br /&gt;Tuning a WYSIWG is an arduously iterative process of trial and error, especially in the case of email applications (because you have to send the mailer each time... which means you might even have to wait for a cron job to run).&lt;br /&gt;&lt;br /&gt;The bug that really stood out to me was the following: the user can be afforded two conflicting previews. One is the Node preview, the other is the Simplenews preview. They looked different: the CSS specified in the Simplenews Template didn't show up in the Node preview.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Lesson learned: Remove the ability to do a node preview when using this combination of modules. It's just confusing.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;As we got deeper into building functionality around Simplenews and Simplenews Template, I started wondering if there were other solutions out there. Sure enough, there are. I have not had the time to explore them but here are some ideas:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Setup recommended by the &lt;a href="http://drupal.org/project/htmlmail#requirements" target="_blank"&gt;HTML Mail project&lt;/a&gt;&amp;nbsp;- &lt;i&gt;I like this project because it seems like they have stable versions up for Drupal Core 6, 7, and 8! The recommended releases of SimpleNews (at the time of writing this article) are&amp;nbsp;&lt;a href="http://drupal.org/node/1382344" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0678be; font-family: 'Lucida Grande', 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;7.x-1.0-alpha2&lt;/a&gt;&amp;nbsp;(&lt;span style="background-color: #ddffdd; color: #222222; font-family: 'Lucida Grande', 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;2011-Dec-24)&lt;/span&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://drupal.org/node/1397206" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0678be; font-family: 'Lucida Grande', 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;6.x-2.0-alpha3&lt;/a&gt;&amp;nbsp;(&lt;span style="background-color: #ddffdd; color: #222222; font-family: 'Lucida Grande', 'DejaVu Sans', 'Bitstream Vera Sans', Verdana, Arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;2012-Jan-07&lt;/span&gt;).&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Guidelines as recommended by&amp;nbsp;&lt;a href="http://www.reachcustomersonline.com/2011/12/21/09.27.00/" target="_blank"&gt;Tim Slavin's post from 12/21/2011 entitled&amp;nbsp;"How To Code HTML Email Newsletters"&lt;/a&gt;. &lt;i&gt;Very thorough overview of the various tools people use to look at emails, common bugs and fixes, and available resources &amp;amp; standards documents.&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1448687296356411855?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1448687296356411855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2012/01/using-simplenews-preview-instead-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1448687296356411855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1448687296356411855'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2012/01/using-simplenews-preview-instead-of.html' title='Using the Simplenews preview instead of Node preview'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-193111776682472685</id><published>2011-12-23T15:50:00.000-08:00</published><updated>2011-12-23T16:29:00.624-08:00</updated><title type='text'>The Benefits of WURFL</title><content type='html'>When making a website you can be pretty sure that most browsers are going to be reading the same language (HTML and Javascript).  You can also assume that you will only need to test in a reasonable amount of browsers for testing.  When making a mobile website on the other hand there is a lot of fragmentation of mobile device technology.  Some devices may be expecting HTML, but others may be better for WML, HDML, or XHTML mobile profile.  Not only that but different devices will interact differently with client side scripting, have different screen sizes, and handle only certain image formats.  How you render an object (like a text box) may look very different depending on what browser you use.  Only if there was something that made it work on all known devices...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WURFL!   WURFL (Wireless Universal Resource FiLe) is a Device Description Repository.  This means it holds data about the capabilities about many mobile devices.  It then uses that data to allow the developer to use abstractions of page elements that will be converted to the specific markup needed for the user's device.  The end results being everyone viewing the website mostly sees the same content the way, you the developer, want to show it.  In addition to this the developer can have the website display certain content depending on the device (or type of device) the user is using.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is plenty of documentation on how to learn this technology.  Check it out...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://mobiforge.com/developing/story/introduction-wurfl"&gt;Introduction to WURFL&lt;/a&gt; - MobiForge created a nice easy introduction to how to use WURFL at the most basic level &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wurfl.sourceforge.net/nphp/"&gt;WURFL PHP Guide&lt;/a&gt; - How to use the WURFL PHP framework&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wurfl.sourceforge.net/dotNet/"&gt;WURFL .NET Guild&lt;/a&gt; - How to use the WURFL ASP.NET framework&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wurfl.sourceforge.net/njava/"&gt;WURFL Java Guide&lt;/a&gt; -  How to use the WURFL Java framework&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wurfl.sourceforge.net/help_doc.php"&gt;WURFL Devices and and Capabilities Document&lt;/a&gt; - For each device WURFL holds over 500 capabilities broken up in to 30 group.  This documents explains them all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lets us know your experiences in WURFL in the comments.  Also, do you have any other documentation that you have found useful?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-193111776682472685?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/193111776682472685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/benefits-of-wurfl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/193111776682472685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/193111776682472685'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/benefits-of-wurfl.html' title='The Benefits of WURFL'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1674998305455251508</id><published>2011-12-20T12:48:00.000-08:00</published><updated>2011-12-20T12:51:09.476-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethos'/><category scheme='http://www.blogger.com/atom/ns#' term='qa'/><category scheme='http://www.blogger.com/atom/ns#' term='james bach'/><category scheme='http://www.blogger.com/atom/ns#' term='buccaneer scholar'/><category scheme='http://www.blogger.com/atom/ns#' term='epistemology'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='quality assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='context driven'/><title type='text'>QA Ruminations</title><content type='html'>I am not just an engineer, nor am I just a tester, nor just a checker. I am the guy that ensures that we can confidently affirm that the web-applications we make at BIS measure up to a standard of excellence. Not 'the standard of excellence' - but a standard of excellence that is unique to each project.&amp;nbsp;Each project offers our team a new set of circumstances to contextualize the development efforts we put forth. It is my job to suss out each new context, and build a way of diagnosing the extent to which the web application or site we make is adequately prepared to inhabit that context it was built for.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;This is possibly the most interesting job on the planet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Below is a video I watched this weekend. Its a 99 minute lecture from the eminent buccaneer scholar &amp;amp; software testing guru &lt;a href="http://www.satisfice.com/" target="_blank"&gt;James Bach&lt;/a&gt;. It is marvelous. Say what you will about his qualms with the ISTQB - this guy is no charlatan. I see great value in his work. His testing methodologies are thought provoking and original, and his style of team-play is awesome.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/ILkT_HV9DVU/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ILkT_HV9DVU&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/ILkT_HV9DVU&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1674998305455251508?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1674998305455251508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/qa-ruminations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1674998305455251508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1674998305455251508'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/qa-ruminations.html' title='QA Ruminations'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-563474220215478517</id><published>2011-12-16T13:31:00.000-08:00</published><updated>2011-12-16T14:14:06.544-08:00</updated><title type='text'>SQL Reporting Services: Visibility Expressions</title><content type='html'>A nice feature about SQL Reporting Services is that it allows you to display or hide content depending on the data that you are displaying on the report.  For example, let's say you are displaying a report and each data item can have a comment associated with it (which is retrieved from a database), but you only want to show comments that don't have an empty string. &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To make this happen perform the following steps in the reports layout mode:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) On the control you wish to set the visibility, right click on it and select "Properties".&lt;/div&gt;&lt;div&gt;2) A dialog box will come up.  Click on the Visibility tab.&lt;/div&gt;&lt;div&gt;3) On the "Initial Visibility" radio button list select "Expression".&lt;/div&gt;&lt;div&gt;4) In the textbox type in... =iif(Fields!Comments.Value &amp;lt;&amp;gt; "", false, true)&lt;/div&gt;&lt;div&gt;5) Press "OK".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above expression basically says if the Field "Comments" is not an empty string then make the control visible, otherwise hide it.  You can use the "Fx" button next to the expression textbox to help you create an expression using the expression tool to help you make your own expression if your trying to do something different.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can also set a control's visibility based on another control being visible.  Let's say I wanted to show another control only if the comments was showing.   To do this go in to the visibility properties and select the "Visibility can be toggled by another report item" check box.  Then simply select the control you wish to link it to in the "Report Item" drop down list.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please post in the comments if you see any issues with this solution or have any questions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-563474220215478517?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/563474220215478517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/sql-reporting-services-visibility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/563474220215478517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/563474220215478517'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/sql-reporting-services-visibility.html' title='SQL Reporting Services: Visibility Expressions'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1943278951279408322</id><published>2011-12-13T16:37:00.000-08:00</published><updated>2011-12-13T17:52:15.865-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile web apps'/><title type='text'>Drupal Web Apps</title><content type='html'>I found some great info on drupal web applications to share here.&lt;br /&gt;&lt;br /&gt;Flash-based mobile apps can take advantage of the lightning fast &lt;a href="http://amfphp.sourceforge.net/" target="_blank"&gt;AMFPHP data interface&lt;/a&gt; for talking to a Drupal site.&lt;br /&gt;&lt;br /&gt;Drupal Tools for making mobile web apps:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Browser detection&lt;/strong&gt; &lt;/div&gt; &lt;div&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/wurfl" target="_blank"&gt;WURFL&lt;/a&gt; - Detects mobile device capabilities.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/browscap" target="_blank"&gt;Browscap&lt;/a&gt; - Detects browser type.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/mobileplugin" target="_blank"&gt;Mobile Plugin&lt;/a&gt; - Device detection and image scaling.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/mobile_tools" target="_blank"&gt;Mobile Tools&lt;/a&gt; - Browser detection, theme switching based on device type, redirection to mobile site, and other features.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt; &lt;div&gt;&lt;strong&gt;Theming&lt;/strong&gt;&lt;/div&gt; &lt;div&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/mobile" target="_blank"&gt;Mobile&lt;/a&gt; - Clean theme that can be used as a custom theme base.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/mobile_jquery" target="_blank"&gt;Mobile jQuery Theme&lt;/a&gt; - Utilizes jQuery Mobile framework for theming.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/nokia_mobile" target="_blank"&gt;Nokia Mobile Theme&lt;/a&gt;  - Contrary to its name, this theme is intended to work on all mobile  devices. Its design is based on the official Nokia template.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/mobile_garland" target="_blank"&gt;mobile_garland&lt;/a&gt; - A mobile version of the Garland theme.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/adaptivetheme_mobile" target="_blank"&gt;Adaptivetheme Mobile&lt;/a&gt; - A mobile subtheme for the HTML5 &lt;a href="http://drupal.org/project/adaptivetheme" target="_blank"&gt;AdaptiveTheme&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/fusion_mobile" target="_blank"&gt;Fusion Mobile&lt;/a&gt; - A &lt;a href="http://drupal.org/project/fusion" target="_blank"&gt;Fusion Core&lt;/a&gt; subtheme targeted for mobile.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;The native app and web app approach to using Drupal for mobile. Here's the pros and cons: &lt;table style="border: 1px solid black;" 1px="" solid="" border="1"&gt;&lt;tbody&gt;&lt;tr class="odd"&gt; &lt;th colspan="2"&gt;Native Mobile App&lt;/th&gt; &lt;th colspan="2"&gt;Mobile Web App&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;em&gt;Pros&lt;/em&gt;&lt;/td&gt; &lt;td&gt;&lt;em&gt;Cons&lt;/em&gt;&lt;/td&gt; &lt;td&gt;&lt;em&gt;Pros&lt;/em&gt;&lt;/td&gt; &lt;td&gt;&lt;em&gt;Cons&lt;/em&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr class="odd" valign="top"&gt; &lt;td&gt;Take advantage of mobile OS features such touch screen slide and device tilt events&lt;/td&gt; &lt;td&gt;Only available at app marketplaces&lt;/td&gt; &lt;td&gt;Reduced development complexity&lt;/td&gt; &lt;td&gt;Features are limited to what traditional web browsers offer&lt;/td&gt; &lt;/tr&gt; &lt;tr valign="top"&gt; &lt;td&gt;App still functions when device is offline&lt;/td&gt; &lt;td&gt;More effort needed to deploy to multiple devices&lt;/td&gt; &lt;td&gt;Majority of deployment involves configuring a mobile theme and a few key modules&lt;/td&gt; &lt;td&gt;Not accessible if the device is offline or out of wireless range&lt;/td&gt; &lt;/tr&gt; &lt;tr class="odd" valign="top"&gt; &lt;td&gt;Better performance - syncing Drupal data with app doesn't have to be done real-time&lt;/td&gt; &lt;td&gt;Mobile development platforms often don't deliver 100% of advanced  features without having to modify native code (Objective C, Java, etc.)&lt;/td&gt; &lt;td&gt;Working knowledge of Drupal/HTML/CSS only&lt;/td&gt; &lt;td&gt;Web browsers differ considerably across devices, requiring signficant browser testing&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;While mobile web apps can only take advantage of browser-specific  events and features, a few app development frameworks aim to make web  apps function more like native apps. Blackberry's &lt;a href="http://us.blackberry.com/developers/browserdev/opensource.jsp" target="_blank"&gt;WebWorks platform&lt;/a&gt; offers developers a way to tap into more advanced mobile browser features specific to the Blackberry OS. &lt;a href="http://www.sencha.com/" target="_blank"&gt;Sencha Touch&lt;/a&gt; is the first-of-its-kind HTML5 framework that claims to make mobile web apps function more like native apps.&lt;/p&gt;&lt;p&gt;The &lt;a href="http://mobify.me/mobile-web-design/mobify-studio/" target="_blank"&gt;Mobify Studio&lt;/a&gt;  workflow is slick and intuitive, geared toward the average web  developer. A user selects content areas from the web site that's being  ported to mobile through a wizard-type interface. Mobify then outputs  HTML and CSS that can be edited on-screen, offering custom template  creation.&lt;/p&gt;&lt;p&gt;&lt;em&gt;More mobile Drupal resources&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mobiledrupal.com/" title="http://www.mobiledrupal.com"&gt;http://www.mobiledrupal.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.drupal.org/mobile" title="http://groups.drupal.org/mobile"&gt;http://groups.drupal.org/mobile&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Anyone know of any more Drupal mobile web app resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1943278951279408322?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1943278951279408322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/drupal-web-apps.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1943278951279408322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1943278951279408322'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/drupal-web-apps.html' title='Drupal Web Apps'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/12656444922121980891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-NFu_uaEGEYM/TpzA5mRUfAI/AAAAAAAAAAQ/9yW3USQWdSM/s220/lyle.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5898072582567176740</id><published>2011-12-13T14:42:00.000-08:00</published><updated>2011-12-13T21:01:06.184-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='load testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Zac Spitzer'/><category scheme='http://www.blogger.com/atom/ns#' term='fiddler'/><category scheme='http://www.blogger.com/atom/ns#' term='requests'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter'/><category scheme='http://www.blogger.com/atom/ns#' term='set up'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='md5'/><category scheme='http://www.blogger.com/atom/ns#' term='record'/><category scheme='http://www.blogger.com/atom/ns#' term='fastmovingtarget'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='jakarta'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Quick JMeter Setup on Mac</title><content type='html'>I found an awesome article by &lt;a href="http://zacster.blogspot.com/" target="_blank"&gt;Zac Spitzer / fastmovingtarget&lt;/a&gt;&amp;nbsp;on &lt;a href="http://zacster.blogspot.com/2008/03/quick-howto-to-setup-jmeter.html" target="_blank"&gt;how to setup JMeter on Windows&lt;/a&gt;. This post explains how to do so on Mac OSX.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;In summary, this initial setup will create a way for you to record all of the requests that get made when using your web-application. From here, you can save certain thread sets and run tests where multiple instances of these thread-sets are sent to your web app.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My plan is to use this to record what Selenium does, and then use that for load testing. If I use Selenium IDE to make the aforementioned Selenium routines, the redundancy is hilarious. But in all seriousness, I am really excited to pair the two of them together. I am a bit worried though about whether JMeter can keep up with Selenium...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I am wondering is 'What benefit is there to using JMeter over Fiddler?'... probably has to do with being able to integrate JUnit tests etc more easily... but I don't know. Any comments?&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First: Installation&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Download &lt;a href="http://jmeter.apache.org/download_jmeter.cgi" target="_blank"&gt;JMeter&lt;/a&gt;. You may download the source code and build it yourself, or you may download the binaries. I just downloaded the binaries.&lt;/li&gt;&lt;li&gt;While on the JMeter Download page, follow the instructions provided to verify the md5 (Mac OSX Snow Leopard Server does not come with &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;pgp&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gpg&lt;/span&gt;, or &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;pgpk&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.)&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;In Terminal.app&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;md5&amp;nbsp;jakarta-jmeter-2.5.1.zip&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Click 'md5' next to the version of JMeter you downloaded. There will be a 20 character value shown, and it should match what you got in the the terminal. A quick way to check this is to &lt;span class="Apple-style-span" style="font-family: inherit;"&gt;just use&amp;nbsp;⌘+F in your browser and copy in your results from the terminal.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;In your Finder, uncompress&amp;nbsp;jakarta-jmeter-2.5.1, and drill down into the directory called &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;'bin'&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Open&amp;nbsp;ApacheJMeter.jar&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;If you prefer the Terminal, use the following:&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sh ./jakarta-jmeter-2.5.1/bin/jmeter.sh&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div&gt;Setup &amp;amp; Tuning-in to your web-browser&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Add (via right click) a Thread group to the Test Plan &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Add a Non Test Element &amp;gt; HTTP Proxy Server to the Workbench &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;2&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Open the HTTP Proxy Server Page and change the port if required &lt;span class="Apple-style-span" style="font-family: inherit; font-size: xx-small;"&gt;3&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Set the Target Controller to Test Plan &amp;gt; Thread Group on the same page &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;4&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Configure your browser to use the Proxy Server (it's localhost) &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;5&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Zac Spitzer recommends Firefox. This is probably the case because you can set up proxying internally to&amp;nbsp;Firefox&amp;nbsp;without messing around with your system settings. If you try to go 'Under the Hood' in Chrome or into Safari's 'Change Settings...' dialog, it will kick you right into your system preferences. Please note that if your workplace has a special proxy configuration already, or any other network settings that might interfere with setting this up, don't fight it: submit a ticket to IT.&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;⌘+,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;In 'Advanced', go to your connection settings and set up your localhost as a proxy server. You can assign different ports to different protocols.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;Press Start at the bottom of the page &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;6&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Now, JMeter will record all the HTTP requests your browser makes, so make sure you have closed all the other tabs you have open. &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to reset your browser proxy settings!&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp;8&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can delete any requests you don't want from the list at any time. &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;9&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remember to read the &lt;a href="http://jakarta.apache.org/jmeter/usermanual/index.html"&gt;documentation&lt;/a&gt; and be careful! Make sure you know what servers will be affected by your testing, and don't jump to simple conclusions, 3-tier web apps are complex beasts. &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;1&lt;/span&gt; Zac Spitzer, http://zacster.blogspot.com/2008/03/quick-howto-to-setup-jmeter.html&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;2&lt;/span&gt; ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;3&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;4&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;5&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;6&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;7&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;8&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;9&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;10&amp;nbsp;&lt;/span&gt;ibid. Spitzer, Zac.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5898072582567176740?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5898072582567176740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/quick-jmeter-setup-on-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5898072582567176740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5898072582567176740'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/quick-jmeter-setup-on-mac.html' title='Quick JMeter Setup on Mac'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-34863912794401693</id><published>2011-12-09T15:06:00.000-08:00</published><updated>2011-12-09T15:38:55.787-08:00</updated><title type='text'>How To Make MaxLength Work In An ASP.NET Multi-line Textbox</title><content type='html'>You may have noticed that when you set the MaxLength property on a ASP.NET multi-line TextBox the control won't limit the number of character's that can be placed in the box.  This feature works just fine when the box is a single-line TextBox but as soon as you make it multi-line you can kiss that feature goodbye.  Fortunately, there is a way to fix this via Javascript.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To do this I created my own class that extended the TextBox class.   I called my class "AdvancedTextBox".  First I made a method within my class that will create a specific JavaScript string...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;private string CreateJavaScript()&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;{&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;string javaScript = "&amp;lt;script type='text/javascript'&amp;gt;";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "function checkLength(e, oObject, maxLength){";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "if (oObject.value.length &amp;lt; maxLength)";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "return true;";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "else{";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "var keyID = (window.event) ? event.keyCode : e.keyCode;";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "if ((keyID&amp;gt;=37 &amp;amp;&amp;amp; keyID&amp;lt;=40) || (keyID==8) || (keyID==46)){";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "if(window.event)";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "e.returnValue = true;}";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "else{";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "if(window.event)";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "e.returnValue = false;";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;javaScript += "else e.preventDefault();}}}&amp;lt;/script&amp;gt;";&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;return javaScript;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What the javascript does is read the key pressed by the user.   It will then prevent the user from typing anything in the text box if the user reaches the limit placed in the "maxLength" property.  The "oObject" property is the textbox.  The "e" property is the event.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we need the TextBox to call this JavaScript method anytime a key is pressed when typing in the TextBox.  Add the following code to the OnPreRender event of your page...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;this.Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "AdvancedTextBoxScript", CreateJavaScript());&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;this.Attributes.Add("onkeydown", "javascript:checkLength(event, this, " + this.MaxLength + ");");&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There you go!  The max length property will now work with your TextBox if you make it multi-line.  The only issue you may have is that if the user types really really fast (like mashing keys).  The JavaScipt will slow down the input from being placed in the box.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you find any issues or have any questions please feel free to post in the comments.  Also, I would appreciate any criticism if you have found a better way to do this.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-34863912794401693?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/34863912794401693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/how-to-make-maxlength-work-in-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/34863912794401693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/34863912794401693'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/how-to-make-maxlength-work-in-aspnet.html' title='How To Make MaxLength Work In An ASP.NET Multi-line Textbox'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-6122471575185905154</id><published>2011-12-02T14:00:00.000-08:00</published><updated>2011-12-02T14:13:32.445-08:00</updated><title type='text'>Tools For Building Your Mobile Site</title><content type='html'>&lt;div&gt;Your not alone in making your mobile website.  There are a lot of excellent tools out there to make your life easier.  Over the years many good APIs have come out which will help make you more efficient as a developer and allow you to make a high performing mobile site for your users. Here are some API's you should check out...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;jQuery Mobile&lt;/b&gt; (&lt;a href="http://jquerymobile.com/"&gt;http://jquerymobile.com/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Touch-optimized HTML-5 based jQuery Web framework&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Sencha Touch&lt;/b&gt; (&lt;a href="http://www.sencha.com/products/touch"&gt;http://www.sencha.com/products/touch&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Mobile Ext JS framework.  Instead of enhancing preexisting HTML it creates its own DOM based objects.  For developers that like to technologies like Java and Flex will like how this how the development feels with this framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;jQTouch&lt;/b&gt; (&lt;a href="http://jqtouch.com/"&gt;http://jqtouch.com/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Well documented jQuery plugin for mobile web developement for iPhone and Android.  Attempts to emulate the iPhone experience with mobile website.  Be warned that transitions can be look jumpy and have delays if your not careful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The M Project&lt;/b&gt; (&lt;a href="http://www.the-m-project.net/"&gt;http://www.the-m-project.net/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;HTML5 MVC JavaScript frameworks for cross-platform mobile web applications. Comes with Expresso, a build in tool that is based on Node.JS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;52 Framework&lt;/b&gt; (&lt;a href="http://www.52framework.com/"&gt;http://www.52framework.com/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Framework utilizing HTML5, CSS3 and JavaScript.  It’s a full featured collection that allows the developer to easily add HTML5 video, rounded corners to panels, shadows, and whatnot. Examples are readily available when downloaded.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, here is check out this free designer to help you get started...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;DHTMLX Touch Visual Designer&lt;/b&gt; (&lt;a href="http://www.dhtmlx.com/touch/designer/"&gt;http://www.dhtmlx.com/touch/designer/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Web based designer with an easy to use drag and drop interface to add controls.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And one more thing, this tool may be useful if you plan on making your website in to a mobile application...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Titanium Mobile&lt;/b&gt; (&lt;a href="http://www.appcelerator.com/products/titanium-mobile-application-development/"&gt;http://www.appcelerator.com/products/titanium-mobile-application-development/&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;Tool that can be used to transfer your awesome JavaScript based website to the code needed for an application on the iPhone (Objective-C) or Android (Java).  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope this helps.  Please post in the comment any other tools you use and how they have been useful for you.  Also, if you have any comments or complaints about the items listed above please let us know.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-6122471575185905154?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/6122471575185905154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/12/tools-for-building-your-mobile-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6122471575185905154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6122471575185905154'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/12/tools-for-building-your-mobile-site.html' title='Tools For Building Your Mobile Site'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-105829837324440080</id><published>2011-11-29T14:41:00.001-08:00</published><updated>2011-11-29T15:51:57.798-08:00</updated><title type='text'>XCode 4 is not available for Snow Leopard... unless you fork over some cash</title><content type='html'>&amp;nbsp; I think that one of the most infuriating things about QA is the cost factor. It has been said many times that 'QA is company overhead' because it's never a sure bet that a quality assurance engineer will find any bugs, and is almost certain that they will never develop something that the company can profit on. But additionally, QA requires umpteen sandbox environments, and that gets expensive too. I really don't like being an expense.&lt;br /&gt;&amp;nbsp; I recently ran into this problem when I was setting up my iOS environment. After hunting around endlessly for a version of XCode that was compatible with Snow Leopard Server, installing and uninstalling it 3 times, and finally getting the whole darn thing up and running, I found that 'iOS Simulator' does not come with a version of iOS5. According to &lt;a href="http://mobile.tutsplus.com/tutorials/mobile-web-apps/safari-5_html5/" target="_blank"&gt;this post&lt;/a&gt;&amp;nbsp;by Mark Hammonds of &lt;i&gt;mobile.tutsplus&lt;/i&gt;, there has not been nearly as much documentation of the change between Safari 5.01 and Safari 5.0 as there has been in previous releases of iOS.&lt;br /&gt;&amp;nbsp; So, the choice seems to be: buy OSX Lion ($40) so as to get XCode 4 and the iOS5 emulator, or, buy an ADC license ($100) so you can get XCode 4 for Snow Leopard. Either way, I lose money. And in the cheaper option, I lose an entire OS &amp;amp; I have the fun new challenge of figuring out whether the new window UI and fullscreen UI of OSX Lion breaks site layouts (as is the case with IE7's omnipresent vertical scrollbar&amp;nbsp;debacle).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XUt29xs4U9w/TtVugYbIGCI/AAAAAAAAAC0/WvXa9SbLrcA/s1600/Apple-money.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XUt29xs4U9w/TtVugYbIGCI/AAAAAAAAAC0/WvXa9SbLrcA/s1600/Apple-money.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-105829837324440080?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/105829837324440080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/xcode-4-is-not-available-for-snow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/105829837324440080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/105829837324440080'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/xcode-4-is-not-available-for-snow.html' title='XCode 4 is not available for Snow Leopard... unless you fork over some cash'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-XUt29xs4U9w/TtVugYbIGCI/AAAAAAAAAC0/WvXa9SbLrcA/s72-c/Apple-money.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-7906133605120228905</id><published>2011-11-23T08:47:00.000-08:00</published><updated>2011-11-28T15:25:13.775-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='w3c'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Serving up XHTML</title><content type='html'>&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: arial;"&gt;It might seem OK to be serving up the same MIME type on every page of a site, but that can hurt in some cases. For most websites, authoring in HTML 4.01 is perfectly sufficient. Most of the features available in XHTML are available in good old HTML. However, some sites may wish to take advantage of the extensibility of XML, so delivering in XHTML with the correct MIME may be important.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The following table shows the recommended MIME types for serving XHTML documents:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="2" cellspacing="0" style="height: 296px; width: 681px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Media Type&lt;/th&gt;&lt;th&gt;text/html&lt;/th&gt;&lt;th&gt;application/xhtml+xml&lt;/th&gt;&lt;th&gt;application/xml&lt;/th&gt;&lt;th&gt;text/xml&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;HTML 4&lt;/th&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MUST NOT&lt;/td&gt;&lt;td&gt;MUST NOT&lt;/td&gt;&lt;td&gt;MUST NOT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;XHTML 1.0 (HTML Compatible)&lt;/th&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;XHTML 1.0 (other)&lt;/th&gt;&lt;td&gt;SHOULD NOT&lt;/td&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;XHTML Basic&lt;/th&gt;&lt;td&gt;SHOULD NOT&lt;/td&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;XHTML 1.1&lt;/th&gt;&lt;td&gt;SHOULD NOT&lt;/td&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;XHTML + MathML&lt;/th&gt;&lt;td&gt;SHOULD NOT&lt;/td&gt;&lt;td&gt;SHOULD&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;td&gt;MAY&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So given the above information web pages can be served in one of two ways:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;As XHTML with a MIME type of application/xhtml+xml to those browsers and other user agents with the proper support&lt;/li&gt;&lt;li&gt;As HTML with a MIME type of text/html to all other user agents, and those agents that indicate a preference for that type&lt;/li&gt;&lt;/ol&gt;By using PHP to redefine a document's header, it can be served in the appropriate manner. Any changes to the header of a document must come before anything else. By including external PHP in the first line of each document in a website, it will only be necessary to create the new header once. Changes can easily be made to accommodate new scenarios. The external PHP looks like this:&lt;br /&gt;&lt;pre style="overflow: auto;" xmlns="http://www.w3.org/1999/xhtml"&gt;&amp;lt;?php&lt;br /&gt;$charset = "iso-8859-1";&lt;br /&gt;$mime = "text/html";&lt;br /&gt;function fix_code($buffer) {&lt;br /&gt;return (preg_replace("!\s*/&amp;gt;!", "&amp;gt;", $buffer));&lt;br /&gt;}&lt;br /&gt;if(stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {&lt;br /&gt;    if(preg_match("/application\/xhtml\+xml;q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {&lt;br /&gt;     $xhtml_q = $matches[1];&lt;br /&gt;            if(preg_match("/text\/html;q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {&lt;br /&gt;             $html_q = $matches[1];&lt;br /&gt;                    if((float)$xhtml_q &amp;gt;= (float)$html_q) {&lt;br /&gt;                    $mime = "application/xhtml+xml";&lt;br /&gt; }&lt;br /&gt;            }&lt;br /&gt;    } else {&lt;br /&gt;        $mime = "application/xhtml+xml";&lt;br /&gt;            }&lt;br /&gt;}&lt;br /&gt;if($mime == "application/xhtml+xml") {&lt;br /&gt;    $prolog_type = "&amp;lt;?xml version=\"1.0\" encoding=\"$charset\" ?&amp;gt;\n&amp;lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"&amp;gt;\n&amp;lt;html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"&amp;gt;\n";&lt;br /&gt;} else {&lt;br /&gt;    ob_start("fix_code");&lt;br /&gt;    $prolog_type = "&amp;lt;!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"&amp;gt;\n&amp;lt;html lang=\"en\"&amp;gt;\n";&lt;br /&gt;}&lt;br /&gt;header("Content-Type: $mime;charset=$charset");&lt;br /&gt;header("Vary: Accept");&lt;br /&gt;print $prolog_type;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;If $mime remains set to "text/html", the $fix_code function is called within an ob_start() function. This has the effect of holding the entire page in a buffer while the trailing forward slashes are removed from the code. The buffer flushes automatically when the page has finished being processed.&lt;br /&gt;This has the effect of replacing instances of " /&amp;gt;"  with simply "&amp;gt;".&lt;br /&gt;&lt;br /&gt;The above PHP can solve the problem of serving the wrong MIME type of a web site page. Just make sure this code or something like it is included at the beginning of each web page before any headers are sent.&lt;br /&gt;&lt;br /&gt;In the case of using this in the Drupal environment this type of script can be used in the page.tpl.php file or settings.php.&lt;br /&gt;&lt;br /&gt;I can think of an improvement to the above code. Possible also make real time adjustments for the language and text directions based on the user agent.&lt;br /&gt;&lt;br /&gt;ref: &lt;a href="http://keystonewebsites.com/articles/mime_type.php"&gt;Serving up XHTML with the correct MIME type&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-7906133605120228905?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/7906133605120228905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/serving-up-xhtml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7906133605120228905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7906133605120228905'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/serving-up-xhtml.html' title='Serving up XHTML'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/12656444922121980891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-NFu_uaEGEYM/TpzA5mRUfAI/AAAAAAAAAAQ/9yW3USQWdSM/s220/lyle.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5973622802612059461</id><published>2011-11-22T17:41:00.001-08:00</published><updated>2011-11-22T18:33:59.628-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='best practices'/><category scheme='http://www.blogger.com/atom/ns#' term='w3fools'/><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='w3schools'/><category scheme='http://www.blogger.com/atom/ns#' term='browser stats'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='paul irish'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>W3Fools against W3Schools: Not a foolish position</title><content type='html'>&lt;span class="Apple-style-span" style="color: #444444;"&gt;When I was a fledgling web-developer, I spent a great deal of time asking Google to tell me where to learn about everything HTML and CSS. The ubiquitous 'W3Schools' became a familiar site. It made it into the Most Often Visited list in my browsers (after &lt;a href="http://facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt; and &lt;a href="http://slipsum.com/" target="_blank"&gt;Slipsum&lt;/a&gt;). Notice I didn't link to W3Schools...&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;However, I ran across &lt;a href="http://www.w3fools.com/" target="_blank"&gt;W3Fools&lt;/a&gt;&amp;nbsp;while I was reading &lt;a href="http://www.paulirish.com/" target="_blank"&gt;Paul Irish's&lt;/a&gt; blog&amp;nbsp;entry about the &lt;a href="http://paulirish.com/2011/browser-market-pollution-iex-is-the-new-ie6/" target="_blank"&gt;ominous threat&lt;/a&gt; that IE's yearly release schedule poses for web development (particularly the QA department). I read through this beautiful site's &lt;u&gt;&lt;b&gt;scathing critiques of W3Schools&lt;/b&gt;&lt;/u&gt; and was forever changed.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;For future reference here (quoted from&amp;nbsp;&lt;a href="http://www.w3fools.com/" target="_blank"&gt;w3fools.com&lt;/a&gt;) is what&amp;nbsp;&lt;u&gt;&lt;i&gt;should be done:&lt;/i&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 id="what-should-be-done" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #8d2c0c; font: inherit; line-height: 1; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-shadow: rgb(47, 14, 4) 1px 1px, rgb(47, 14, 4) 2px 2px; text-transform: uppercase; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: large;"&gt;&lt;a href="http://w3fools.com/#what-should-be-done" target="_blank"&gt;WHAT SHOULD BE DONE&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ol style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; margin-bottom: 0px; margin-left: 0em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; font: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;W3Schools&lt;/strong&gt;&amp;nbsp;should consider&amp;nbsp;&lt;abbr style="border-bottom-color: initial; border-bottom-style: dotted; border-bottom-width: 1px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; cursor: help; font: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" title="make the site a wiki. Or.. put it all in public source control, like on Github."&gt;wikifying&lt;/abbr&gt;&amp;nbsp;their content so the community could self-correct and keep the information up-to-date. Today, they do not even allow you to submit corrections on a page. They should.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #444444; line-height: 24px;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; font: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;You&lt;/strong&gt;&amp;nbsp;should learn from (and recommend) these more reputable sources:&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;ul style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; margin-bottom: 0px; margin-left: 0em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Opera Web Standards Curriculum&lt;/a&gt;&amp;nbsp;covers the basics of web standards-based design in HTML and CSS.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://code.google.com/edu/submissions/html-css-javascript/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Google's HTML, CSS, and Javascript from the Ground Up&lt;/a&gt;&amp;nbsp;presents the basics of web development with video tutorials presented by Google's expert web developers.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="http://reference.sitepoint.com/" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;SitePoint&lt;/a&gt;&amp;nbsp;is a pretty good reference for HTML, CSS and JavaScript. Their documentation always mentions feature support across different browsers, and describes known browser bugs.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;The W3C, itself, has a wiki-based general&amp;nbsp;&lt;a href="http://www.w3.org/html/wiki/Learn" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Learn&lt;/a&gt;&amp;nbsp;page as well as an&amp;nbsp;&lt;a href="http://www.w3.org/html/wiki/Elements" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;HTML element reference&lt;/a&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; margin-bottom: 1.5em; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;a href="https://developer.mozilla.org/en-US/docs" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; color: #815b08; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;The MDC (Mozilla's Doc Center)&lt;/a&gt;&amp;nbsp;takes over at intermediate CSS and covers JavaScript better than anyone.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font: inherit; line-height: 24px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;The MDC is also a wiki (little known fact), which means we, as knowledgeable web developers, can add or change information so the pages are as effective and comprehensive as possible.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font: inherit; line-height: 24px; margin-top: 1.5em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;Additionally, W3schools has the top link on Google (currently) when you search for &lt;/span&gt;&lt;i style="color: #444444;"&gt;'browser stats'&lt;/i&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;. Think about it, dear reader. The browser stats they are amassing are &lt;/span&gt;&lt;i style="color: #444444;"&gt;"&lt;span class="Apple-style-span" style="background-color: white; color: black; line-height: normal;"&gt;collected from W3Schools' log-files, over many years" (http://www.w3schools.com/browsers/browsers_stats.asp, Nov. 22, 2011)&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black; line-height: normal;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;&lt;span class="Apple-style-span" style="background-color: white; line-height: normal;"&gt;which is, sadly, filled with log entries from noob web-developers, non-developers who are just trying to swim their way to the surface of their WYSIWYG's source tab, and some bots.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;If you want a really good look at what is being used on the web, check out &lt;/span&gt;&lt;a href="http://stats.wikimedia.org/archive/squid_reports/" target="_blank"&gt;Wikipedia's logs&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;(Alexa global ranking: 6 (as of today) ) or &lt;/span&gt;&lt;a href="http://gs.statcounter.com/" target="_blank"&gt;StatCounter&lt;/a&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;(which is unweighted as far as I know).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5973622802612059461?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5973622802612059461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/w3fools-against-w3schools-not-foolish.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5973622802612059461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5973622802612059461'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/w3fools-against-w3schools-not-foolish.html' title='W3Fools against W3Schools: Not a foolish position'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5872520613137268034</id><published>2011-11-18T13:18:00.000-08:00</published><updated>2011-11-18T13:29:02.656-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='best practices'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><title type='text'>Mobile Standards Resources</title><content type='html'>W3C has a Mobile Web Initiative specific section of their site:&amp;nbsp;&lt;a href="http://www.w3.org/Mobile/"&gt;http://www.w3.org/Mobile/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The resources center aggregates various tools, sites, and information related to building a better mobile presence. I am especially fond of the W3C Standards (found here:&amp;nbsp;&lt;a href="http://www.w3.org/Mobile/Specifications"&gt;http://www.w3.org/Mobile/Specifications&lt;/a&gt;)&amp;nbsp;which lists a number of great references such as:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2008/REC-mobile-bp-20080729/"&gt;Mobile Web Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/TR/mwabp/"&gt;Mobile Web Application Best Practices&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/TR/mobileOK-basic10-tests/"&gt;mobileOK Basic&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/TR/DDR-Simple-API/"&gt;Device Description Repository Simple API&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One key entry to the Best Practices page defines the 'basic requirement' or default to support. &amp;nbsp;The default is as follows:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usable Screen Width:&amp;nbsp;&lt;/b&gt;120 pixels, minimum.&lt;br /&gt;&lt;b&gt;Markup Language Support:&amp;nbsp;&lt;/b&gt;XHTML Basic 1.1 delivered with content type application/xhtml+xml.&lt;br /&gt;&lt;b&gt;Character Encoding:&amp;nbsp;&lt;/b&gt;UTF-8.&lt;br /&gt;&lt;b&gt;Image Format Support:&amp;nbsp;&lt;/b&gt;JPEG/GIF 89a.&lt;br /&gt;&lt;b&gt;Maximum Total Page Weight:&amp;nbsp;&lt;/b&gt;20 kilobytes.&lt;br /&gt;&lt;b&gt;Colors:&amp;nbsp;&lt;/b&gt;256 Colors, minimum.&lt;br /&gt;&lt;b&gt;Style Sheet Support:&amp;nbsp;&lt;/b&gt;CSS Level 1. In addition, CSS Level 2 @media rule together with the handheld and all media types.&lt;br /&gt;&lt;b&gt;HTTP:&amp;nbsp;&lt;/b&gt;HTTP/1.0 or more recent HTTP/1.1.&lt;br /&gt;&lt;b&gt;Script:&amp;nbsp;&lt;/b&gt;No support for client side scripting. (Do not use it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5872520613137268034?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5872520613137268034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/mobile-standards-resources.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5872520613137268034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5872520613137268034'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/mobile-standards-resources.html' title='Mobile Standards Resources'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-7172964348017660968</id><published>2011-11-18T11:16:00.000-08:00</published><updated>2011-11-18T11:52:16.248-08:00</updated><title type='text'>Great mobile websites</title><content type='html'>It's easy to create a mobile websites, but it's more difficult to create a great, user intuitive site that people want to keep coming back to.   The key is the make the site fast, simple, and just provide the content that a mobile user wants.  Some websites recently have done a fantastic job at doing this, and are great example to learn by.  Below are some great lists of awesome mobile website designs:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.modny73.com/inspiration/42-vivid-examples-of-mobile-website-designs/"&gt;Vivid Examples of Mobile Website Designs&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.1stwebdesigner.com/inspiration/mobile-web-designs-show-future-trends/"&gt;Mobile Web Designs To Show You One Of Future Trends&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I know, it's a lot of examples, but after glancing over them you will notice most of them have one thing in common.  They are focused for a particular purpose.  For example, allowing you to search for weather in your city (iWeathr) or find a burger near you (McDonald’s).  The main websites have much more, but the mobile site is aimed for the person on the move.  Many sites will condense the content of their big web page to a simple and easy to read format (CBS News for example).  When people are on the go they want content quickly and they want it be focused on what they need while they are not at their computer desks.  These are sites that people come back to again and again because they have use when the user needs information fast.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-7172964348017660968?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/7172964348017660968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/great-mobile-websites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7172964348017660968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7172964348017660968'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/great-mobile-websites.html' title='Great mobile websites'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-6235347448603594443</id><published>2011-11-16T18:37:00.000-08:00</published><updated>2011-11-16T18:43:55.450-08:00</updated><title type='text'>Drupal Mobile Site</title><content type='html'>One of the main concerns about mobile sites are how to manage content. A page on the desktop might not be need or make sense for the mobile site. You might just want to have your mobile site contain a few pages to make the site easier to navigate. Luckily Drupal can make this processes easy. By combining &lt;a href="http://drupal.org/project/mobile_tools"&gt;Mobile Tools&lt;/a&gt; and &lt;a href="http://drupal.org/project/domain"&gt;Domain Access&lt;/a&gt; you can have a separate site for mobile while being easy to manage.&lt;div&gt;Instead of having two sites with separate logins you can have one site and when you go to post a page you choose which site it should be published on (or both). This can make managing content across both sites a breeze.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-6235347448603594443?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/6235347448603594443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/drupal-mobile-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6235347448603594443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6235347448603594443'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/drupal-mobile-site.html' title='Drupal Mobile Site'/><author><name>Sean Sehr</name><uri>http://www.blogger.com/profile/12847401879431372836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-IrkCGepAnC0/TpdgK0kkPkI/AAAAAAAAAB8/XRX2FHSQyaE/s1600/7424_151471121776_502266776_3074493_7610178_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-9182190136896794493</id><published>2011-11-15T12:24:00.001-08:00</published><updated>2011-11-15T13:08:08.967-08:00</updated><title type='text'>A strategy for utilizing mobile emulators in a more realistic way than using a mouse</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ideally, mobile testing would be done on all of the common mobile devices, but who has the money to keep buying them and paying for data-plans? Emulators work fine, but the main gripe with using them is that &lt;i&gt;you can't touch the device.&amp;nbsp;&lt;/i&gt;A very basic feature of the mobile environment is being able to hold an I/O device, and get it to surf the web by touching its screen. You never see someone break out a mouse when they are trying to browse the web on a phone or a tablet. So, I have been racking my brain trying to figure out a good way of doing this that is as cost-effective as it is realistic.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;And I think I have a good idea:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Buy a cheap multitouch interface, and use that like you would use the screen (or trackball in such cases as a Blackberry) of a smartphone with multitouch.&lt;sup&gt;1, 2&lt;/sup&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Create desktop backgrounds that consist of a rectangle of the same dimensions as a given mobile device's active area that is centered on the screen. Annotations within this picture can be used to give further markers and blocking points for the different parts of the device so that positioning it is just a matter of visually matching/fitting it into the right slot. Switch desktops backgrounds for every device you want to test.&lt;/li&gt;&lt;li&gt;Create a way of marking the dimensions of your device on the multi-touch input device, so as to realistically limit the active area of the multi-touch input. This could be done by measuring and cutting out rectangles in plastic report covers and clipping/mounting them to the multi-touch input.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I can foresee that you might have to configure the mouse sensitivity to match the devices as a possible contributor to error in this testing methodology. If you can poke a hole in my idea, please please please write a comment.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;&lt;sup&gt;1&lt;/sup&gt;&amp;nbsp; Some interfaces to consider might be &lt;a href="http://store.apple.com/us/product/MC380LL/A?fnode=MTY1NDA1Mg#overview" target="_blank"&gt;Apple's Magic Trackpad&lt;/a&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: x-small;"&gt;(active area =&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;5.12 inches x&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;5.17 inches&lt;/span&gt;)&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;, and &lt;a href="http://wacom.com/en/Products/Bamboo/BambooTablets/BambooCapture.aspx" target="_blank"&gt;Wacom's Bamboo Capture&lt;/a&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(active area =&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;5.8" x 3.6")&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;. Both $100 or less, a modest investment in what could be many years of fruitful testing.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: small;"&gt;&lt;sup&gt;2 &amp;nbsp;&amp;nbsp;&lt;/sup&gt;Simulating a real interaction by proxy of a tablet is not unfamiliar to me. Back when I was at the University of British Columbia, I worked in the Communication Dynamics Laboratory (under Dr. Eric Vatikiotis-Bateson and Dr. Adriano V. Barbosa). My project was to examine how people talk while they are drawing. Inspired by the interactive alignment exhibited in conversations I had with heady people over cocktail napkins, notebook paper, sharpies, and 4 colored pens, we set ourselves to the task of capturing event streams of discourses mediated by drawing. We devised a method for capturing all the tablet input (pressure, x, y, tilt, timestamp) using the linux-wacom Debian package.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-9182190136896794493?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/9182190136896794493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/strategy-for-utilizing-mobile-emulators.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/9182190136896794493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/9182190136896794493'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/strategy-for-utilizing-mobile-emulators.html' title='A strategy for utilizing mobile emulators in a more realistic way than using a mouse'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-948336933760228807</id><published>2011-11-11T17:13:00.000-08:00</published><updated>2011-11-11T17:34:02.386-08:00</updated><title type='text'>Mobile Phone Emulators</title><content type='html'>There is a lot of mobile phone emulators and simulators out there.  To make things easier I thought I would put all the links to the good ones in one place.  So here you go...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;BlackBerry Smartphone Simulators&lt;/div&gt;&lt;div&gt;&lt;a href="http://us.blackberry.com/developers/resources/simulators.jsp"&gt;http://us.blackberry.com/developers/resources/simulators.jsp&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Iphone 4 web based simulator&lt;/div&gt;&lt;div&gt;&lt;a href="http://iphone4simulator.com/"&gt;http://iphone4simulator.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple Xcode 4 - Includes a iPhone emulator and development tools&lt;/div&gt;&lt;div&gt;&lt;a href="http://developer.apple.com/xcode/index.php"&gt;http://developer.apple.com/xcode/index.php&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android SDK (provides an android emulator)&lt;/div&gt;&lt;div&gt;&lt;a href="http://developer.android.com/sdk/index.html"&gt;http://developer.android.com/sdk/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Documenation: &lt;a href="http://developer.android.com/guide/developing/tools/emulator.html"&gt;http://developer.android.com/guide/developing/tools/emulator.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WebOS SDK (includes an Emulator)&lt;/div&gt;&lt;div&gt;&lt;a href="https://developer.palm.com/content/resources/develop/sdk_pdk_download.html"&gt;https://developer.palm.com/content/resources/develop/sdk_pdk_download.html&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please post in the comments if you think there any links that should be added (or even removed) from this list.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-948336933760228807?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/948336933760228807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/mobile-phone-emulators.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/948336933760228807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/948336933760228807'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/mobile-phone-emulators.html' title='Mobile Phone Emulators'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-8382908470686609268</id><published>2011-11-11T14:17:00.000-08:00</published><updated>2011-11-11T14:32:58.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Why Indexing Is Required</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Most developers know that databases use data tables, stored procedures, views, and functions but indexes are often overlooked and misunderstood. Indexes are data structures that improve data retrieval from tables in a database. There are unique indexes and composite indexes, but I am not going to talk about composite indexes here as I am just introducing simple indexing concepts.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Indexes come in two flavors: clustered and non-clustered. You can &lt;b&gt;only&lt;/b&gt; have one &lt;b&gt;clustered index&lt;/b&gt; per table, as it is joined to the table providing sorted storage. The clustered index is the &lt;b&gt;Primary Key&lt;/b&gt;. Non-clustered indexes are sorted and have pointers to the actual data. While they speed up data retrieval when good indexing is employed, &lt;b&gt;there is overhead for maintaining indexes&lt;/b&gt;. Any queries that do not have a matching index definition will not use an index to speed up the data retrieval.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Let's say I have a table with 2 columns.&amp;nbsp;The columns are named 'id' and 'title'.&lt;span class="Apple-style-span" style="text-align: -webkit-auto;"&gt;&amp;nbsp;&lt;/span&gt;I then create an index on the 'id' column. When I search for information based upon the 'title' column, the index that I created &lt;b&gt;will not be used&lt;/b&gt; for the query because it does not assist in finding the appropriate data.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I think it is important to provide a visual comparative in order to continue this discussion without making things more confusing.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;There is a popular children's game called &lt;b&gt;High-Low&lt;/b&gt; (or the &lt;b&gt;Number Guessing Game&lt;/b&gt;) which requires&amp;nbsp;players to try and guess the correct number with a choice from 1 to 100 while the controller person tells them whether they've guess it, or whether they are too high or too low. So in primitive symbols, the responses can be =, &amp;lt;, and &amp;gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I have mapped out a &lt;b&gt;binary tree&lt;/b&gt; to illustrate the choices available and to also introduce a 'cheat' to playing the game. A person who knows the &lt;b&gt;binary search method&lt;/b&gt; can find the answer in 7 guesses or less &lt;b&gt;EVERYTIME&lt;/b&gt;.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-k4XCHctcq5U/TqYDzkOZbyI/AAAAAAAAAAQ/PzXOM9Sk0Pw/s1600/1%2Bto%2B100%2Bbinary%2Btree.gif" imageanchor="1"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-k4XCHctcq5U/TqYDzkOZbyI/AAAAAAAAAAQ/PzXOM9Sk0Pw/s400/1%2Bto%2B100%2Bbinary%2Btree.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Since the elements are essentially &lt;b&gt;ordered&lt;/b&gt; (sorted), it is possible to &lt;b&gt;cut them in half&lt;/b&gt; by choosing a number in the middle such as 51. The controller will then let you know if you should use the &lt;b&gt;left branch&lt;/b&gt; (you guessed too high) or the &lt;b&gt;right branch&lt;/b&gt; (you guessed too low) to continue guessing.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Let's say the number the controller picked was &lt;b&gt;31&lt;/b&gt;. You would guess the following numbers based upon the above binary tree: 51, 26, 39, 32, 29, 30, 31. This would also be the longest guess length possible as it takes &lt;b&gt;7 guesses&lt;/b&gt;. There are 37 numbers that require you to guess 7 times, 32 numbers that require you to guess 6 times, 16 numbers that require you to guess 5 times, 8 numbers that require you to guess 4 times, 4 numbers that require you to guess 3 times, 2 numbers that require you to guess 2 times, and only 1 that would get you the answer in the first try. So, the average guess set would be 6 or 7 guesses as the combined possibilities make up almost &lt;b&gt;70%&lt;/b&gt; of the total possible numbers.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If you write it out in base 2, you get &lt;b&gt;2^7&lt;/b&gt; or 128 possible choices. That is to say that if the game goal was to guess the number between 1 and 128, you'd still be able to guess it in 7 tries.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Applying this to indexing, when a table join is being used between 2 tables, it is always faster to create the join if there is an index that is sorted on the field that you want to use to join by. A simple select statement might be written as:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;SELECT&amp;nbsp;[books].[id],&amp;nbsp;[books].[title], [authors].[name]&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;FROM [books] JOIN&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; [authors] ON [books].[id] = [authors].[bookId]&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This statement is looking to join the books table to the authors table. The join is 'id' in books and 'bookId' in authors. In order to facilitate a faster result time, I would add an index to the books table on the 'id' column and an index on the 'bookId' column so that each of the tables have a sorted index to speed up finding the correct rows.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Since the 'id' column in the books table is it's &lt;b&gt;Primary Key&lt;/b&gt;, the index is &lt;b&gt;part of the table structure&lt;/b&gt;. However, for the 'bookId' column of the authors table, the index is not part of the table structure and is easier to visualize as being &lt;b&gt;a different table&lt;/b&gt;. This new table would be similar to having a new table with 2 columns whose &lt;b&gt;Primary Key&lt;/b&gt; is 'bookId' and has a 2nd column that &lt;b&gt;references&lt;/b&gt; the Primary Key of the authors table.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To find the appropriate row, the query would take the count of rows in each table, divide it in half and look at the &lt;b&gt;Primary Key's value&lt;/b&gt;&amp;nbsp;in that middle row to see if it is &lt;b&gt;High&lt;/b&gt; or &lt;b&gt;Low&lt;/b&gt;. It would then repeat the process using the same &lt;b&gt;binary search method&lt;/b&gt; shown above to get to the appropriate row quickly.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;If each table has 128 rows in it, the resulting effect is that instead of reading all 128 rows for each table to find the match,&lt;b&gt; the query only has to read 7 rows&lt;/b&gt; from each table. 14 is quite a bit smaller than 256.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-8382908470686609268?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/8382908470686609268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/why-indexing-is-required.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8382908470686609268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8382908470686609268'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/why-indexing-is-required.html' title='Why Indexing Is Required'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-k4XCHctcq5U/TqYDzkOZbyI/AAAAAAAAAAQ/PzXOM9Sk0Pw/s72-c/1%2Bto%2B100%2Bbinary%2Btree.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-7492398513440230358</id><published>2011-11-09T16:14:00.000-08:00</published><updated>2011-11-09T16:22:02.813-08:00</updated><title type='text'>Drupal 8, Mobile, and You</title><content type='html'>Drupal 8 is well under way and major changes have already started happening. It now has an official HTML 5 doc type and core files have been moved into their own directory. One of the initiatives for Drupal 8 is being  Mobile compatible. The initiative's leader, John Wilkins wrote a very good blog post outlining what he invisions for Drupal 8's mobile compatibility. You can find this post &lt;a href="http://www.palantir.net/blog/drupal-8-mobile-initiative"&gt;here&lt;/a&gt;. He covers key points about various ways Drupal could be mobile friendly, content administration on mobile devices, responsive web design, and front-end performance. He also discusses how the community can help in making a better mobile Drupal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-7492398513440230358?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/7492398513440230358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/drupal-8-mobile-and-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7492398513440230358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7492398513440230358'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/drupal-8-mobile-and-you.html' title='Drupal 8, Mobile, and You'/><author><name>Sean Sehr</name><uri>http://www.blogger.com/profile/12847401879431372836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-IrkCGepAnC0/TpdgK0kkPkI/AAAAAAAAAB8/XRX2FHSQyaE/s1600/7424_151471121776_502266776_3074493_7610178_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-8653674531417843828</id><published>2011-11-08T13:27:00.000-08:00</published><updated>2011-11-09T00:01:18.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Bromine'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='robotics'/><category scheme='http://www.blogger.com/atom/ns#' term='quality assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='Selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><title type='text'>Some recent happenings in test-automation</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;1) Bromine development ends.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I have been using the various flavors of Selenium over the last few months to break into test automation. One framework that really caught my eye was &lt;a href="http://brominefoundation.org/"&gt;Bromine&lt;/a&gt;, which not only distributes tests to machines on your grid, but also has a brilliant interface for stubbing in functional requirements and test cases. It is a web-app written with CakePHP, is &lt;i&gt;gratis (free as in beer)&lt;/i&gt;, and as far as I know is also &lt;i&gt;libre (free as in speech)&lt;b&gt;.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YvYe1Ft3N3c/TrmUl0EaloI/AAAAAAAAACc/FBEcSuG00U8/s1600/Screen+shot+2011-11-08+at+12.40.57+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" height="215" src="http://1.bp.blogspot.com/-YvYe1Ft3N3c/TrmUl0EaloI/AAAAAAAAACc/FBEcSuG00U8/s400/Screen+shot+2011-11-08+at+12.40.57+PM.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;When you write test cases using Bromine, they are all organized under the requirement(s) they address. Also, you can drag your steps around within the UI, which makes it very easy to edit your test cases. These changes, however do not have any effect upon the testscript that you upload to testcase.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;However, I was just notified yesterday that the development team will be dropping the project.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6ZgE61S4GOY/TrmUjgQcEqI/AAAAAAAAACM/ZIquXGRJGfM/s1600/end_of_Bromine_development.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" height="261" src="http://4.bp.blogspot.com/-6ZgE61S4GOY/TrmUjgQcEqI/AAAAAAAAACM/ZIquXGRJGfM/s320/end_of_Bromine_development.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I really hoped to see continued development on this project because it has the potential to become a really nice integration point for devs and QA. But the more I think about it, Bromine doesn't seem to hold up to my highest hopes for test automation. There is no integrated bug tracking system... You have to refactor your existing test scripts into Bromine's Java or PHP formats... Anyhow, time will tell.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;2) For all of those who have never seen it, Jason Huggins (&lt;a href="http://seleniumhq.com/" target="_blank"&gt;Selenium&lt;/a&gt;/Google/&lt;a href="http://saucelabs.com/" target="_blank"&gt;SauceLabs&lt;/a&gt;) made a robot that can play Angry Birds.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Huggins. You are a legend. &lt;b&gt;&amp;nbsp;&lt;/b&gt;The future of test automation on mobile devices is looking epic. Check out this &lt;a href="http://radar.oreilly.com/2011/10/angry-birds-robot-mobile-testing.html" target="_blank"&gt;article from last month&lt;/a&gt;&amp;nbsp;from O'Reilly (Timothy M. O'Brien,&amp;nbsp;author and interviewer) or &lt;a href="http://bitbeam.org/bitbeam-at-the-open-hardware-summit" target="_blank"&gt;Huggins' own post &lt;/a&gt;on the site for his side-project, Bitbeam. (In case the YouTube embed doesn't work for you, here is the &lt;a href="http://youtu.be/P549UyDxqXc" target="_blank"&gt;link to the interview&lt;/a&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/P549UyDxqXc/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/P549UyDxqXc&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/P549UyDxqXc&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;More links:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://seleniumhq.wordpress.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The Official Selenium Blog&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://seleniumhq.org/" target="_blank"&gt;The Official Selenium Website&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://code.google.com/p/selenium/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Selenium - Google Code Repository&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-8653674531417843828?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/8653674531417843828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/some-recent-happenings-in-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8653674531417843828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8653674531417843828'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/some-recent-happenings-in-test.html' title='Some recent happenings in test-automation'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-YvYe1Ft3N3c/TrmUl0EaloI/AAAAAAAAACc/FBEcSuG00U8/s72-c/Screen+shot+2011-11-08+at+12.40.57+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-4154293583954242137</id><published>2011-11-04T17:35:00.000-07:00</published><updated>2011-11-08T13:33:44.815-08:00</updated><title type='text'>Tips for making a mobile website</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Design: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;* Use minimal navigation. Only provide what the mobile user will need. &lt;br /&gt;&lt;br /&gt;* Limit disorientation (provide drill down menus) &lt;br /&gt;&lt;br /&gt;* Always proved a quick way home with an easy to find home button &lt;br /&gt;&lt;br /&gt;* User doesn't want to browse; they want to find &lt;br /&gt;&lt;br /&gt;* Port what is relevant to a mobile user (no need to port everything) &lt;br /&gt;&lt;br /&gt;* Keep as much brand identity as possible even with the smaller form factor &lt;br /&gt;&lt;br /&gt;* May need to compromise on fonts that are optimized for the small &lt;br /&gt;&lt;br /&gt;* Best to constrain users to Arial, Verdana, Georgia, Trebuchet, Times New Roman &lt;br /&gt;&lt;br /&gt;* Make things as automatic as possible (i.e. "Remember me" option in login, Automatic filling textboxes only) &lt;br /&gt;&lt;br /&gt;* Avoid anything that might result in fat finger mistakes (small items like radio buttons) &lt;br /&gt;&lt;br /&gt;* Use single column layout &lt;br /&gt;&lt;br /&gt;* Scroll vertically, not horizontally &lt;br /&gt;&lt;br /&gt;* Utilize mobile templates (such as the ones in certain Drupal themes) if possible &lt;br /&gt;&lt;br /&gt;* Important to allow the CMS tool to work in smaller form factors for on the go modifications to the site. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Development: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;* Speed is very important. People are on the go and they want info now. &lt;br /&gt;&lt;br /&gt;* Don't ever use popups &lt;br /&gt;&lt;br /&gt;* Don't use flash, Silverlight or hefty AJAX &lt;br /&gt;&lt;br /&gt;* Different mobile browsers require different meta tags &lt;br /&gt;&lt;br /&gt;* PutCSS on the top so it loads first &lt;br /&gt;&lt;br /&gt;* Take advantage of internet caching as much as possible &lt;br /&gt;&lt;br /&gt;* Keep components under 25KB &lt;br /&gt;&lt;br /&gt;* Combine static images into a single image to reduce the number of http requests &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Testing:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;* List the mobile devices you will support and write a test plan for each &lt;br /&gt;&lt;br /&gt;* Need a means to test in each of those devices &lt;br /&gt;&lt;br /&gt;* Use mobile emulators to do testing &lt;br /&gt;&lt;br /&gt;* Testing needs to be done on native devices to find things like fat finger problems and disorientation issues&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-4154293583954242137?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/4154293583954242137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/tips-for-making-mobile-website.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4154293583954242137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4154293583954242137'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/tips-for-making-mobile-website.html' title='Tips for making a mobile website'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-8426963598650427322</id><published>2011-11-01T15:00:00.000-07:00</published><updated>2011-11-01T15:42:10.815-07:00</updated><title type='text'>Conveniences of HTML5 Web Form types</title><content type='html'>&lt;div&gt;Hats off to you, &lt;a href="http://www.standardista.com"&gt;Estelle Weyl&lt;/a&gt;, for posting your results from studying the support and behavior of HTML5 input types (shown below), and all the other great work you have done at http://www.standardista.com/html5/html5-web-forms/&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, sans-serif; color: rgb(40, 40, 40); font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(228, 229, 231); background-repeat: no-repeat no-repeat; "&gt;&lt;li style="padding-left: 20px; margin-left: 20px; background-repeat: no-repeat no-repeat; "&gt;WK = Webkit (tested Safari 5)&lt;/li&gt;&lt;li style="padding-left: 20px; margin-left: 20px; background-repeat: no-repeat no-repeat; "&gt;O = Opera (10.5 on Mac)&lt;/li&gt;&lt;li style="padding-left: 20px; margin-left: 20px; background-repeat: no-repeat no-repeat; "&gt;FF = Firefox (3.6.3 on Mac)&lt;/li&gt;&lt;li style="padding-left: 20px; margin-left: 20px; background-repeat: no-repeat no-repeat; "&gt;IE = Internet Explorer (IE8 on XP)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;TYPE ⇒&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Attribute&lt;br /&gt;&lt;br /&gt;⇓&lt;/p&gt;&lt;/th&gt;&lt;th&gt;Text, search, url, tel&lt;/th&gt;&lt;th&gt;Email&lt;br /&gt;&lt;/th&gt;&lt;th&gt;Password&lt;/th&gt;&lt;th&gt;Dateandtime&lt;br /&gt;&lt;br /&gt;Date,&lt;br /&gt;&lt;br /&gt;Month,&lt;br /&gt;&lt;br /&gt;Week,&lt;br /&gt;&lt;br /&gt;Time&lt;/th&gt;&lt;th&gt;Dateandtime-local,&lt;br /&gt;&lt;br /&gt;number&lt;/th&gt;&lt;th&gt;range&lt;/th&gt;&lt;th&gt;color&lt;/th&gt;&lt;th&gt;Checkbox, radio&lt;/th&gt;&lt;th&gt;file&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;accept&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;autocomplete&lt;/th&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;autofocus&lt;/th&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK,O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;checked&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;disabled&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Form&lt;/th&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;list&lt;/th&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;max&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;maxlength&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;min&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;multiple&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;FF, WK, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;FF, WK&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O, FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;pattern&lt;/th&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;placeholder&lt;/th&gt;&lt;td&gt;WK&lt;/td&gt;&lt;td&gt;WK&lt;/td&gt;&lt;td&gt;WK&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;readonly&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;required&lt;/th&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;td&gt;WK, O&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;size&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;step&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td&gt;O, WK&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;checked&lt;/th&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td class="NA"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;value&lt;/th&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O, FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;td&gt;WK, O,&lt;br /&gt;&lt;br /&gt;FF, IE&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Another example of a really useful tool put out by the Weyl is the following slideshow, which demonstrates how to implement HTML5 webforms and what results they will afford the user of a mobile device.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_5063425"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/estellevw/html5-web-forms" title="HTML5 Web Forms" target="_blank"&gt;HTML5 Web Forms&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/5063425" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/estellevw" target="_blank"&gt;estellevw&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; I get slightly peeved each time a form asks me for an email address but does not tell my browser to tell my mobile device to put the '@' right in front of me. Likewise, I really like using the native date pickers etc on my iPhone instead of fat-fingering at a little grid, hoping that I can touch a '15'.  The mobile web is all about the little conveniences, and sites that have a heavy emphasis on forms really should take these awesome advances that HTML5 affords into consideration.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-8426963598650427322?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/8426963598650427322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/conveniences-of-html5-web-form-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8426963598650427322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8426963598650427322'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/conveniences-of-html5-web-form-types.html' title='Conveniences of HTML5 Web Form types'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1335039224810760193</id><published>2011-11-01T08:48:00.000-07:00</published><updated>2011-11-01T09:27:59.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='activities'/><category scheme='http://www.blogger.com/atom/ns#' term='favorite'/><title type='text'>Most Popular Mobile Activities</title><content type='html'>Mobile web site activity is on the rise and predicted to be even more popular in the future. Along with all the other additional tasks required to develop mobile friendly sites perhaps one of the most important is identifying how sites or apps are used when consumers are using a mobile device. By knowing this you can reduce page size and eliminate content that's not needed. By identifying mobile activities developers can create sites that are seamless whether being accessed on desktops, laptops or mobiles. I found some interesting data that has identified mobile device activities and consumer preferences . It turns out that the trend is leaning toward browsers with the exception of games and social networking:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) US consumers prefer browser to apps for most mobile activities&lt;/strong&gt;, according to &lt;a href="http://www.keynote.com/docs/news/AdobeScene7_MobileConsumerSurvey.pdf" target="_blank"&gt;Keynote/Adobe&lt;/a&gt;&lt;br /&gt;• Accessing maps and directions is the no. 1 mobile activity, followed  by social networking, accessing local information and reading news.&lt;br /&gt;• Respondents generally favor the browser experience over downloadable  mobile apps, except when it comes to games, social media, maps and  music.&lt;br /&gt;• Consumers report equal satisfaction levels with their browser and app  experiences, and spend nearly equal amounts of time interacting with  each.&lt;br /&gt;• “To maximize reach, invest in a mobile-optimized web experience and look beyond a single device.” – Adobe/Keynote.&lt;br /&gt;&lt;small&gt;&lt;br /&gt;&lt;/small&gt;&lt;table border="3" cellpadding="3"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt;&lt;strong&gt;US consumers’ favorite mobile activities&lt;br /&gt;and preferences for accessing the activity via app or browser&lt;/strong&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Participated&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Prefer apps&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Prefer browser&lt;/strong&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Media and Entertainment:&lt;/strong&gt;&lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Social networking&lt;/td&gt; &lt;td&gt;76%&lt;/td&gt; &lt;td&gt;54%&lt;/td&gt; &lt;td&gt;46%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Local info&lt;/td&gt; &lt;td&gt;73%&lt;/td&gt; &lt;td&gt;46%&lt;/td&gt; &lt;td&gt;54%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;News&lt;/td&gt; &lt;td&gt;68%&lt;/td&gt; &lt;td&gt;37%&lt;/td&gt; &lt;td&gt;63%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Music&lt;/td&gt; &lt;td&gt;63%&lt;/td&gt; &lt;td&gt;55%&lt;/td&gt; &lt;td&gt;45%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Games&lt;/td&gt; &lt;td&gt;61%&lt;/td&gt; &lt;td&gt;61%&lt;/td&gt; &lt;td&gt;39%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Video&lt;/td&gt; &lt;td&gt;56%&lt;/td&gt; &lt;td&gt;42%&lt;/td&gt; &lt;td&gt;58%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Sports&lt;/td&gt; &lt;td&gt;42%&lt;/td&gt; &lt;td&gt;33%&lt;/td&gt; &lt;td&gt;67%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Blogs/blogging&lt;/td&gt; &lt;td&gt;41%&lt;/td&gt; &lt;td&gt;25%&lt;/td&gt; &lt;td&gt;75%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Product reviews&lt;/td&gt; &lt;td&gt;34%&lt;/td&gt; &lt;td&gt;22%&lt;/td&gt; &lt;td&gt;78%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Travel and mapping:&lt;/strong&gt;&lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Maps/directions&lt;/td&gt; &lt;td&gt;81%&lt;/td&gt; &lt;td&gt;52% &lt;/td&gt; &lt;td&gt;48% &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Research travel &lt;/td&gt; &lt;td&gt;47%&lt;/td&gt; &lt;td&gt;25% &lt;/td&gt; &lt;td&gt;75% &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Check travel reviews&lt;/td&gt; &lt;td&gt;43%&lt;/td&gt; &lt;td&gt;23% &lt;/td&gt; &lt;td&gt;77%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Check travel itinerary&lt;/td&gt; &lt;td&gt;39%&lt;/td&gt; &lt;td&gt;32% &lt;/td&gt; &lt;td&gt;68% &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Banking and finance:&lt;/strong&gt;&lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Check bank account&lt;/td&gt; &lt;td&gt;67%&lt;/td&gt; &lt;td&gt;42% &lt;/td&gt; &lt;td&gt;58% &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Conduct bank transactions&lt;/td&gt; &lt;td&gt;51%&lt;/td&gt; &lt;td&gt;39% &lt;/td&gt; &lt;td&gt;61% &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Budgeting&lt;/td&gt; &lt;td&gt;43%&lt;/td&gt; &lt;td&gt;44% &lt;/td&gt; &lt;td&gt;56%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Shopping:&lt;/strong&gt;&lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="4"&gt;For every shopping activity, including researching products and prices, reviews, promotions&lt;br /&gt;and purchasing products, most respondents (61-81%) preferred browser to native app.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt;&lt;strong&gt;Source: &lt;a href="http://www.keynote.com/docs/news/AdobeScene7_MobileConsumerSurvey.pdf" target="_blank"&gt;Keynote/Adobe (October 2010)&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; &lt;td colspan="2"&gt;&lt;strong&gt;via: &lt;a href="http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats"&gt;mobiThinking&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1335039224810760193?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats#usprefersmobileweb' title='Most Popular Mobile Activities'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1335039224810760193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/11/most-popular-mobile-activities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1335039224810760193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1335039224810760193'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/11/most-popular-mobile-activities.html' title='Most Popular Mobile Activities'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/12656444922121980891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-NFu_uaEGEYM/TpzA5mRUfAI/AAAAAAAAAAQ/9yW3USQWdSM/s220/lyle.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-8358004836047518891</id><published>2011-10-28T09:46:00.000-07:00</published><updated>2011-10-28T10:53:31.759-07:00</updated><title type='text'>Ext JS: Excellent choice for creating rich javascript UI</title><content type='html'>If your looking to create a rich Javascript UI that is easy to develop, I think you will find &lt;a href="http://www.sencha.com/products/extjs/"&gt;Ext JS&lt;/a&gt; as a great option.  The website has a good &lt;a href="http://www.sencha.com/products/extjs/examples/"&gt;Example &amp;amp; Demos&lt;/a&gt; section so you can see what it can do.  It also has some very good &lt;a href="http://docs.sencha.com/ext-js/4-0/#!/api"&gt;documentation&lt;/a&gt; and a large community backing it.  At the moment we are creating a rich interface for users to view a folder structure in a file tree, load files, and check them for errors.  The interface feels seamless just like you are using a windows application and it didn't take very long to program at all.  We highly recommend checking out this framework out if you are planning on doing anything like this in your JavaScript development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-8358004836047518891?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/8358004836047518891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/ext-js-excellent-choice-for-creating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8358004836047518891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/8358004836047518891'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/ext-js-excellent-choice-for-creating.html' title='Ext JS: Excellent choice for creating rich javascript UI'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-6520028005503169546</id><published>2011-10-26T14:13:00.000-07:00</published><updated>2011-10-26T15:33:39.794-07:00</updated><title type='text'>Lytro light-field cameras</title><content type='html'>Lytro introduced their light-field cameras recently. What is so amazing about these cameras is they are able to take in more information than a normal camera. This allows the focus on the photos to change after it has been taken. This also allows for 3D photos.&lt;a href="http://www.pcworld.com/article/242217/lytro_cameras_on_sale_now_what_you_need_to_know.html"&gt; Click here to read more&lt;/a&gt;, or &lt;a href="https://www.lytro.com/living-pictures/282"&gt;Click here to see photos in action&lt;/a&gt;. I am very excited on the implications this has for web design such as 3D photo galleries or the ability to create multiple pieces of art from a single photo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-6520028005503169546?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/6520028005503169546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/lytro-light-field-cameras.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6520028005503169546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6520028005503169546'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/lytro-light-field-cameras.html' title='Lytro light-field cameras'/><author><name>Sean Sehr</name><uri>http://www.blogger.com/profile/12847401879431372836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-IrkCGepAnC0/TpdgK0kkPkI/AAAAAAAAAB8/XRX2FHSQyaE/s1600/7424_151471121776_502266776_3074493_7610178_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-2182080665763329720</id><published>2011-10-24T22:49:00.000-07:00</published><updated>2011-10-25T00:15:20.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='fusion'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Drupal to Mobile</title><content type='html'>I've heard a lot of different opinions on what to use for Drupal Mobile compatibility. There are some choices out there but the best solution so far seems to be using mobile_tools and fusion_mobile themes. For now there are some instructions to follow:&lt;br /&gt;&lt;h3&gt;Installation&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;Download Fusion from &lt;a href="http://drupal.org/project/fusion" title="http://drupal.org/project/fusion"&gt;http://drupal.org/project/fusion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download Fusion Mobile from &lt;a href="http://drupal.org/project/fusion_mobile" title="http://drupal.org/project/fusion_mobile"&gt;http://drupal.org/project/fusion_mobile&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install the Skinr module: &lt;a href="http://drupal.org/project/skinr" title="http://drupal.org/project/skinr"&gt;http://drupal.org/project/skinr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Follow the instructions in the README to build your own Fusion Mobile theme&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;Mobile theme switching&lt;/h3&gt; &lt;p&gt;We recommend the Mobile Tools module to switch to your mobile theme when a mobile device is detected: &lt;a href="http://drupal.org/project/mobile_tools" title="http://drupal.org/project/mobile_tools"&gt;http://drupal.org/project/mobile_tools&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-2182080665763329720?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/2182080665763329720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/drupal-to-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2182080665763329720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2182080665763329720'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/drupal-to-mobile.html' title='Drupal to Mobile'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/12656444922121980891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-NFu_uaEGEYM/TpzA5mRUfAI/AAAAAAAAAAQ/9yW3USQWdSM/s220/lyle.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-6111148424471077169</id><published>2011-10-21T09:25:00.001-07:00</published><updated>2011-10-21T09:40:48.658-07:00</updated><title type='text'>Removing Time From SQL Datetime</title><content type='html'>Recently I had to run a SQL query where I had to compare datetime columns, but only needed compared the date, not the time.  This can be done easily by making the datetimes all have the same time of midnight when you compare them.  The following statement will get a column (in this case "enddate") and return it with the time of midnight:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SELECT Convert(DATETIME, convert(varchar, endDate, 112))&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What is happening is it's converting the datatime to varchar keeping only the date then converting it back to a datetime which will give it a midnight time by default.  If you do this to the all datetime variables or columns you are trying to compare, then the times will not be a factor since they will all be the same.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-6111148424471077169?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/6111148424471077169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/removing-time-from-sql-datetime.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6111148424471077169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6111148424471077169'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/removing-time-from-sql-datetime.html' title='Removing Time From SQL Datetime'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-4394400275768033586</id><published>2011-10-20T17:16:00.000-07:00</published><updated>2011-10-20T17:16:23.240-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='ios'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile app'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Wordpress on Android</title><content type='html'>Mobile phones are stepping into a new era. I have been using mobile phones for a number of years, but until recently, doing really functional tasks on the web have been restricted by a lack of proper toolsets.&lt;br /&gt;&lt;br /&gt;Enter the WordPress app for the [insert your type here] phone.&lt;br /&gt;&lt;br /&gt;You can install the app on your phone and not only read WordPress blogs, but manage your own as well.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://android.wordpress.org/"&gt;http://android.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blackberry.wordpress.org/"&gt;http://blackberry.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ios.wordpress.org/"&gt;http://ios.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nokia.wordpress.org/"&gt;http://nokia.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are a developer you may be looking for a little more than just an app to install. They have a developer section which provides information as well as access to the svn repository. If you join their development team you can get read/write access to the repository, but anonymous access is allowed for read only access for each phone type:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://android.svn.wordpress.org/"&gt;http://android.svn.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blackberry.svn.wordpress.org/"&gt;http://blackberry.svn.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ios.svn.wordpress.org/"&gt;http://ios.svn.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nokia.svn.wordpress.org/"&gt;http://nokia.svn.wordpress.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Given the popularity of WordPress, this feature is sure to drive additional offerings from other projects across the web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-4394400275768033586?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wordpress.org/' title='Wordpress on Android'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/4394400275768033586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/wordpress-on-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4394400275768033586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4394400275768033586'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/wordpress-on-android.html' title='Wordpress on Android'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-2901029567771630385</id><published>2011-10-18T13:07:00.001-07:00</published><updated>2011-10-18T13:49:25.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge navigator'/><category scheme='http://www.blogger.com/atom/ns#' term='futureshock'/><category scheme='http://www.blogger.com/atom/ns#' term='Siri'/><category scheme='http://www.blogger.com/atom/ns#' term='CALO'/><category scheme='http://www.blogger.com/atom/ns#' term='natural language processing'/><category scheme='http://www.blogger.com/atom/ns#' term='language support'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='artificial intelligence'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='PAL'/><title type='text'>The Roots of Siri: AI on the iPhone</title><content type='html'>I have been following the press surrounding &lt;a href="http://www.apple.com/iphone/features/siri.html"&gt;Siri&lt;/a&gt;, the new digital assistant that comes with the iPhone 4S. It seems like a fabulous tool, and I am looking forward to what its users can teach it 'in the wild'. However, I have noticed a palpable gap in the press coverage: Siri's roots. So, here is my modest attempt to gather some of the strands.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I suppose that the most fun thing to begin with is a video:&lt;/div&gt;&lt;br /&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/3WdS4TscWH8" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;So over 20 years ago, Apple made this wonderful video/commercial (which eerily hits the date 2011 on the nose) that exhibits this concept of the 'Knowledge Navigator' (which was purportedly written up in former CEO John Scully's book &lt;span style="font-style:italic;"&gt;Oddesey&lt;/span&gt;&lt;span&gt;) that had the natural-language processing capabilities of a butler/digital-librarian. The ease of use that is acted out in this video may prove to be a good benchmark for Apple's UX team, and certainly an interesting thing to bat around while armchair-philosophizing about &lt;a href="http://en.wikipedia.org/wiki/Turing_test"&gt;Turing Tests&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Technological_singularity"&gt;The Singularity&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The name Siri, is derived from SRI: Stanford Research Institute originally, SRI International once it had to officially declare non-affiliation with Stanford University during wartime in the 1970s. Among the many amazing to come out of SRI (prototypes of the computer mouse and ARPANET under Doug Englebart, &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt; under Donald Knuth, vaccines for SARS and avian flu... &lt;a href="http://en.wikipedia.org/wiki/Stanford_Research_Institute#Research_history"&gt;the list goes on&lt;/a&gt;) was the DARPA funded &lt;a href="https://pal.sri.com/Plone/framework"&gt;CALO (under the PAL framework).&lt;/a&gt; This is reported to be one of the largest artificial intelligence projects ever launched. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/CALO"&gt;CALO&lt;/a&gt; stands for Cognitive Assistant that Learns and Organizes, and this is what Siri is designed to do. Like many AI applications that initially had a lot of funding because the DOD saw promising uses for soldiers, CALO-cum-Siri has been transformed from tool to toy. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Siri, Corp. split off from SRI and was bought by Apple a few years ago. The rest is history.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some questions we have about Siri:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;What languages are supported?&lt;/li&gt;&lt;li&gt;Will Siri be crippled behind the Great Firewall?&lt;/li&gt;&lt;li&gt;Can Siri be taught to eavesdrop?&lt;/li&gt;&lt;li&gt;How well can Siri differentiate between situations when a user is and is not addressing it?&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;All four of these questions have pretty important implications for product quality, privacy, machine learning, and human-computer-interactions. I am looking forward to seeing the user base grow.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-2901029567771630385?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.youtube.com/watch?feature=player_embedded&amp;v=3WdS4TscWH8' title='The Roots of Siri: AI on the iPhone'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/2901029567771630385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/roots-of-siri-ai-on-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2901029567771630385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2901029567771630385'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/roots-of-siri-ai-on-iphone.html' title='The Roots of Siri: AI on the iPhone'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/3WdS4TscWH8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1445989901435356795</id><published>2011-10-17T17:06:00.000-07:00</published><updated>2011-10-17T17:19:28.062-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='jsfiddle'/><title type='text'>Javascript fiddle</title><content type='html'>I stumbled on the javascript fiddler site (jsfiddle) and really like it. This is another place to develop and test against any javascript framework without getting lost in an avalanche of files and folders.&lt;br /&gt;It's amazing that all the frameworks like jQuery Dojo, Prototype and you name it along with every possible version in one location.&lt;br /&gt;This is laid out nicely as four windows to insert your HTML, CSS, javascript code and a test frame to try it out.  Another great thing about this site is the ability to add external reference paths to other javascript sources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1445989901435356795?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jsfiddle.net/B4t3V/' title='Javascript fiddle'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1445989901435356795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/javascript-fiddle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1445989901435356795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1445989901435356795'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/javascript-fiddle.html' title='Javascript fiddle'/><author><name>Lyle</name><uri>http://www.blogger.com/profile/12656444922121980891</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-NFu_uaEGEYM/TpzA5mRUfAI/AAAAAAAAAAQ/9yW3USQWdSM/s220/lyle.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5027777513079455308</id><published>2011-10-14T15:19:00.000-07:00</published><updated>2011-10-14T16:56:39.793-07:00</updated><title type='text'>Unit testing your Javascript code</title><content type='html'>The Dojo javascript toolkit has a great solution for unit testing your JavaScript code.  It's called D.O.H. (Dojo Objective Harness).  We have been using this lately to unit test a JavaScript framework we have been building and it has been working out very well.  It even contains a GUI runner that allows you to easily test any test suites you create.  The testing framework works a lot like nunit so for those of you that use that for other projects you may find this a very easy tool to learn.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can get more details about D.O.H. at &lt;a href="http://dojotoolkit.org/reference-guide/util/doh.html"&gt;http://dojotoolkit.org/reference-guide/util/doh.html&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can download the Dojo toolkit at &lt;a href="http://dojotoolkit.org/"&gt;http://dojotoolkit.org/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5027777513079455308?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5027777513079455308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/unit-testing-your-javascript-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5027777513079455308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5027777513079455308'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/unit-testing-your-javascript-code.html' title='Unit testing your Javascript code'/><author><name>Scott Andersen</name><uri>http://www.blogger.com/profile/13539300324006537316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-hODZ11RKQtw/Tpiy_Uo_UUI/AAAAAAAAAAo/YIOOsGa4V-0/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-35075139235341164</id><published>2011-10-12T09:13:00.000-07:00</published><updated>2011-10-13T15:04:47.725-07:00</updated><title type='text'>CSS3 Pie</title><content type='html'>Right now is an exciting yet frustrating time for the web right now. We have exciting new technologies (HTML5 and CSS3) that are out there for use but we can't use readily yet due to compatibility issues. IE7 &amp;amp; 8 are holding the web back and will be for quite a few more years. There is some help on this front though, &lt;a href="http://css3pie.com/"&gt;CSS3 Pie&lt;/a&gt; allowing developers to use certain CSS3 tags in IE.&lt;div&gt;At the moment it only includes support for&lt;/div&gt;&lt;ul&gt;&lt;li&gt;border-radius&lt;/li&gt;&lt;li&gt;box-shadow&lt;/li&gt;&lt;li&gt;border-image&lt;/li&gt;&lt;li&gt;multiple background images&lt;/li&gt;&lt;li&gt;linear-gradient as background image&lt;/li&gt;&lt;/ul&gt;There are still some issues with z-indexes (since it actually creates a new html object) but overall I have been very happy with it and plan to continue using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-35075139235341164?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/35075139235341164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/css3-pie.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/35075139235341164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/35075139235341164'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/css3-pie.html' title='CSS3 Pie'/><author><name>Sean Sehr</name><uri>http://www.blogger.com/profile/12847401879431372836</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-IrkCGepAnC0/TpdgK0kkPkI/AAAAAAAAAB8/XRX2FHSQyaE/s1600/7424_151471121776_502266776_3074493_7610178_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-7082677493938197272</id><published>2011-10-11T15:00:00.000-07:00</published><updated>2011-10-11T15:10:04.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qa'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='release schedule'/><category scheme='http://www.blogger.com/atom/ns#' term='silent updates'/><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='quality assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='web testing'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Mozilla plans for silent releases of Firefox in 2012</title><content type='html'>Following in the stead of Google Chrome, Mozilla as announced (in a fittingly quiet way) that they are working on a few things to stay out of their users' faces while continuing on with their 6-week release schedules. By January of 2012 (at which point we will be approximately at Firefox 10) they hope to not only update silently, but also to have enough &lt;a href="https://wiki.mozilla.org/Features/Add-ons/Add-ons_Default_to_Compatible"&gt;infrastructure&lt;/a&gt; in place so that add-on developers are not left surprised or scrambling to update the version number the add-on is compatible with.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Sources:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: left;"&gt;&lt;a href="http://www.webmonkey.com/2011/10/mozilla-plans-to-silently-update-future-firefox-releases/"&gt;Web Monkey - Mozilla Plans to Silently Update Future Firefox Releases&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.lizardwrangler.com/2011/10/03/rapid-release-follow-up/"&gt;Mitchell Baker's Blog "Lizard Wrangler" - Rapid Release Follow Up&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.fligtar.com/2011/09/26/add-on-compatibility-progress-plans/"&gt;Fligtar - Compatibility plans and ruminations for Add-Ons and upcoming releases of Firefox&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-7082677493938197272?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/7082677493938197272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2011/10/mozilla-plans-for-silent-releases-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7082677493938197272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/7082677493938197272'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2011/10/mozilla-plans-for-silent-releases-of.html' title='Mozilla plans for silent releases of Firefox in 2012'/><author><name>Brian Lehrer</name><uri>http://www.blogger.com/profile/15642370544043040897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/-jMgGLKDH6sM/TpS_0Pod2JI/AAAAAAAAAAQ/MYXLOhcyLik/s220/bsl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3763425011625331562</id><published>2010-02-04T13:52:00.000-08:00</published><updated>2010-02-04T13:53:45.028-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Move object ownership in SQL Server using Automatic Script Creation Technique</title><content type='html'>While these instructions should work in SQL Server 2000, they are specific to SQL Server 2005.&lt;br /&gt;&lt;br /&gt;Make sure to set 'Query' &gt;&gt; 'Results To' &gt;&gt; 'Results to Text' from the Query Menu or by clicking the 'Results to Text' icon on the 'SQL Editor' toolbar.&lt;br /&gt;&lt;br /&gt;Run the following query in SQL Server:&lt;br /&gt;&lt;br /&gt;DECLARE @newOwner nvarchar(128)&lt;br /&gt;DECLARE @currentOwner nvarchar(128)&lt;br /&gt;SET @newOwner = 'user1'&lt;br /&gt;SET @currentOwner = 'dbo'&lt;br /&gt;&lt;br /&gt;SELECT 'EXEC sp_changeobjectowner ' + [sysobjects].[name] + ', ' + @newOwner + CHAR(13) + CHAR(10) + 'GO'&lt;br /&gt;FROM [sysobjects] JOIN&lt;br /&gt; [sysusers] ON&lt;br /&gt; [sysusers].[uid] = [sysobjects].[uid]&lt;br /&gt;WHERE xtype IN ('p','v','u','fn','tf') AND&lt;br /&gt; [sysusers].[name] = @currentOwner&lt;br /&gt;ORDER BY [sysobjects].[name]&lt;br /&gt;&lt;br /&gt;Copy the Results of this query to a new query window and execute the query. Notice that the 'Go' statement is required for this to work properly, and we have to put it on it's own line. Char(13) and Char(10) make up a hard return in Windows. VB users may be familiar with vbCrLf which is the Visual Basic equivalent. It stands for Carriage Return and Line Feed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3763425011625331562?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3763425011625331562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2010/02/move-object-ownership-in-sql-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3763425011625331562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3763425011625331562'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2010/02/move-object-ownership-in-sql-server.html' title='Move object ownership in SQL Server using Automatic Script Creation Technique'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3611883424530092779</id><published>2010-01-12T11:19:00.000-08:00</published><updated>2010-01-12T11:28:48.584-08:00</updated><title type='text'>ADO.NET Connection Pooling in ASP.NET Applications and MAX connection</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Connection Pooling Basics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Opening a database connection is a resource intensive and time consuming operation. Connection pooling increases the performance of Web applications&lt;br /&gt;by reusing active database connections instead of creating a new connection with every request. Connection pool manager maintains a pool of open database connections. When a new connection requests come in, the pool manager checks if the pool contains any unused connections and returns one if available. If all connections currently in the pool are busy and the maximum pool size has not been reached, the new connection is created and added to the pool. When the pool reaches its maximum size all new connection requests are being queued up until a connection in the pool becomes available or the connection attempt times out.&lt;br /&gt;&lt;br /&gt;Connection pooling behavior is controlled by the connection string parameters. The following are four parameters that control most of the connection pooling behavior:&lt;br /&gt;&lt;br /&gt;    * &lt;span style="font-weight:bold;"&gt;Connect Timeout&lt;/span&gt; - controls the wait period in seconds when a new connection is requested, if this timeout expires, an exception will be thrown. Default is 15 seconds.&lt;br /&gt;    * &lt;span style="font-weight:bold;"&gt;Max Pool Size&lt;/span&gt; - specifies the maximum size of your connection pool. Default is 100. Most Web sites do not use more than 40 connections under the heaviest load but it depends on how long your database operations take to complete.&lt;br /&gt;    * &lt;span style="font-weight:bold;"&gt;Min Pool Size&lt;/span&gt; - initial number of connections that will be added to the pool upon its creation. Default is zero; however, you may chose to set this to a small number such as 5 if your application needs consistent response times even after it was idle for hours. In this case the first user requests won't have to wait for those database connections to establish.&lt;br /&gt;    * &lt;span style="font-weight:bold;"&gt;Pooling&lt;/span&gt; - controls if your connection pooling on or off. Default as you may've guessed is true. Read on to see when you may use Pooling=false setting. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Closing your connections&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you intend to close your database connection, you want to make sure that you are really closing it. The following code looks fine yet causes a connection leak:&lt;br /&gt;&lt;br /&gt;     SqlConnection conn = new SqlConnection(myConnectionString);&lt;br /&gt;      conn.Open();&lt;br /&gt;      doSomething();&lt;br /&gt;      conn.Close();                &lt;br /&gt;&lt;br /&gt;If doSomething() throws an exception - conn will never get explicitly closed. Here is how this can be corrected:&lt;br /&gt;&lt;br /&gt;     SqlConnection conn = new SqlConnection(myConnectionString);&lt;br /&gt;      try&lt;br /&gt;      {&lt;br /&gt;            conn.Open();&lt;br /&gt;            doSomething(conn);&lt;br /&gt;      }&lt;br /&gt;      finally{&lt;br /&gt;&lt;br /&gt;            conn.Close();               &lt;br /&gt;      }&lt;br /&gt;or&lt;br /&gt;     using (SqlConnection conn = new SqlConnection(myConnectionString))&lt;br /&gt;      {&lt;br /&gt;            conn.Open();&lt;br /&gt;            doSomething(conn);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;Did you notice that in the first example we called conn.Close() explicitly while in the second one we make the compiler generate an (implicit) call to conn.Dispose() immediately following the using block? The C# using block guarantees that the Dispose method is called on the subject of the using clause immediately after the block ends. Close and Dispose methods of Connection object are equivalent. Neither one gives you any specific advantages over the other.&lt;br /&gt;&lt;br /&gt;When returning a connection from a class method - make sure you cache it locally and call its Close method. The following code will leak a connection:&lt;br /&gt;&lt;br /&gt;OleDbCommand cmd new OleDbCommand(myUpdateQuery, getConnection());&lt;br /&gt;&lt;br /&gt;      intres = cmd.ExecuteNonQuery();&lt;br /&gt;     getConnection().Close(); &lt;br /&gt;// The connection returned from the first call to getConnection() is not being closed. Instead of closing your connection, this line creates a new one and tries to close it.&lt;br /&gt;&lt;br /&gt;If you use SqlDataReader, OleDbDataReader, etc., close them. Even though closing the connection itself seems to do the trick, put in the extra effort to close your data reader objects explicitly when you use them.&lt;br /&gt;&lt;br /&gt;Last but not the least, never Close or Dispose your connection or any other managed object in the class destructor or your Finalize method. This not only has no value in closing your connections but also interferes with the garbage collector and may cause errors&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3611883424530092779?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3611883424530092779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2010/01/adonet-connection-pooling-in-aspnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3611883424530092779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3611883424530092779'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2010/01/adonet-connection-pooling-in-aspnet.html' title='ADO.NET Connection Pooling in ASP.NET Applications and MAX connection'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-2294790293419697398</id><published>2010-01-06T14:15:00.000-08:00</published><updated>2010-01-06T14:21:48.850-08:00</updated><title type='text'>JavaScript inheritance</title><content type='html'>&lt;span style="font-weight:bold;"&gt;JavaScript inheritance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Function() is the class in JavaScript;  A new class “myobject” is declared as below&lt;br /&gt;&lt;br /&gt;      function myobject() {&lt;br /&gt;&lt;br /&gt;        this.containedValue = 0;&lt;br /&gt;&lt;br /&gt;        this.othercontainedValue = 0;&lt;br /&gt;&lt;br /&gt;        this.anothercontainedValue = 0;&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      And creating new object is simple OOP &lt;br /&gt;&lt;br /&gt;      var mything = new myobject(); &lt;br /&gt;&lt;br /&gt;      Now you can access myobject properties as &lt;br /&gt;&lt;br /&gt;      alert(Mything.containedValue); &lt;br /&gt;&lt;br /&gt;      Or change the value&lt;br /&gt;&lt;br /&gt;      Mything.containedValue=25;&lt;br /&gt;&lt;br /&gt;You could also now write this: &lt;br /&gt;myobject.prototype.newContainedValue = someValue;&lt;br /&gt;&lt;br /&gt;This will cause all instances of class myobject will have the property newContainedValue with value someValue.&lt;br /&gt;&lt;br /&gt;            Object with method (without using prototype)&lt;br /&gt;&lt;br /&gt;function mycircle(x,y,r) {&lt;br /&gt;&lt;br /&gt;  this.xcoord = x;&lt;br /&gt;&lt;br /&gt;  this.ycoord = y;&lt;br /&gt;&lt;br /&gt;  this.radius = r;&lt;br /&gt;&lt;br /&gt;  this.retArea = getTheArea; //see this has a reference to a method below.&lt;br /&gt;&lt;br /&gt;  //This next line uses an alternative syntax&lt;br /&gt;&lt;br /&gt;  this.retCirc = function () { return ( Math.PI * this.radius * 2 ); };&lt;br /&gt;&lt;br /&gt;  this.mvBy = mvCclBy;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getTheArea() {&lt;br /&gt;&lt;br /&gt;  return ( Math.PI * this.radius * this.radius );&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function mvCclBy(xDis,yDis) {&lt;br /&gt;&lt;br /&gt;  this.xcoord += xDis;&lt;br /&gt;&lt;br /&gt;  this.ycoord += yDis;&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;var testcircle = new mycircle(3,4,5);&lt;br /&gt;&lt;br /&gt;testcircle.mvBy(2,3); &lt;br /&gt;&lt;br /&gt;window.alert( 'The area of the circle is ' + testcircle.retArea() );&lt;br /&gt;&lt;br /&gt;window.alert( 'The circumference is ' + testcircle.retCirc() ); &lt;br /&gt;&lt;br /&gt;            Object with method (using prototype)&lt;br /&gt;&lt;br /&gt;function mycircle(x,y,r) {&lt;br /&gt;&lt;br /&gt;  this.xcoord = x;&lt;br /&gt;&lt;br /&gt;  this.ycoord = y;&lt;br /&gt;&lt;br /&gt;  this.radius = r;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Mycircle.prototype.getTheArea=new function() {&lt;br /&gt;&lt;br /&gt;  return ( Math.PI * this.radius * this.radius );&lt;br /&gt;&lt;br /&gt;}; //remember the; at the end &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub-classes and class inheritance&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To jump right into it, following is a sample showing inheritance between two classes:&lt;br /&gt;&lt;br /&gt;function Mammal(name){ &lt;br /&gt;&lt;br /&gt;      this.name=name;&lt;br /&gt;&lt;br /&gt;      this.offspring=[];&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;Mammal.prototype.haveABaby=function(){ &lt;br /&gt;&lt;br /&gt;      var newBaby=new Mammal("Baby "+this.name);&lt;br /&gt;&lt;br /&gt;      this.offspring.push(newBaby);&lt;br /&gt;&lt;br /&gt;      return newBaby;&lt;br /&gt;&lt;br /&gt;} ;&lt;br /&gt;&lt;br /&gt;Mammal.prototype.toString=function(){ &lt;br /&gt;&lt;br /&gt;      return '[Mammal "'+this.name+'"]';&lt;br /&gt;&lt;br /&gt;} ; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Cat.prototype = new Mammal();        // Here's where the inheritance occurs &lt;br /&gt;&lt;br /&gt;Cat.prototype.constructor=Cat;       // Otherwise instances of Cat would have a constructor of Mammal &lt;br /&gt;&lt;br /&gt;function Cat(name){ &lt;br /&gt;&lt;br /&gt;      this.name=name;&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;Cat.prototype.toString=function(){ &lt;br /&gt;&lt;br /&gt;      return '[Cat "'+this.name+'"]';&lt;br /&gt;&lt;br /&gt;}  &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;var someAnimal = new Mammal('Mr. Biggles');&lt;br /&gt;&lt;br /&gt;var myPet = new Cat('Felix');&lt;br /&gt;&lt;br /&gt;alert('someAnimal is '+someAnimal);   // results in 'someAnimal is [Mammal "Mr. Biggles"]' &lt;br /&gt;&lt;br /&gt;alert('myPet is '+myPet);             // results in 'myPet is [Cat "Felix"]'  &lt;br /&gt;&lt;br /&gt;myPet.haveABaby();                    // calls a method inherited from Mammal &lt;br /&gt;&lt;br /&gt;alert(myPet.offspring.length);        // shows that the cat has one baby now &lt;br /&gt;&lt;br /&gt;alert(myPet.offspring[0]);            // results in '[Mammal "Baby Felix"]' &lt;br /&gt;Using the .constructor property&lt;br /&gt;&lt;br /&gt;Look at the last line in the above example. The baby of a Cat should be a Cat, right? While the haveABaby() method worked, that method specifically asks to create a new Mammal. While we could make a new haveABaby() method for the Cat subclass like this.offspring.push(new Cat("Baby "+this.name)), it would be better to have the ancestor class make an object of the correct type.&lt;br /&gt;&lt;br /&gt;Every object instance in JS has a property named constructor that points to its parent class. For example, someAnimal.constructor==Mammmal is true. Armed with this knowledge, we can remake the haveABaby() method like this:&lt;br /&gt;&lt;br /&gt;Mammal.prototype.haveABaby=function(){ &lt;br /&gt;&lt;br /&gt;      var newBaby=new this.constructor("Baby "+this.name);&lt;br /&gt;&lt;br /&gt;      this.offspring.push(newBaby);&lt;br /&gt;&lt;br /&gt;      return newBaby;&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;myPet.haveABaby();                    // Same as before: calls the method inherited from Mammal &lt;br /&gt;&lt;br /&gt;alert(myPet.offspring[0]);            // Now results in '[Cat "Baby Felix"]' &lt;br /&gt;Calling 'super' methods&lt;br /&gt;&lt;br /&gt;Let's extend the example now so that when baby kittens are created, they 'mew' right after being born. To do this, we want to write our own custom Cat.prototype.haveABaby() method, which is able to call the original Mammal.prototype.haveABaby() method:&lt;br /&gt;&lt;br /&gt;Cat.prototype.haveABaby=function(){ &lt;br /&gt;&lt;br /&gt;      Mammal.prototype.haveABaby.call(this);&lt;br /&gt;&lt;br /&gt;      alert("mew!");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above may look a little bit bizarre. Javascript does not have any sort of 'super' property, which would point to its parent class. Instead, you use the call() method of a Function object, which allows you to run a function using a different object as context for it. If you needed to pass parameters to this function, they would go after the 'this'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-2294790293419697398?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/2294790293419697398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2010/01/javascript-inheritance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2294790293419697398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/2294790293419697398'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2010/01/javascript-inheritance.html' title='JavaScript inheritance'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5729232783081898824</id><published>2009-12-17T11:38:00.000-08:00</published><updated>2009-12-17T12:22:47.204-08:00</updated><title type='text'>Click event Does not work in FF</title><content type='html'>You have an HTML code like this&lt;br /&gt;&lt;br /&gt;a href="#" id="LinkClick" onclick="javascript:alert('test')" &gt;click me&lt;br /&gt;&lt;br /&gt;&lt;a href="#" id="LinkClick" onclick="javascript:alert('test')" &gt;click me&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;and you want to call click event using Javascript &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;var element=document.getElementById('LinkClick');&lt;br /&gt;element.click();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this approach works fine with IE, but with FF, it cannot recognize the .click method for some reason. &lt;br /&gt;&lt;br /&gt;The code below solves this issue.&lt;br /&gt;&lt;br /&gt;*********************************************************&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var ie = (navigator.appName.indexOf("Internet Explorer") !=-1) ? true: false;&lt;br /&gt;                if(!ie) //if it is FF .. add a new click event manually&lt;br /&gt;                {&lt;br /&gt;                   HTMLElement.prototype.click = function() &lt;br /&gt;                   {&lt;br /&gt;                        var evt = this.ownerDocument.createEvent('MouseEvents');&lt;br /&gt;                        evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);&lt;br /&gt;                        &lt;br /&gt;this.dispatchEvent(evt);&lt;br /&gt;                    } &lt;br /&gt;                }&lt;br /&gt;//now call the click event&lt;br /&gt;var element=document.getElementById('LinkClick')&lt;br /&gt;                element.click();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***********************************************************&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5729232783081898824?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5729232783081898824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/12/click-event-does-not-work-in-ff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5729232783081898824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5729232783081898824'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/12/click-event-does-not-work-in-ff.html' title='Click event Does not work in FF'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3206080289369306213</id><published>2009-12-09T10:32:00.000-08:00</published><updated>2009-12-09T10:53:46.059-08:00</updated><title type='text'>SQL Server Data Types and Their .NET Framework Equivalents</title><content type='html'>The following table lists Microsoft SQL Server data types, their equivalents in the common language runtime (CLR) for SQL Server in the System.Data.SqlTypes namespace, and their native CLR equivalents in the Microsoft .NET Framework.&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;SQL Server data type&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;CLR data type (SQL Server)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;CLR data type (.NET Framework)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;uniqueidentifier&lt;/td&gt;&lt;td&gt;SqlGuid&lt;/td&gt;&lt;td&gt;Guid&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;bit&lt;/td&gt;&lt;td&gt;SqlBoolean&lt;/td&gt;&lt;td&gt;Boolean&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;tinyint&lt;/td&gt;&lt;td&gt;SqlByte&lt;/td&gt;&lt;td&gt;Byte&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;smallint&lt;/td&gt;&lt;td&gt;SqlInt16&lt;/td&gt;&lt;td&gt;Int16&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;int&lt;/td&gt;&lt;td&gt;SqlInt32&lt;/td&gt;&lt;td&gt;Int32&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;bigint&lt;/td&gt;&lt;td&gt;SqlInt64&lt;/td&gt;&lt;td&gt;Int64&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;smallmoney&lt;/td&gt;&lt;td&gt;SqlMoney&lt;/td&gt;&lt;td&gt;Decimal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;money&lt;/td&gt;&lt;td&gt;SqlMoney&lt;/td&gt;&lt;td&gt;Decimal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;numeric&lt;/td&gt;&lt;td&gt;SqlDecimal&lt;/td&gt;&lt;td&gt;Decimal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;decimal&lt;/td&gt;&lt;td&gt;SqlDecimal&lt;/td&gt;&lt;td&gt;Decimal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;real&lt;/td&gt;&lt;td&gt;SqlSingle&lt;/td&gt;&lt;td&gt;Single&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;float&lt;/td&gt;&lt;td&gt;SqlDouble&lt;/td&gt;&lt;td&gt;Double&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;smalldatetime&lt;/td&gt;&lt;td&gt;SqlDateTime&lt;/td&gt;&lt;td&gt;DateTime&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;datetime&lt;/td&gt;&lt;td&gt;SqlDateTime&lt;/td&gt;&lt;td&gt;DateTime&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3206080289369306213?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3206080289369306213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/12/sql-server-data-types-and-their-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3206080289369306213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3206080289369306213'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/12/sql-server-data-types-and-their-net.html' title='SQL Server Data Types and Their .NET Framework Equivalents'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-4564515053279792107</id><published>2009-12-09T08:10:00.000-08:00</published><updated>2009-12-09T08:19:35.337-08:00</updated><title type='text'>Reading Web Config files while Unit testing</title><content type='html'>In setting up the testing of core module that need to read from web.config custom settings group.&lt;br /&gt;&lt;br /&gt;On my test project selected the properties page.&lt;br /&gt;&lt;br /&gt;Click on the settings tab:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-GyMBHkv9MQ/Sx_Lmy4wNqI/AAAAAAAAAAw/96C8j2Oe8nY/s1600-h/Settings+Setup+app+config+file.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://1.bp.blogspot.com/_-GyMBHkv9MQ/Sx_Lmy4wNqI/AAAAAAAAAAw/96C8j2Oe8nY/s320/Settings+Setup+app+config+file.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Click the link to auto generate a app.config file&lt;br /&gt;&lt;br /&gt;Open the app.config file to edit:&lt;br /&gt;Add the section group and type of System.Configuration.ClientSettingsSection&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-GyMBHkv9MQ/Sx_LxIS5iiI/AAAAAAAAAA4/j7g_KNsiVtI/s1600-h/SectionGroup+app.config.JPG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://3.bp.blogspot.com/_-GyMBHkv9MQ/Sx_LxIS5iiI/AAAAAAAAAA4/j7g_KNsiVtI/s320/SectionGroup+app.config.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And copy the web.config sections and the keys to the app.config. The application will now be able to read these values while testing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-4564515053279792107?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/4564515053279792107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/12/reading-web-config-files-while-unit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4564515053279792107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4564515053279792107'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/12/reading-web-config-files-while-unit.html' title='Reading Web Config files while Unit testing'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-GyMBHkv9MQ/Sx_Lmy4wNqI/AAAAAAAAAAw/96C8j2Oe8nY/s72-c/Settings+Setup+app+config+file.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1590125448573369865</id><published>2009-11-11T15:56:00.000-08:00</published><updated>2009-11-11T15:56:00.664-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista winsxs'/><title type='text'>Winsxs Problems</title><content type='html'>Wanted to upgrade my visual studio 2008 and ran into the problem of winsxs taking up all the space on my harddrive. Fortunately the physical drive was split in two. Instance of vista 64 was on partion&amp;nbsp;1 but was the c: drive. The partion&amp;nbsp;0 had the old OS which I don't use and had already copied off. So I used gPartion to merge the two partions. Forgetting that the boot record might be on D: it was.&lt;br /&gt;&lt;br /&gt;So the drive would not boot. I tried to use the Vista disk to recover bootmgr. The repair would not see the drive as bootable. Used the Vista install disk to locate bootsect it did under Boot. Still no luck. &lt;br /&gt;&lt;br /&gt;Finally realized&amp;nbsp; that the drive was not marked as a system drive. So using &lt;a href="http://www.online-tech-tips.com/computer-tips/set-active-partition-vista-xp/"&gt;DISKPART&lt;/a&gt;&amp;nbsp;on the install disk to set the active partion. Reboot. Set bootsect again then run the repair on the start disk which rewrote the bootmgr. &lt;br /&gt;&lt;br /&gt;System boots now and I can log in. Ran chkdisk on start up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1590125448573369865?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1590125448573369865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/11/winsxs-problems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1590125448573369865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1590125448573369865'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/11/winsxs-problems.html' title='Winsxs Problems'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1511408995914138625</id><published>2009-11-08T15:11:00.000-08:00</published><updated>2009-11-09T07:07:35.117-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bing'/><category scheme='http://www.blogger.com/atom/ns#' term='Prism 2'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight Prism V2</title><content type='html'>Worked thru the SilverLight Prism v2 demo for &lt;a href="http://channel9.msdn.com/posts/akMSFT/Creating-a-modular-application-using-Prism-v2-Screencast-44--Decoupled-Communication/"&gt;news aggreator&lt;/a&gt;. &lt;br /&gt;Extended it with a searh of Bing news.&lt;br /&gt;&lt;br /&gt;First sign up for a Bing&amp;nbsp; API ID&lt;br /&gt;&lt;br /&gt;Add new project :&lt;br /&gt;Add class for Bing new;&lt;br /&gt;&lt;br /&gt;namespace NewsAggregator.Bing&lt;br /&gt;{&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Defines the properties in Bing search result&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;public class Bing&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Title {get;set;}&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Uri HrefLink {get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Source {get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Snippet {get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DateTime StoryDate {get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public bool Breaking {get;set;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Add Class&lt;/strong&gt; for the Bing Module that inherits from IModule of Microsoft.Practices.Composite.Modularity&lt;br /&gt;&lt;br /&gt;namespace NewsAggregator.Bing&lt;br /&gt;{&lt;br /&gt;public class BingModule : IModule&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;IUnityContainer _container;&lt;br /&gt;IRegionManager _regionManager;&lt;br /&gt;&lt;br /&gt;public BingModule(IUnityContainer container, IRegionManager regionManger)&lt;br /&gt;{&lt;br /&gt;_container = container;&lt;br /&gt;_regionManager = regionManger;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void Initialize()&lt;br /&gt;{&lt;br /&gt;_container.RegisterType&amp;lt;IBingService, BingService&amp;gt;(new ContainerControlledLifetimeManager());&lt;br /&gt;_regionManager.RegisterViewWithRegion("ResultsRegion", typeof(BingSearchResultsView));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Add User Control BingSearchResultView&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;namespace NewsAggregator.Bing&lt;br /&gt;{&lt;br /&gt;public partial class BingSearchResultsView : UserControl&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public BingSearchResultsView(BingSearchResultsViewModel model)&lt;br /&gt;{&lt;br /&gt;InitializeComponent();&lt;br /&gt;DataContext = model;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;The Xaml should have a Title Text box and snippet text box Bind them to the corresponding property.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ListBox x:Name="BingList" Style="{StaticResource BingList}" ItemsSource="{Binding Bings}"&amp;gt;&lt;br /&gt;&amp;lt;ListBox.ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;&amp;lt;StackPanel Orientation="Horizontal"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;TextBlock Text="{Binding Title}" Margin="5" Style="{StaticResource TitleBlock}"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;TextBlock Text="{Binding Snippet}" Margin="3" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Line Stroke="DarkOrchid" Width="300"&amp;gt;&amp;lt;/Line&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;HyperlinkButton NavigateUri="{Binding Source}" Content="{Binding Title}" TargetName="_new"&amp;gt;&amp;lt;/HyperlinkButton&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/StackPanel&amp;gt;&lt;br /&gt;&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;&amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;/ListBox&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Grid &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Add Class BingService&lt;/strong&gt; inherits from IBingService interface&lt;br /&gt;&lt;br /&gt;namespace NewsAggregator.Bing&lt;br /&gt;{&lt;br /&gt;public class BingService : IBingService&lt;br /&gt;{&lt;br /&gt;string ApiID = "Insert your API ID here";&lt;br /&gt;XNamespace ns = &lt;a href="http://schemas.microsoft.com/LiveSearch/2008/04/XML/news"&gt;http://schemas.microsoft.com/LiveSearch/2008/04/XML/news&lt;/a&gt;;&lt;br /&gt;#region IBingService Members&lt;br /&gt;&lt;br /&gt;public void BeginSearch(string searchQuery, Action&amp;lt;System.Collections.Generic.IEnumerable&amp;lt;Bing&amp;gt;&amp;gt; SearchCompleteCallback)&lt;br /&gt;{&lt;br /&gt;WebClient BingClient = new WebClient();&lt;br /&gt;&lt;br /&gt;Uri BingUri = new Uri(string.Format("http://api.search.live.net/xml.aspx?Appid={0}&amp;amp;query={1}&amp;amp;sources=news", ApiID, searchQuery));&lt;br /&gt;&lt;br /&gt;BingClient.DownloadStringCompleted += (sender, e) =&amp;gt; SearchCompleteCallback(BuildList(e));&lt;br /&gt;&lt;br /&gt;BingClient.DownloadStringAsync(BingUri);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private IEnumerable&amp;lt;Bing&amp;gt; BuildList(DownloadStringCompletedEventArgs e)&lt;br /&gt;{&lt;br /&gt;if (e.Error != null)&lt;br /&gt;{&lt;br /&gt;return new List&amp;lt;Bing&amp;gt;() { new Bing() { Title = e.Error.InnerException.Message } };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;XDocument xmlResults = XDocument.Parse(e.Result);&lt;br /&gt;&lt;br /&gt;var newBings = from elem in xmlResults.Descendants(ns + "NewsResult")&lt;br /&gt;select new Bing()&lt;br /&gt;{&lt;br /&gt;Title = ((string)elem.Element(ns + "Title")).Trim(),&lt;br /&gt;HrefLink = new Uri(((string)elem.Element(ns + "Url")).Trim()),&lt;br /&gt;Source = ((string)elem.Element(ns + "Source")).Trim(),&lt;br /&gt;Snippet = ((string)elem.Element(ns + "Snippet")).Trim(),&lt;br /&gt;StoryDate = DateTime.Now,&lt;br /&gt;Breaking = false,&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;return newBings;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#endregion&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;namespace NewsAggregator.Bing &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public interface IBingService&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;void BeginSearch(string searchQuery, Action&amp;lt;IEnumerable&amp;lt;Bing&amp;gt;&amp;gt; SearchCompleteCallback);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;The Interface BingService&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;namespace NewsAggregator.Bing &lt;br /&gt;{&lt;br /&gt;public interface IBingService&lt;br /&gt;{&lt;br /&gt;void BeginSearch(string searchQuery, Action&amp;lt;IEnumerable&amp;lt;Bing&amp;gt;&amp;gt; SearchCompleteCallback);&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1511408995914138625?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1511408995914138625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/11/silverlight-prism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1511408995914138625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1511408995914138625'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/11/silverlight-prism.html' title='Silverlight Prism V2'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-773006888154009861</id><published>2009-11-05T11:42:00.001-08:00</published><updated>2009-11-05T11:42:49.220-08:00</updated><title type='text'>JAD (JAva Decompiler)</title><content type='html'>Jad (JAva Decompiler) is a decompiler for the Java programming language. Jad provides a command-line user interface to extract source code from class files. A graphical user interface for Jad is JadClipse which is a plugin to the Eclipse IDE.&lt;br /&gt;&lt;br /&gt;The domain name used by the official website expired on 02/25/2009.&lt;br /&gt;&lt;br /&gt;The most recent version of JAD says it supports only Java versions 45.3, 46.0 and 47.0, not Java 5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-773006888154009861?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/773006888154009861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/11/jad-java-decompiler.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/773006888154009861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/773006888154009861'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/11/jad-java-decompiler.html' title='JAD (JAva Decompiler)'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-1781042593380564225</id><published>2009-11-03T10:06:00.000-08:00</published><updated>2009-11-03T10:19:47.129-08:00</updated><title type='text'>What's new in IE 8: DOM Storage</title><content type='html'>When you store information for a particular user, it is customary to use either cookies for prolonged storage, or session variables to short-term.  In HTML 5 this is a feature called DOM Storage and makes it possible to store information in a different way.  Cookies can eg be 4 kb or a maximum of 20 values, but with DOM Storage you can store up to 10MB on the client, making it possible to store information other than in the past have been able to do. &lt;br /&gt;&lt;br /&gt;It is just like the past to save the session or permanently. For the session so used Session Storage and more permanent local storage. They have the same methods, but only stores information in different ways.. All information is stored as strings, so we want to use such dates or different types of speech, we must typa of variables before use.&lt;br /&gt;&lt;br /&gt;Storage object contains these methods: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     * Clear: Removes all values from a storage-object. &lt;br /&gt;     * GetItem: Retrieving the value of the current key. &lt;br /&gt;     * SetItem: Sets a value for the current key. &lt;br /&gt;     * RemoveItem :Removes the value with the current key. &lt;br /&gt;     * Key:  Returns the key for that particular index. R&lt;br /&gt;     * Length:Retrieving the number of values that are saved. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Both the Local Storage and Session Storage can use these methods. &lt;br /&gt;&lt;br /&gt;To use these, we can bring value directly on the object: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;  localStorage.firstname = 'Michael'; &lt;br /&gt;alert (localStorage.firstName);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This shows an alert box with "Michael". This shows an alert box with "Michael".&lt;br /&gt;&lt;br /&gt;Do we want to remove this particular value, we can then use the removeItem: &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;localStorage.removeItem ( 'firstname');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thus, we can in a very simple way to store large amounts of data, in a manner reminiscent of cookies and session variables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-1781042593380564225?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/1781042593380564225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/11/whats-new-in-ie-8-dom-storage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1781042593380564225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/1781042593380564225'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/11/whats-new-in-ie-8-dom-storage.html' title='What&apos;s new in IE 8: DOM Storage'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-9013542927679052216</id><published>2009-10-30T14:03:00.000-07:00</published><updated>2009-10-30T14:06:33.799-07:00</updated><title type='text'>Halloween 2009</title><content type='html'>Halloween potluck 2009 @ Topia Technology&lt;br /&gt;&lt;a href="http://deepakdhakal.com/page/Halloween-2009-%28-Topia-Technology-%29.aspx"&gt;&lt;br /&gt;Halloween potluck 2009 @ Topia Technology&lt;/a&gt;&lt;br /&gt;&lt;/br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-9013542927679052216?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://deepakdhakal.com/page/Halloween-2009-%28-Topia-Technology-%29.aspx' title='Halloween 2009'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/9013542927679052216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/halloween-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/9013542927679052216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/9013542927679052216'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/halloween-2009.html' title='Halloween 2009'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3677279999404292373</id><published>2009-10-29T10:18:00.000-07:00</published><updated>2009-10-29T10:18:27.352-07:00</updated><title type='text'>Flex Resources Event Listner clean up</title><content type='html'>When using addEventListener, set useWeakReference=true.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Objects should be eligible for GC if the only active reference is an event listener.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3677279999404292373?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3677279999404292373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/flex-resources-event-listner-clean-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3677279999404292373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3677279999404292373'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/flex-resources-event-listner-clean-up.html' title='Flex Resources Event Listner clean up'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-6104789404642844009</id><published>2009-10-26T11:14:00.000-07:00</published><updated>2009-10-27T09:57:41.214-07:00</updated><title type='text'>Web addresses may adopt non-English characters</title><content type='html'>&lt;div class="postBody"&gt; &lt;p&gt;The Internet may be getting friendlier for a significant chunk of the world. A proposal is up for a vote to let Web addresses use non-English characters.&lt;/p&gt; &lt;p&gt;&lt;!-- photo --&gt; &lt;/p&gt;&lt;div style="margin: 10px; font-family: verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; float: right;"&gt; &lt;img src="http://i.i.com.com/cnwk.1d/i/ne/pg/fd_2008/121908_traffic.jpg" style="border: 0px solid rgb(0, 0, 0);" border="0" height="138" width="184" /&gt; &lt;/div&gt; &lt;!-- end photo --&gt;  &lt;p&gt;The &lt;a href="http://www.icann.org/en/topics/idn/fast-track/idn-cctld-implementation-plan-30sep09-en.pdf"&gt;proposed change&lt;/a&gt; (PDF), known as Internationalized Domain Names (IDNs), will allow the use of non-Latin characters in the entire address. Currently, such characters are allowed only in part of the address. IDNs will let people who write in Chinese, Korean, or Arabic use their own languages to surf the Web, and is expected to jump-start Internet use in many regions across the globe.&lt;/p&gt; &lt;p&gt;ICANN, the Internet Corporation for Assigned Names and Numbers, which is responsible for managing domain names on the Net, will review the historic, hot-button proposal on Friday at its six-day 36th International Public Meeting in Seoul. If approved, IDNs could kick in as early as mid-2010.&lt;/p&gt; &lt;p&gt;"This is an extremely important meeting for ICANN, since the IDN program is moving one step closer to reshaping the global Internet landscape," ICANN CEO Rod Beckstrom said in a statement. "In Seoul, we plan to move forward to the next step in the internationalization of the Internet, which means that eventually people from every corner of the globe will be able to navigate much of the online world using their native language scripts."&lt;/p&gt; &lt;p&gt;&lt;a href="http://news.cnet.com/Foreign-domain-names-face-compatibility-hurdle/2010-1071_3-281343.html"&gt;IDNs&lt;/a&gt; are not a new concept. They've been debated for at least a decade. Some doubted whether such a system could work. But countries like &lt;a href="http://news.cnet.com/Is-the-Internet-truly-global/2010-1038_3-5491681.html"&gt;China&lt;/a&gt; have taken the lead in pushing for this change.&lt;/p&gt; &lt;p&gt;Of the 1.6 billion Internet users worldwide, more than half use languages with character sets other than Latin. Beckstrom sees the change as necessary, not just now, but for the future as Internet use continues to grow.&lt;/p&gt; &lt;p&gt;One of the challenges behind IDNs has been the use of translation technology to convert one character set to another to deliver the right address. But ICANN seems to have covered that base.&lt;/p&gt; &lt;p&gt;"We're confident that it works because we've been testing it now for a couple of years," Peter Dengate Thrush, chairman of ICANN's board, said in a statement. "And so we're really ready to start rolling it out."&lt;/p&gt;&lt;p&gt;src: http://news.cnet.com/8301-1023_3-10382873-93.html&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-6104789404642844009?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://news.cnet.com/8301-1023_3-10382873-93.html' title='Web addresses may adopt non-English characters'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/6104789404642844009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/web-addresses-may-adopt-non-english.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6104789404642844009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/6104789404642844009'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/web-addresses-may-adopt-non-english.html' title='Web addresses may adopt non-English characters'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3569311468996291755</id><published>2009-10-26T08:13:00.000-07:00</published><updated>2009-10-26T08:14:47.837-07:00</updated><title type='text'>Adobe launches BrowserLab...</title><content type='html'>Adobe launches BrowserLab...&lt;br /&gt;&lt;br /&gt;Adobe launched a free site recently named BrowserLab. It renders webpages in various browsers, for a side-by-side comparison, without having all of the browsers installed on your machine.&lt;br /&gt;&lt;br /&gt;The rendered pages are just images, so you can not test how a page functions by clicking links or buttons, but it is a good tool to compare CSS and get that tightened down.&lt;br /&gt;&lt;br /&gt;You need to sign up for an account, but it is free to use.&lt;br /&gt;It includes all the browsers BIS supports, including IE6 and Mac browsers.&lt;br /&gt;&lt;br /&gt;Check it out...&lt;br /&gt;https://browserlab.adobe.com/index.html#&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3569311468996291755?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://browserlab.adobe.com/index.html#' title='Adobe launches BrowserLab...'/><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3569311468996291755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/adobe-launches-browserlab.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3569311468996291755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3569311468996291755'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/adobe-launches-browserlab.html' title='Adobe launches BrowserLab...'/><author><name>Rick Cook</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_GzlclC5XIyU/SuX2hGeQR7I/AAAAAAAAAAM/sZQ9vSc8z9E/S220/skate.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-257846913920022954</id><published>2009-10-19T11:09:00.000-07:00</published><updated>2009-10-19T11:10:33.131-07:00</updated><title type='text'>Flex: Mouse Move Event and Slow Rendering</title><content type='html'>&lt;p&gt;&lt;span style="font-size: small;"&gt;In flex, if you using Mouse move event to redraw anything .. You might have experienced very slow rendering . &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;eg:&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt; this.addEventListener(MouseEvent.MOUSE_MOVE, redraw);&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;and&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;   &lt;em&gt; public function redraw(anything:Object=null):void{&lt;br /&gt;            //draw something here&lt;br /&gt;                this.graphics.clear();&lt;br /&gt;                this.graphics.lineStyle(3, 0x000000);&lt;br /&gt;                this.graphics.moveTo(startPoint.x, startPoint.y);&lt;br /&gt;                this.graphics.lineTo(endPoint.x, endPoint.y);&lt;br /&gt;                this.scaleTextInput.x = centerPoint.x;&lt;br /&gt;                this.scaleTextInput.y = centerPoint.y;&lt;br /&gt;           &lt;br /&gt;        }&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;The Above code results very slow rendering ... &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;Solution:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;Use Event.ENTER_FRAME event instead? Although more resource intensive than the mouse move event, you should receive considerably more updates per second, allowing the mouse to appear more responsive to the user:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;Eg:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;em&gt;&lt;strong&gt;this.addEventListener(Event.ENTER_FRAME, redraw); &lt;/strong&gt;&lt;/em&gt;  instead of &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;this.addEventListener(MouseEvent.MOUSE_MOVE, redraw);&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt; &lt;span style="font-size: small;"&gt;and You are good to go&lt;/span&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt; ..&lt;/strong&gt;Happy Flexing &lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-257846913920022954?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/257846913920022954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/flex-mouse-move-event-and-slow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/257846913920022954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/257846913920022954'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/flex-mouse-move-event-and-slow.html' title='Flex: Mouse Move Event and Slow Rendering'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-4970212491430387471</id><published>2009-10-19T11:07:00.001-07:00</published><updated>2009-10-19T11:08:00.629-07:00</updated><title type='text'>Generating long, high-quality random passwords is not simple. So here is some totally random raw material, generated password</title><content type='html'>&lt;p style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family: Verdana,Arial,Helvetica,Sans-Serif,MS Sans Serif; font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;Generating long, high-quality random passwords is&lt;br /&gt;not simple.  So here is some totally random raw&lt;br /&gt;material, generated just for &lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;YOU&lt;/span&gt;&lt;/strong&gt;, to start with.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family: Verdana,Arial,Helvetica,Sans-Serif,MS Sans Serif; font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;go to &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family: Verdana,Arial,Helvetica,Sans-Serif,MS Sans Serif; font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;https://www.grc.com/passwords.htm&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-4970212491430387471?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/4970212491430387471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/generating-long-high-quality-random.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4970212491430387471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4970212491430387471'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/generating-long-high-quality-random.html' title='Generating long, high-quality random passwords is not simple. So here is some totally random raw material, generated password'/><author><name>Deepak Dhakal</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-3909899485739238811</id><published>2009-10-16T11:02:00.000-07:00</published><updated>2009-10-16T11:02:58.177-07:00</updated><title type='text'>SQL Reporting Services Parameter sniffing</title><content type='html'>If your Stored procedure runs fast in SQL server management studio but takes forever to run from Visual studio while using Reporting Services. Then you are the victim of “Parameter Sniffing” Problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Original query:&lt;br /&gt;&lt;br /&gt;create proc newProc&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;@name varchar(200)&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;as&lt;br /&gt;&lt;br /&gt;select name from nametable where name=@name .. &lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;Don’t use stored procedure parameter directly to the Query:&lt;br /&gt;&lt;br /&gt;Create a local variable with same type and assign parameter to that variable.&lt;br /&gt;&lt;br /&gt;create proc newProc &lt;br /&gt;{&lt;br /&gt;@name varchar(200)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@declare @newName varchar(200)&lt;br /&gt;&lt;br /&gt;set @newname=@name&lt;br /&gt;&lt;br /&gt;as&lt;br /&gt;&lt;br /&gt;select name from nametable where name=@newname &lt;br /&gt;&lt;br /&gt;go&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-3909899485739238811?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/3909899485739238811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/sql-reporting-services-parameter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3909899485739238811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/3909899485739238811'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/sql-reporting-services-parameter.html' title='SQL Reporting Services Parameter sniffing'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-5133934886007459264</id><published>2009-10-16T10:36:00.000-07:00</published><updated>2009-10-16T10:40:05.030-07:00</updated><title type='text'>To Box Or Not To Box</title><content type='html'>&lt;p&gt;Boxing is a term that means that a copy of a value type is stored in the managed heap and the address is assigned to an object as a reference type. Boxed values do not reference the original values and are therefore deep copies, so to speak.&lt;/p&gt;&lt;p&gt;Unboxing is a term that means the object is dereferenced and the value is stored on the stack (for local variables). Thereby reversing the boxing that occurred.&lt;/p&gt;&lt;p&gt;This type of behavior is handled by the compiler and can be noticeably slower on large or numerous collections. Passing a value type to a function that takes an object can create the boxing effect.&lt;/p&gt;&lt;p&gt;So, in fact, boxing is not necessarily a planned action on the part of the programmer.&lt;/p&gt;&lt;p&gt;Incidentally, in Generics, it is possible to avoid boxing in many cases that would not have been forthright before.&lt;/p&gt;&lt;p&gt;Case in point, take a look at this code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;List&amp;lt;int&amp;gt; intList = new List&amp;lt;int&amp;gt;();&lt;br /&gt;intList.Add(3);&lt;br /&gt;Console.WriteLine(intList[0]);&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;ArrayList arrayList = new ArrayList();&lt;br /&gt;arrayList.Add(3);&lt;br /&gt;Console.WriteLine((int)arrayList[0]);&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Here’s the MSIL code equivalent:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;IL_0000: nop&lt;br /&gt;IL_0001: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor()&lt;br /&gt;IL_0006: stloc.0&lt;br /&gt;IL_0007: ldloc.0&lt;br /&gt;IL_0008: ldc.i4.3&lt;br /&gt;IL_0009: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0)&lt;br /&gt;IL_000e: nop&lt;br /&gt;IL_000f: ldloc.0&lt;br /&gt;IL_0010: ldc.i4.0&lt;br /&gt;IL_0011: callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1::get_Item(int32)&lt;br /&gt;IL_0016: call void [mscorlib]System.Console::WriteLine(int32)&lt;br /&gt;IL_001b: nop&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;IL_001c: newobj instance void [mscorlib]System.Collections.ArrayList::.ctor()&lt;br /&gt;IL_0021: stloc.1&lt;br /&gt;IL_0022: ldloc.1&lt;br /&gt;IL_0023: ldc.i4.3&lt;br /&gt;IL_0024: box [mscorlib]System.Int32&lt;br /&gt;IL_0029: callvirt instance int32 [mscorlib]System.Collections.ArrayList::Add(object)&lt;br /&gt;IL_002e: pop&lt;br /&gt;IL_002f: ldloc.1&lt;br /&gt;IL_0030: ldc.i4.0&lt;br /&gt;IL_0031: callvirt instance object [mscorlib]System.Collections.ArrayList::get_Item(int32)&lt;br /&gt;IL_0036: unbox.any [mscorlib]System.Int32&lt;br /&gt;IL_003b: call void [mscorlib]System.Console::WriteLine(int32)&lt;br /&gt;IL_0040: nop&lt;br /&gt;IL_0041: ret&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Notice the difference for the generic list that uses int in that it does not use box/unbox in the MSIL code, whereas the generic list that uses object does (IL_0024 &amp;amp; IL_0036).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-5133934886007459264?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/5133934886007459264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/to-box-or-not-to-box.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5133934886007459264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/5133934886007459264'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/to-box-or-not-to-box.html' title='To Box Or Not To Box'/><author><name>TMayfield</name><uri>http://www.blogger.com/profile/10531695844063825314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1140432460927692102.post-4023996057766221263</id><published>2009-10-16T09:43:00.000-07:00</published><updated>2009-10-16T10:27:43.561-07:00</updated><title type='text'>BISC dev team thoughts</title><content type='html'>This a simple resource for our Dev team to share our hard learned knowledge with each other and the world.&lt;br /&gt;&lt;br /&gt;The devs include Deepak, Pat, Rick, Scott and Tim each will be posting thought tips and tricks we've gleened from our daily work producing Web applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1140432460927692102-4023996057766221263?l=biscminds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biscminds.blogspot.com/feeds/4023996057766221263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biscminds.blogspot.com/2009/10/bisc-dev-team-thoughts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4023996057766221263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1140432460927692102/posts/default/4023996057766221263'/><link rel='alternate' type='text/html' href='http://biscminds.blogspot.com/2009/10/bisc-dev-team-thoughts.html' title='BISC dev team thoughts'/><author><name>BISC Dev Team</name><uri>http://www.blogger.com/profile/04237698947486526991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
