<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>web_based</title>
  <link>https://web-based.dreamwidth.org/</link>
  <description>web_based - Dreamwidth Studios</description>
  <lastBuildDate>Tue, 20 Apr 2010 22:13:41 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>web_based</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/425915/479087</url>
    <title>web_based</title>
    <link>https://web-based.dreamwidth.org/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/7641.html</guid>
  <pubDate>Tue, 20 Apr 2010 22:13:41 GMT</pubDate>
  <title>Interacting with video with HTML 5 VIDEO and CANVAS tags</title>
  <link>https://web-based.dreamwidth.org/7641.html</link>
  <description>We&apos;ve got HTML 5 on the brain these days!  Check out Sean Christman&apos;s awesome demos of interacting with videos via the HTML 5 VIDEO and CANVAS tags: &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/&quot;&gt;http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=7641&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/7641.html</comments>
  <category>canvas tag</category>
  <category>html 5</category>
  <category>javascript</category>
  <category>the awesome people i work with</category>
  <category>video tag</category>
  <category>blogs</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/7397.html</guid>
  <pubDate>Tue, 20 Apr 2010 22:00:48 GMT</pubDate>
  <title>HTML 5 Data Storage and Offline Applications</title>
  <link>https://web-based.dreamwidth.org/7397.html</link>
  <description>The HTML 5 specification has a lot of new features. I just did a presentation on the data storage and offline application features:  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.apeiros.com/lj/presentation.zip&quot; title=&quot;Click to download presentation (ZIP file)&quot;&gt;&lt;img src=&quot;http://www.apeiros.com/lj/graphics/html-5-presentation-icon.png&quot; alt=&quot;First slide (click to download entire presentation in ZIP format)&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I used Eric Meyer&apos;s &lt;a href=&quot;http://meyerweb.com/eric/tools/s5/&quot;&gt;S5 presentation system&lt;/a&gt;, to which I spliced in &lt;a href=&quot;http://jqueryui.com/&quot;&gt;jQuery UI transitions&lt;/a&gt; and a mobile stylesheet.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=7397&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/7397.html</comments>
  <category>presentation</category>
  <category>html 5</category>
  <category>jquery ui</category>
  <category>javascript</category>
  <category>offline applications</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/7057.html</guid>
  <pubDate>Thu, 08 Apr 2010 18:12:52 GMT</pubDate>
  <title>The new &amp;INPUT</title>
  <link>https://web-based.dreamwidth.org/7057.html</link>
  <description>Many moons ago I got my first home computer: an Apple ][c.  Included with my shiny new Apple were a set of disks with demos, guides, and utilities, many of which were written in AppleSoft BASIC.  The interactive capabilities of BASIC were pretty rudimentary, and on these disks there were BASIC programs that seemed to be doing more.&lt;br /&gt;&lt;br /&gt;So I took a look at the source code for these programs and lo and behold, Apple had built themselves library of custom BASIC commands that were tied to the &amp; character (so instead of using INPUT they would use &amp;INPUT and so on).  This custom library was a simple binary file, and if you loaded that file into memory you could use the nifty new commands in your own programs.  This added a lot of polish to what were otherwise simple BASIC programs.  Other programmers learned about this, and soon many libraries were available with custom BASIC commands. &lt;br /&gt;&lt;br /&gt;Fast forward to today.  Apple has just released their iPad.  The iPad comes with a Safari bookmark for the User Guide, which opens as a web application in Safari.  And like the old disks included with the ][c, this guide seems to do some pretty amazing things for something done entirely in HTML, CSS, and JavaScript.&lt;br /&gt;&lt;br /&gt;Turns out that once again Apple built themselves a custom JavaScript library for this app, and someone has already found it:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://almost.done21.com/2010/04/adlib-apples-secret-ipad-web-framework/&quot;&gt;http://almost.done21.com/2010/04/adlib-apples-secret-ipad-web-framework/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope Apple will release this library for public use.  It would be awesome.  Even if they don&apos;t, like the old BASIC library this new library shows what&apos;s possible.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=7057&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/7057.html</comments>
  <category>javascript</category>
  <category>amnesia lane</category>
  <category>apple</category>
  <category>ipad</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/6680.html</guid>
  <pubDate>Fri, 02 Apr 2010 15:23:31 GMT</pubDate>
  <title>Our first iPad app!</title>
  <link>https://web-based.dreamwidth.org/6680.html</link>
  <description>Today we launched &lt;a href=&quot;http://www.ideateapp.com/&quot;&gt;Ideate&lt;/a&gt;, our first iPad application.  It&apos;s a digital sketchbook with templates, custom pens, and sharing capabilities.  It&apos;s almost enough to make me want an iPad.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href=&quot;http://www.ideateapp.com/blog/&quot;&gt;the Ideate blog&lt;/a&gt; too.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=6680&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/6680.html</comments>
  <category>ideate app</category>
  <category>ipad</category>
  <category>effectiveui</category>
  <lj:music>Love and Rockets - Welcome Tomorrow</lj:music>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/6417.html</guid>
  <pubDate>Thu, 01 Apr 2010 16:23:29 GMT</pubDate>
  <title>Happy Birthday</title>
  <link>https://web-based.dreamwidth.org/6417.html</link>
  <description>Happy 5th Birthday, &lt;a href=&quot;http://www.effectiveui.com/&quot;&gt;EffectiveUI&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=6417&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/6417.html</comments>
  <category>that which is awesome</category>
  <category>effectiveui</category>
  <lj:music>Bob Marley &amp; The Wailers - Jamming</lj:music>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/6198.html</guid>
  <pubDate>Fri, 19 Mar 2010 17:08:29 GMT</pubDate>
  <title>More EUI in the news</title>
  <link>https://web-based.dreamwidth.org/6198.html</link>
  <description>On top of our success at SXSW, Peyton and Rebecca were interviewed by Vidya Drego for &lt;a href=&quot;http://blogs.forrester.com/vidya_drego/10-03-18-qagency_effectiveui&quot;&gt;Q&amp;Agency&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My favorite quote is where Peyton says, “We get developers involved out of the gate and they put as much thought into the solution as designers do. We don’t believe that designers own the great ideas and developers just execute them.”  That is one of the most important aspects of EffectiveUI for me, and I’m happy that it’s a principle that starts at the top.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=6198&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/6198.html</comments>
  <category>that which is awesome</category>
  <category>effectiveui</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/6066.html</guid>
  <pubDate>Mon, 15 Mar 2010 06:02:07 GMT</pubDate>
  <title>Dealing with Hidden Complexities</title>
  <link>https://web-based.dreamwidth.org/6066.html</link>
  <description>The other day I had a conflict with a colleague.  (I always tell people, when you gather together smart people who are really good at what they do and passionate about their work, there&amp;rsquo;s going to be conflicts.  This is actually a good thing; I know I wouldn&amp;rsquo;t be nearly as good at what I do if it weren&amp;rsquo;t for being pushed out of my comfort zones.)  The topic of the conflict wasn&amp;rsquo;t all that uncommon: she was advocating for great user interaction--which is what we are known for--and I was pushing back because I was worried about the aggressive development timeline which didn&apos;t leave any room for recreating complex interactions and designs.  And I was frustrated because I didn&amp;rsquo;t have a way of quantifying my concerns in a meaningful way for her.&lt;br /&gt;&lt;br /&gt;Ordinarily, my team is committed to taking the awesome interaction and graphic designs that our colleagues create and reproducing them exactly in browsers.  About the only time we&amp;rsquo;ll usually push back is if there&amp;rsquo;s something the technologies simply can&amp;rsquo;t do, such as an issue with an older browser or something.  Generally speaking, we can build just about any interaction or graphic design given to us, assuming we have enough time.  And that was my worry here: not enough time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Down the Rabbit Hole&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In this case my main concern was &lt;em&gt;hidden complexities.&lt;/em&gt;  Even having done this sort of work for the better part of fifteen years, I&amp;rsquo;m still regularly caught off-guard by having something that sounds simple turn out to be a 40-hour job--40 hours that you didn&amp;rsquo;t plan for and have to come at the expense of something else.&lt;br /&gt;&lt;br /&gt;HTML RIAs are particularly vulnerable to hidden complexities because the technologies involved (HTML, CSS, and JavaScript) are designed for fairly specific capabilities, and modern interaction and graphic design push those technologies to their limits. The more the technologies are pushed, the more brittle the solutions become and the more rabbit holes appear.&lt;br /&gt;&lt;br /&gt;What&amp;rsquo;s worse, spotting these rabbit holes in advance is particularly hard to do, especially when approaching the problem from a design point of view.  That&amp;rsquo;s what makes it so hard to quantify these issues in a meaningful way, especially when providing project estimates.  It&amp;rsquo;s sort of a vicious cycle.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Uncovering the Complexities&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One of the ways to mitigate the risk of hidden complexities is to be aware of the situations where they are most common.  And really, there are only a few:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Customizing the Appearance of Form Fields&lt;/strong&gt;  Let&amp;rsquo;s face it, the default quality of the user interaction in standard HTML forms isn&amp;rsquo;t exactly stellar, and the problem has only grown worse as users have become used to more sophisticated interactions. And there&amp;rsquo;s not a graphic designer in the world who likes the default appearance of HTML form fields.  They want rounded edges, and background gradients, and graphics inside of dropdowns and select boxes.&lt;br /&gt;&lt;br /&gt;So you would expect use to have awesome control over the appearance of form fields using CSS, right?  Wrong.  CSS control over form fields is wonky at best.  From browser to browser, from platform to platform, the same CSS rule will have varying effects on form fields.  This is because of incomplete CSS specifications on the topic, which left CSS control of form fields up to the individual browser manufacturers, which in turn led to inconsistencies.&lt;br /&gt;&lt;br /&gt;This is probably the largest minefield of rabbit holes, if I may mix my metaphors.  Even something as simple as &amp;quot;we need to put graphics inside of our dropdowns&amp;quot; turns into a trip through browser hell.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Animation&lt;/strong&gt; With a notable exception I cover below, HTML is not the right medium for animation.  Anything more than simple stuff--fading or scaling elements, or simple motion--can not only be difficult to implement, debug, and maintain, but also prohibitively resource-intensive.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Interaction with the Local System&lt;/strong&gt; Because of browser security limits, interacting with the local system is problematic at best.  Simple drag-and-drop between a browser-based application and the desktop is an enormous undertaking.  &lt;br /&gt;&lt;br /&gt;If your project is moving through any of these minefields, focus on these areas as having potential hidden complexities.  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mitigating the Risks&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So let&amp;rsquo;s say you know you&amp;rsquo;re wandering through a warren of potential rabbit holes.  How can you avoid stepping in one and breaking your project&amp;rsquo;s proverbial ankle?  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use a Library&lt;/strong&gt; JavaScript and CSS libraries are legion, and there are some really good ones out there.  &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; is my personal favorite, especially for dealing with custom form fields and random rabbit holes that don&amp;rsquo;t fall into the three main categories above.  But I know people who swear by &lt;a href=&quot;http://www.prototypejs.org/&quot;&gt;Prototype&lt;/a&gt;, or &lt;a href=&quot;http://www.dojotoolkit.org/&quot;&gt;Dojo&lt;/a&gt;, or any of a number of other libraries. Just remember, libraries are abstractions, and as such they are subject to the &lt;a href=&quot;http://www.joelonsoftware.com/articles/LeakyAbstractions.html&quot;&gt;Law of Leaky Abstractions&lt;/a&gt;.  They can come with their own rabbit holes, so beware.  A library can be as much of a hindrance as it can be a help.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Apply Tiered Browser Support&lt;/strong&gt;  A core concept in progressive enhancement, tiered browser support specifies different levels of support for specified groups or tiers of browsers.  This differs from standard browser support methods, which generally specify a group of browsers and require exactly the same interaction and graphic design for all of them.  Tiered browser support isolates older or less-functional browsers&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use Appropriate Technologies&lt;/strong&gt; Sometimes HTML isn&amp;rsquo;t the best tool for the job.  In those cases, consider using a tool better-suited to the needs at hand.  Don&amp;rsquo;t be tied down to one set of technologies out of dogma, embrace your full toolbox.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use New Technologies&lt;/strong&gt;  HTML, CSS, and JavaScript are constantly evolving, and are growing in response to our needs.  CSS-3 specifies more rigorous (though still not 100% complete) control over form fields.  HTML 5 has the canvas tag, which provides a useful API for 2-D animation.  HTML 5 also specifies a native drag-and-drop interface that can even interact with the OS desktop and other applications.  Of course, CSS-3 and HTML 5 support is spotty even in modern browsers, so be careful here as well. But chances are you only need one or two of the new capabilities.  If you combine this with tiered browser support and a solid library, it can be enormously powerful.&lt;br /&gt;&lt;br /&gt;For example, consider asynchronous interactions.  Not too long ago we had to rely on hidden frames or other sleight-of-hand to create the illusion of asynchronous interactions.  Today, we have AJAX interactions. One simple solution eliminated a huge headache and pretty much single handedly ushered in a new era in web-based user interfaces.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Work With Your Colleagues&lt;/strong&gt; Depending on the sort of shop you work in, this is either a no-brainer or a laughable suggestion.  I&amp;rsquo;ve worked in both kinds of places and I can tell you I certainly prefer the former over the latter.  Either way it bears mentioning and is probably the most important tool for mitigating the risks of hidden complexities.&amp;nbsp; In fact this is such an important tool that I won&apos;t work with people who aren&apos;t open to collaboration.  I&apos;ve tried it many times, and every single time it reduces project quality, results in angry clients, and irritates my blood pressure.  Life is too short.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Climbing Back Out&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Aside from the near-omniscience that comes from vast amounts of experience with a technology, I know of no way to really avoid having to deal with hidden complexities.  Even with a thorough knowledge of the riskiest areas and a good set of mitigating tools in your toolbox, you are still going to fall down the occasional rabbit hole.  What do you do then?&lt;br /&gt;&lt;br /&gt;In my experience, it comes down to time management.  You know, as a developer, when you&amp;rsquo;ve fallen down a hole and are spending too much time on something.  (And here you have to be honest with yourself; sometimes it&amp;rsquo;s downright fun to tackle these problems, but your time is valuable and you need to spend it wisely.)  When that happens on a project where you simply don&apos;t have the hours to spare, put a time limit on yourself.  If significant progress isn&amp;rsquo;t forthcoming, it&amp;rsquo;s time to put the kibosh on it. Apply a new tool, work it out with the client or your colleagues, whatever, but do what it takes to pull yourself out of that hole.&lt;br /&gt;&lt;br /&gt;Hidden complexities are a fact of our industry, but they don&amp;rsquo;t have to be fatal.  With a good set of tools and an understanding of the risks and you can produce awesome user interfaces on an aggressive timeline.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=6066&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/6066.html</comments>
  <category>development management</category>
  <lj:music>Simple Minds - See the Lights</lj:music>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/3989.html</guid>
  <pubDate>Thu, 25 Feb 2010 20:08:03 GMT</pubDate>
  <title>Project release: I&apos;m a PC</title>
  <link>https://web-based.dreamwidth.org/3989.html</link>
  <description>&lt;a href=&quot;http://imapc.lifewithoutwalls.com&quot;&gt;I&apos;m a PC, and I built this website.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is what I&apos;ve been doing for the last four weeks (longer than that, actually...we&apos;ve been &lt;em&gt;sprinting&lt;/em&gt; for four weeks, I was doing the dev for about a month before that). Please note this is an entire DHTML webapp done with semantic markup, standards-compliant Javascript, and progressive enhancement. Also modern browser support (though some bits are still a little off in IE6).&lt;br /&gt;&lt;br /&gt;At the moment we&apos;re having some glitches with server farm integration, but we&apos;ll get them ironed out shortly.&lt;br /&gt;&lt;br /&gt;The markup is mostly mine, about three quarters of the CSS is mine, and about half of the scripting is mine. I laid the foundation, and I produced the DHTML prototype/proof-of-concept (which helped convince Microsoft to go forward with the project).&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=3989&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/3989.html</comments>
  <category>transferred entries</category>
  <category>project release</category>
  <category>cpb</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://web-based.dreamwidth.org/1384.html</guid>
  <pubDate>Thu, 25 Feb 2010 19:17:27 GMT</pubDate>
  <title>Project release: Gallavants</title>
  <link>https://web-based.dreamwidth.org/1384.html</link>
  <description>After many weeks of hard work, we&apos;re releasing a project:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.gallavants.com/&quot;&gt;Gallavants!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the first kid&apos;s site I&apos;ve ever done. We have a couple of quick changes yet to do to bring everything into COPPA compliance, but it&apos;s good enough to launch.&lt;br /&gt;&lt;br /&gt;If anyone out there has kids that would be interested in taking a look at the site, I&apos;d love to hear what they have to say.&lt;br /&gt;&lt;br /&gt;Point of professional pride: It&apos;s a flash-intensive site, but it&apos;s compliant with the XHTML 1.0 Transitional standard. (Mostly. Any page with a form will have issues, since our Java back end does not produce compliant HTML.)&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=web_based&amp;ditemid=1384&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://web-based.dreamwidth.org/1384.html</comments>
  <category>transferred entries</category>
  <category>texturemedia</category>
  <category>project release</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
