<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:series="http://unfoldingneurons.com/"
><channel><title>Larry Ullman</title> <atom:link href="http://www.larryullman.com/feed/" rel="self" type="application/rss+xml" /><link>http://www.larryullman.com</link> <description>Translating Geek Into English</description> <lastBuildDate>Fri, 03 Feb 2012 15:31:35 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Top 100 E-Commerce Tips</title><link>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/</link> <comments>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/#comments</comments> <pubDate>Fri, 03 Feb 2012 15:31:35 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[e-commerce]]></category> <category><![CDATA[ecom]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2982</guid> <description><![CDATA[I just recently came across this somewhat old post titled Top 100 E-commerce Tips from WebmasterWorld. Despite the fact that the article was published over four years ago, and it&#8217;s based upon a slightly older forum thread, there&#8217;s still a lot of material in the article worth reading if you do any e-commerce. Even though [...]]]></description> <content:encoded><![CDATA[<p>I just recently came across this somewhat old post titled <a
href="http://www.soloseo.com/blog/2007/06/18/top-100-e-commerce-tips-webmasterworld/">Top 100 E-commerce Tips from WebmasterWorld</a>. Despite the fact that the article was published over four years ago, and it&#8217;s based upon a slightly older forum thread, there&#8217;s still a lot of material in the article worth reading if you do any e-commerce. Even though there are a full 100 tips here, they&#8217;re short—most are just a single sentence—and quite valid. Admittedly, I disagree with a couple, and feel like a few could be tossed out, but there are many good points made, and many reminders of things that perhaps you&#8217;ve forgotten to emphasize on your most recent e-commerce. project.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/02/03/top-100-e-commerce-tips/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Transliteration in PHP 5.4</title><link>http://www.larryullman.com/2012/02/01/transliteration-in-php-5-4/</link> <comments>http://www.larryullman.com/2012/02/01/transliteration-in-php-5-4/#comments</comments> <pubDate>Wed, 01 Feb 2012 15:25:50 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[phpmysql3]]></category> <category><![CDATA[transliteration]]></category> <category><![CDATA[transliterator]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2998</guid> <description><![CDATA[In the third edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book, titled &#8220;&#8221;, I went out on a limb and used a beta version of PHP 6 when writing the book. PHP 6 was about half-way done at the time, and I didn&#8217;t want to complete the book, only [...]]]></description> <content:encoded><![CDATA[<p>In the third edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book, titled &#8220;<a
href="http://www.larryullman.com/books/php-6-and-mysql-5-for-dynamic-web-sites-visual-quickpro-guide-3rd-edition/">PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide</a>&#8220;, I went out on a limb and used a beta version of PHP 6 when writing the book. PHP 6 was about half-way done at the time, and I didn&#8217;t want to complete the book, only to have it be outdated immediately thereafter (using PHP 6 wasn&#8217;t, by the way, an attempt to trick the reader into buying the book, as some cynical people have suggested). Well&#8230;<a
href="http://www.larryullman.com/2010/05/25/the-death-of-php-6the-future-of-php-6/">PHP 6 ended up dying due to many complications</a> and I had the proverbial egg on my face (what one reader rightfully called my &#8220;Dewey Defeats Truman&#8221; moment). In truth, only about 5% of the book or so required PHP 6, so it wasn&#8217;t a devastating mistake, but I certainly felt foolish.</p><p>I had specifically wanted to discuss PHP 6 because of its intended support for <a
href="http://unicode.org/">Unicode</a>, which is what the code in the book requires for a couple of examples. Even though PHP 6 was shelved, the key components have since been integrated into PHP 5.2, 5.3, and the forthcoming 5.4. <em>Transliteration</em>, the ability to convert text from one alphabet to another, was demonstrated in the book using the PHP 6 <strong>str_transliterate()</strong> function. That function went belly-up, and PHP 5.4 now has the <a
href="http://www.php.net/manual/en/class.transliterator.php">Transliterator</a> class instead. The documentation for the class in non-existent, but here&#8217;s what I figured out&#8230;<span
id="more-2998"></span></p><p>As with many things in PHP, you can use the Transliterator class as an object or procedurally. Let&#8217;s look at the procedural approach first, which is what the book also does. The function that does all the work is <strong>transliterator_transliterate()</strong>. Its first argument is a either a string identifying the transliteration to conduct, or a Transliterator object. Its second argument is the text to be transliterated.</p><p>In the Transliterator class, transliterators are defined using the syntax <em>from</em>-<em>to</em>. So Bengali-Tamil will transliterate from the Bengali alphabet to the Tamil alphabet. Keep in mind this is just the replacing of characters from one alphabet to the corresponding characters in another. This is not translation!</p><p>To get the list of possible transliterators, invoke the <strong>transliterator_list_ids()</strong> method (Figure 1):</p><pre class="brush: php; title: ; notranslate">echo '&lt;pre&gt;' . print_r(transliterator_list_ids(), 1) . '&lt;/pre&gt;';</pre><div
id="attachment_3013" class="wp-caption aligncenter" style="width: 310px"><a
href="http://cloudfront.larryullman.com/wp-content/uploads/2012/02/PHP_trans_Figure_1.png"><img
class="size-medium wp-image-3013" title="PHP's List of Transliterators" src="http://cloudfront.larryullman.com/wp-content/uploads/2012/02/PHP_trans_Figure_1-300x271.png" alt="" width="300" height="271" /></a><p
class="wp-caption-text">Figure 1</p></div><p>Returning to the code in the book, in Script 14.4, <strong>trans.php</strong>, my name using the Latin alphabet was stored in a variable called <strong>$me</strong>. Then, an array of destination alphabets was created:</p><pre class="brush: php; title: ; notranslate">$me = 'Larry Ullman';
$scripts = array('Greek', 'Cyrillic', 'Hebrew', 'Arabic', 'Hangul');</pre><p>Next, a <strong>for</strong> loop iterated through the array. Within the array, originally, the <strong>str_transliterate()</strong> function was called:</p><pre class="brush: php; title: ; notranslate">foreach ($scripts as $script) {
    echo &quot;$me is &quot; . str_transliterate($me, 'Latin', $script) . &quot; in $script.\n&quot;;
}</pre><p>With the updated Transliterator class, the proper syntax is now (Figure 2):</p><pre class="brush: php; title: ; notranslate">echo &quot;$me is &quot; . transliterator_transliterate (&quot;Latin-$script&quot;, $me) . &quot; in $script.\n&quot;;</pre><p>And that&#8217;s all there is to it! (To reiterate, this does require PHP 5.4 or greater.)</p><div
id="attachment_3014" class="wp-caption aligncenter" style="width: 310px"><a
href="http://cloudfront.larryullman.com/wp-content/uploads/2012/02/PHP_trans_Figure_2.png"><img
class="size-medium wp-image-3014" title="Script 14.4, trans.php, Updated" src="http://cloudfront.larryullman.com/wp-content/uploads/2012/02/PHP_trans_Figure_2-300x209.png" alt="" width="300" height="209" /></a><p
class="wp-caption-text">Figure 2</p></div><p>To do the same thing using object-oriented programming, you&#8217;d first create a new Transliterator object:</p><pre class="brush: php; title: ; notranslate">$t = Transliterator::create(&quot;Latin-$script&quot;);</pre><p>Then you call the <strong>transliterate()</strong> method of the object, providing the text to transliterate as the first argument:</p><pre class="brush: php; title: ; notranslate">$t-&gt;transliterate($me);</pre><p>And there you have it!</p><p>The Transliterator class can be told to transliterate forwards, or in reverse, allowing you to go from an alphabet written in one language to an alphabet written in another.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/02/01/transliteration-in-php-5-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What is Larry Thinking? #50 =&gt; OOP Design, Part 1</title><link>http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/</link> <comments>http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#comments</comments> <pubDate>Mon, 30 Jan 2012 06:58:39 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[newsletter]]></category> <category><![CDATA[oop]]></category> <category><![CDATA[security]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2987</guid> <description><![CDATA[In this edition… What Were You Thinking? =&#62; Bimonthly Newsletters On the Web =&#62; Security and Privacy Made Simpler On the Blog =&#62; My January 2012 Non-Resolutions List Q&#38;A =&#62; How do you go about designing the main OOP classes for a project? Larry Ullman&#8217;s Book News =&#62; “Modern Javascript: Develop and Design” Done! What [...]]]></description> <content:encoded><![CDATA[<p>In this edition…</p><ul><li><a
href="http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#you">What Were You Thinking? =&gt; Bimonthly Newsletters</a></li><li><a
href="http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#web">On the Web =&gt; Security and Privacy Made Simpler</a></li><li><a
href="http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#web">On the Blog =&gt; My January 2012 Non-Resolutions List</a></li><li><a
href="http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#qa">Q&amp;A =&gt; How do you go about designing the main OOP classes for a project?</a></li><li><a
href="http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/#news">Larry Ullman&#8217;s Book News =&gt; “Modern Javascript: Develop and Design” Done!</a></li></ul><p><span
id="more-2987"></span></p><h2 id="you">What Were You Thinking? =&gt; Bimonthly Newsletters</h2><p>In <a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#you">the previous newsletter</a>, I asked for input on the idea of changing the newsletter from going out every 3-4 weeks but being longer to going out every 2 weeks but being shorter. You were also able to vote in <a
href="http://www.larryullman.com/2012/01/06/newsletter-opinion-poll/">an online poll</a>. About two-thirds of the votes were for the change, although the more passionate responses were against the change, as those recipients already felt they received too many newsletters and emails. I think what I’m going to do, as a happy medium, is to shoot for a schedule where the newsletters come out slightly faster, like every 2-3 weeks, and are slightly shorter. This should be feasible for me to pull off without overwhelming you.</p><p>Towards that end, you may note that there’s no “What is Larry Thinking?” section in this particular newsletter. With the new plan for the newsletter, I’m not going to be quite so rigid about what goes into each newsletter, limiting myself to just five or so significant pieces. The bulk of this newsletter answers a question on OOP design.</p><p>My thanks to everyone for their input. And please always feel free to provide any feedback, questions, comments, etc., that you may have. (Postscript: Several of you rightfully pointed out that I misused “biweekly” in the text of the newsletter, despite correctly using “bimonthly” in the heading. I indeed meant “bimonthly”, although “biweekly” has the same inexactitude in that it can mean both every two weeks and twice a week.)</p><h2 id="web">On the Web =&gt; Security and Privacy Made Simpler</h2><p>When I was writing my <a
href="http://www.larryullman.com/books/effortless-e-commerce-with-php-and-mysql/">Effortless E-Commerce with PHP and MySQL</a> book, I naturally did a bunch of research, particularly with regards to the various laws that apply. Understanding the programming behind an e-commerce site is relatively simple; understanding all the applicable laws and implications of doing e-commerce is complex. One of the sites I found to be quite useful was the United States <a
href="http://www.bbb.org/">Better Business Bureau</a> (BBB).</p><p>I’m currently going through some items in my “to read” folder, and am reading, or perhaps re-reading, the Better Business Bureau’s PDF titled “<a
href="http://www.bbb.org/us/corporate-engagement/security/">Security &amp; Privacy – Made Simpler</a>. If you do any e-commerce, or even just Web development, in the U.S. or not, it’s worth your time. It’s a 22-page document that discusses almost every facet of e-commerce, such as:</p><ul><li>Developing a security and privacy plan</li><li>Creating and communicating your security and privacy policies</li><li>Good employee screening and policies</li><li>Common hack/theft strategies</li><li>General Internet security</li><li>Proper handling of customer data</li><li>Payment processing</li><li>What to do in the event of a data breach</li><li>A preview of international e-commerce considerations</li></ul><p>The document also has many resources listed in these and other categories. You can download the PDF from that page, but there are also related FAQs and more on the BBB’s site.</p><h2 id="blog">On the Blog =&gt; My January 2012 Non-Resolutions List</h2><p>I’ve never been much of a New Year’s Resolution person: if something is important enough to do, start today, not on some arbitrary date that happens to be the first day of the year. (Or, you know, January 2nd, because the first is a holiday and all.) But this year I happen to have quite a long non-resolutions list. The timing is entirely coincidental: I just happen to be done with my “Modern JavaScript: Develop and Design” book around this time, and I always have a long list of things to do between books. I recently <a
href="http://www.larryullman.com/2012/01/03/my-january-2012-non-resolutions-list/">posted on my blog</a> about my immediate plans (aka, my non-resolutions list).</p><h2 id="qa">Q&amp;A =&gt; How do you go about designing the main OOP classes for a project?</h2><p>While “diving into” Object-Oriented Programming development in PHP, Chris had emailed me about how one sets up the core classes for an OOP-based site. The specific example—user management with login/logout, roles, etc.—is common and not complex, but Chris didn’t know where to start. In my opinion, OOP is easy enough to <em>use</em> once the classes have been defined; the difficulties arise from coming up with the proper classes in the first place. So let’s look at that process, in the abstract.</p><p><em>Programming is a matter of taking actions with data.</em> In a linguistic sense, it’s very much a noun-verb relationship: the user submits form data to a server; the server stores data in a database; the user requests another page; the server pulls data from a database. Whether you’re using OOP or procedural code, you need to identify both the actions and the data first. What are all the <em>verbs</em> that the user or Web site needs to be able to do? What are all the <em>nouns</em> that will be involved in those actions? Once you’ve identified those attributes of the site, procedural programming focuses first on the verbs, OOP focuses first on the nouns.</p><p>To start designing OOP classes, one must first organize the types of data the site will work with, in detail. In a user management system, there’s one obvious noun: a <strong>User</strong>. The properties of a User include: userId, username, userPass, userRole, dateRegistered, and so forth. (Conventionally, OOP uses camel-case for variable and property names.) When you think you’ve identified the nouns involved, go back and see if all of the actions now have the data that needs to be involved. When a new person registers, a User is created (as both a PHP variable and a record in the database). When a person logs in, a User is retrieved from the database and created as a PHP variable. When a person logs out, the User PHP variable can be destroyed. To see if a person has authority to do X, you’d check the <strong>User-&gt;userRole</strong> property.</p><p>In some situations, there will be nouns with overlapping roles and properties, which would suggest that you should create a hierarchy of classes. I think of shapes as being the easiest example to comprehend. All two-dimensional shapes have some common attributes, such as area and perimeter, but triangles have three sides, rectangles have four, and circles have none (but do have a radius). When you find yourself in situations like this, you’ll want to design one master class, in this case, <strong>Shape</strong>, which you never create instances of. Then you define derived classes—<strong>Triangle</strong>, <strong>Rectangle</strong>, and <strong>Circle</strong>—that you would create instances of. Admittedly, knowing when to create a hierarchy can be tough. You might think with a user roles situation that you’d want common users and administrators as two separate classes, but the only difference between the two types is in what actions each can take, which is easily managed using Access Control Lists (ACLs) or the like. Or, put another way, everything about the two users is exactly the same except for the type, so there’s no need to create separate classes (unlike, by comparison, circles and triangles that have some overlapping properties but other very different ones).</p><p>Another common class to use on a site would be one for interacting with the database. You could create your own class for this purpose, or just use the <a
href="http://www.php.net/mysqli">MySQLi object</a> or <a
href="http://www.php.net/pdo">PDO</a> or the like.</p><p>Even in a simple site with content and users, there are other clear nouns: the pages of content. Going back to the language analogy, there are some sentences that have a single noun—<em>Johnny runs</em> or <em>A User logs out</em>—but many have more than one noun—<em>Johnny reads a book</em> or <em>A User views a page of content</em>. The content, then, would also be represented by one or more classes, depending upon the variety in the content displayed. If the content is just information displayed within a template of HTML, then <strong>Content</strong> might have these attributes: contentId, title, body, createdBy, dateCreated, and dateUpdated. The createdBy could be as simple as a userID integer, or more formally be an actual User instance.</p><p>Depending upon how OOP-y you want to be, you may also create classes for generating the HTML pages (i.e., View classes) and for handling actions (i.e., Controller classes). Those move you into the realm of a true MVC architecture, which isn’t always necessary, though.</p><p>In asking the question, Chris didn’t originally know how to handle the logging in and logging out and registration and such, not knowing if one makes classes for those. Those are actions performed on, or using, objects, and don’t get represented as classes themselves.</p><p>Because I’m going to be writing the third edition of my “<a
href="http://www.larryullman.com/books/php-5-advanced-visual-quickpro-guide-2nd-edition/">PHP 5 Advanced: Visual QuickPro Guide</a>” this year, I expect I’ll be doing a lot of writing on the subject of OOP, design patterns, and the like. If anyone has any more questions or comments regarding these topics, let me know.</p><h2 id="news">Larry Ullman’s Book News =&gt; “Modern Javascript: Develop and Design” Done!</h2><p>I am very, very happy to say that my latest book, “Modern JavaScript: Develop and Design”, is officially done. Like done, done. Last week Monday, I submitted the last chapter to be written, Chapter 13, Frameworks. In it, I quickly discuss how to choose a framework, when you should use a framework, and some common libraries (as a framework alternative). The bulk of the chapter introduces and uses <a
href="http://jquery.com/">jQuery</a> and the <a
href="http://yuilibrary.com/">Yahoo! User Interface (YUI) Library</a>. For both I explain how to perform common tasks—selecting DOM elements, DOM manipulation, event handling, and Ajax, and then walk through more advanced examples. For both, the chapter explains an autocomplete example, using a PHP script as the data source. For jQuery, I also discuss the <a
href="http://datatables.net/">DataTables</a> plug-in. For YUI, I also discuss and demonstrate the <a
href="http://developer.yahoo.com/yql/">Yahoo! Query Language</a> (YQL). For it, I go through a couple of examples, including fetching a weather report and a stock quote. (For the record, I specifically target YUI3, which is an improvement over YUI1 and 2, even if some of the framework is currently in beta.)</p><p>Chapter 13 is the first chapter in Part 3 of the book, Next Steps. I already wrote Chapter 14, Advanced JavaScript, which has a heavy focus on closures. Chapter 15, A PHP and JavaScript Example, creates a pseudo-complete auction system. Auctions are set to expire on a certain date and time. Logged-in users can bid on items. All dates and times are shown using Coordinated Universal Time (UTC) or the user’s timezone, if the user is logged-in. Then, JavaScript used to enhance the experience. This includes using Ajax for the login and bid forms, retrieving the latest bids via Ajax (and updating the table of bids with them), and creating countdown timers that show the amount of time left in an auction, when that’s less than an hour. I think the chapter turned out well, and it emphasizes the various ways to pass data back and forth between PHP and JavaScript, a common point of confusion.</p><p>Not only is all of the initial writing is complete, but I’ve also done the rewrites on the entire book, and I just—moments ago—finished reviewing the PDF layouts, which is the last step before the book goes to the printer. (As you can tell, there are a lot of overlapping steps here at the end.) I believe the book will still ship, as originally planned, at the end of February.</p><p>In support of the book, I’ll also be writing a couple of articles (published online for free) and create some screencasts (to be provided in various places).</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/30/what-is-larry-thinking-50-oop-design-part-1/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>The State Of HTML5 Video, from LongTailVideo</title><link>http://www.larryullman.com/2012/01/27/the-state-of-html5-video-from-longtailvideo/</link> <comments>http://www.larryullman.com/2012/01/27/the-state-of-html5-video-from-longtailvideo/#comments</comments> <pubDate>Fri, 27 Jan 2012 16:14:43 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[html5]]></category> <category><![CDATA[video]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2990</guid> <description><![CDATA[LongTailVideo, makers of the popular JW Player (a video player for Web pages), just posted a long article titled &#8220;The State Of HTML5 Video.&#8221; I used JW Player on a couple of projects and was quite pleased with its usability and reliability. My experience was with using JW Player to present Flash video, but the [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.longtailvideo.com/">LongTailVideo</a>, makers of the popular <a
href="http://www.longtailvideo.com/players/">JW Player</a> (a video player for Web pages), just posted a long article titled &#8220;<a
href="http://www.longtailvideo.com/html5/">The State Of HTML5 Video</a>.&#8221; I used JW Player on a couple of projects and was quite pleased with its usability and reliability. My experience was with using JW Player to present Flash video, but the player has since been modified to serve either Flash content or HTML5 video, which is great. Towards that end, the article presents the current state of HTML5-related features and functionality, with lots of stats about browser compatibility, what attributes and video formats can be used, and so forth.</p><p>If you present video on Web sites, whether you use the JW Player or not, it&#8217;s worth checking out to know where things stand. LongTailVideo intends to maintain and update that article as changes in the industry (such as statistical changes and the like) evolve.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/27/the-state-of-html5-video-from-longtailvideo/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>The impress.js Presentation JavaScript Library</title><link>http://www.larryullman.com/2012/01/20/the-impress-js-presentation-javascript-library/</link> <comments>http://www.larryullman.com/2012/01/20/the-impress-js-presentation-javascript-library/#comments</comments> <pubDate>Fri, 20 Jan 2012 06:55:43 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[css3]]></category> <category><![CDATA[html5]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2975</guid> <description><![CDATA[I recently stumbled upon impress.js, a truly amazing Web-based presentation tool. You have got to check out the demo page (in a modern browser), you will be blown away. After running through the presentation (which will only take a minute), check out the HTML source code to be further amazed. I&#8217;m normally not this hyperbolic, but [...]]]></description> <content:encoded><![CDATA[<p>I recently stumbled upon <a
href="https://github.com/bartaz/impress.js">impress.js</a>, a truly amazing Web-based presentation tool. You have got to check out the <a
href="http://bartaz.github.com/impress.js/">demo page</a> (in a modern browser), you will be blown away. After running through the presentation (which will only take a minute), check out the HTML source code to be further amazed. I&#8217;m normally not this hyperbolic, but I was quite stunned by what was possible with <strong>impress.js</strong>. Besides being a useful tool for HTML-based presentations, this library is capable of changing how one thinks of presentations as a concept. Instead of presenting information in a linear, traditional format, with <strong>impress.js</strong>, you can do things like go from a bigger picture to a smaller picture, to be able to zoom in on content, as it were. If you pay attention to the URLs, you&#8217;ll note that <strong>impress.js</strong> also creates bookmark-able pages, which is an added bonus.</p><p>If you check out the <a
href="https://github.com/bartaz/impress.js/blob/master/README.md">corresponding README file</a> on GitHub, you&#8217;ll find links to other presentations created with impress.js. A couple of presentations are quite useful in that they demonstrate, in my opinion, an overuse of <strong>impress.js</strong>. Those particular presentations use the rotation feature to such as extent that it makes one dizzy, which is normally not a good quality in a presentation (although one presentation is talking about 3D transformations, so there&#8217;s some justification there). One does worry that if <strong>impress.js</strong> catches on too much, we&#8217;ll all be sick of rotating transitions in no time.</p><p>For an example of another interesting use of <strong>impress.js</strong>, check out <a
href="http://lioshi.com/">lioshi toiles</a>, where <strong>impress.js</strong> creates a site that displays artwork in a truly interesting way. Taken a step further, <a
href="http://www.alingham.com/">Al Ingham&#8217;s site</a>, uses <strong>impress.js</strong> for custom navigation and presentation, while still providing direct links to specific pages across the top of the page (because walking through all the &#8220;slides&#8221; to get where you needed to be is unreasonable).</p><p>If only I had any design skills whatsoever&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/20/the-impress-js-presentation-javascript-library/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>Modern JavaScript: Develop and Design Done! (kind of)</title><link>http://www.larryullman.com/2012/01/16/modern-javascript-develop-and-design-done-kind-of/</link> <comments>http://www.larryullman.com/2012/01/16/modern-javascript-develop-and-design-done-kind-of/#comments</comments> <pubDate>Mon, 16 Jan 2012 20:55:18 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[datatables]]></category> <category><![CDATA[jquery]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[yql]]></category> <category><![CDATA[yui]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2973</guid> <description><![CDATA[UPDATE: Amazon currently has the book for sale at $30.47, as I write this. I am very happy to say that my latest book, Modern JavaScript: Develop and Design, is official done. Well, not done, but close enough to blog about it. I just submitted the last chapter to be written, Chapter 13, Frameworks. In [...]]]></description> <content:encoded><![CDATA[<p><strong>UPDATE</strong>: <a
href="http://amzn.to/wsdmkq">Amazon currently has the book for sale at $30.47</a>, as I write this.</p><p>I am very happy to say that my latest book, <em>Modern JavaScript: Develop and Design</em>, is official done. Well, not done, but close enough to blog about it. I just submitted the last chapter to be written, Chapter 13, Frameworks. In it, I quickly discuss how to choose a framework, when you should use a framework, and some common libraries (as a framework alternative). The bulk of the chapter introduces and uses <a
href="http://jquery.com/">jQuery</a> and the <a
href="http://yuilibrary.com/">Yahoo! User Interface (YUI) Library</a>. For both I explain how to perform common tasks—selecting DOM elements, DOM manipulation, event handling, and Ajax, and then walk through more advanced examples. For both, the chapter explains an autocomplete example, using a PHP script as the data source. For jQuery, I also discuss the <a
href="http://datatables.net/">DataTables</a> plug-in. For YUI, I also discuss and demonstrate the <a
href="http://developer.yahoo.com/yql/">Yahoo! Query Language</a> (YQL). For it, I go through a couple of examples, including fetching a weather report and a stock quote. (For the record, I specifically target YUI3, which is an improvement over YUI1 and 2, even if some of the framework is currently in beta.)</p><p>Chapter 13 is the first chapter in Part 3 of the book, Next Steps. I already wrote Chapter 14, Advanced JavaScript, which has a heavy focus on <em>closures</em>. Chapter 15, A PHP and JavaScript Example, creates a pseudo-complete auction system. Auctions are set to expire on a certain date and time. Logged-in users can bid on items. All dates and times are shown using <a
href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated Universal Time</a> (UTC) or the user&#8217;s timezone, if the user is logged-in. Then, JavaScript used to enhance the experience. This includes using Ajax for the login and bid forms, retrieving the latest bids via Ajax (and updating the table of bids with them), and creating countdown timers that show them amount of time left in an auction, when that&#8217;s less than an hour. I think the chapter turned out well, and it emphasizes the various ways to pass data back and forth between PHP and JavaScript, a common point of confusion.</p><p>All of the initial writing is now complete. I&#8217;ve also done the rewrites on the first nine chapters. I still have to do the rewrites on the last six chapters, but that won&#8217;t take long. I will also be doing supporting videos and articles related to the book.</p><p>I believe the book will still ship, as originally planned, at the end of February. I am now going to go celebrate!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/16/modern-javascript-develop-and-design-done-kind-of/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>PHP6 to PHP5.4</title><link>http://www.larryullman.com/2012/01/10/php6-to-php5-4/</link> <comments>http://www.larryullman.com/2012/01/10/php6-to-php5-4/#comments</comments> <pubDate>Tue, 10 Jan 2012 22:07:12 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[php6]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2918</guid> <description><![CDATA[In early 2012, the official release of PHP5.4 is expected (it&#8217;s currently in its fourth release candidate stage). PHP5.4 completes many of the additions that were planned for PHP6 (several others, such as namespaces, were added in PHP5.3). Along with the additions, many of the features that have been deprecated in PHP and were set to [...]]]></description> <content:encoded><![CDATA[<p>In early 2012, the official release of PHP5.4 is expected (it&#8217;s currently in its fourth release candidate stage). PHP5.4 completes many of the additions that were planned for PHP6 (several others, such as namespaces, were added in PHP5.3). Along with the additions, many of the features that have been deprecated in PHP and were set to be removed in version 6.0 are now being removed in 5.4 instead, such as PHP&#8217;s <a
href="http://php.net/manual/en/features.safe-mode.php">Safe Mode</a>.</p><p>The main reason I wanted to use PHP6 when I wrote the third edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book is the intended support for Unicode. I had not seen this before, but I guess the attempted move to Unicode resulted in PHP scripts requiring twice as much memory as before, with a noticeable lag in performance. This is why the developers had to scrap those plans. But PHP 5.4 has &#8220;inline support&#8221; for several new languages, including Japanese and some dialects of Chinese. In other words, PHP5.4 has kind of a Unicode-light support. This Unicode support won&#8217;t be activated unless specified during the installation process.</p><p>I&#8217;m not sure where this leaves actual PHP6, but PHP5 is certainly a most excellent tool in its own right. I did use PHP5.3 in the fourth edition of my &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; book, and will make use of PHP5.4 in the third edition of my &#8220;PHP 5 Advanced: Visual QuickPro Guide&#8221;, due out later this year.</p><p>&nbsp;</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/10/php6-to-php5-4/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>What Is Larry Thinking? #49 =&gt; A New Year</title><link>http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/</link> <comments>http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#comments</comments> <pubDate>Sat, 07 Jan 2012 16:55:27 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[bonus]]></category> <category><![CDATA[bonus content]]></category> <category><![CDATA[book]]></category> <category><![CDATA[debug]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[newsletter]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2967</guid> <description><![CDATA[In this edition… About This Newsletter What Are You Thinking? =&#62; Bimonthly Newsletters On the Web =&#62; How To Read a PHP Function Definition On the Blog =&#62; Finding Book Bonus Content Q&#38;A =&#62; Do You Use Any Tools to Debug Your PHP Scripts? What is Larry Thinking =&#62; Testing Your PHP Knowledge Larry Ullman&#8217;s [...]]]></description> <content:encoded><![CDATA[<p>In this edition…</p><ul><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#about">About This Newsletter</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#you">What Are You Thinking? =&gt; Bimonthly Newsletters</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#web">On the Web =&gt; How To Read a PHP Function Definition</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#blog">On the Blog =&gt; Finding Book Bonus Content</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#qa">Q&amp;A =&gt; Do You Use Any Tools to Debug Your PHP Scripts?</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#thinking">What is Larry Thinking =&gt; Testing Your PHP Knowledge</a></li><li><a
href="http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/#news">Larry Ullman&#8217;s Book News =&gt; &#8220;Modern JavaScript: Develop and Design&#8221;</a></li></ul><p><span
id="more-2967"></span></p><h2 id="about">About This Newsletter</h2><p>Happy New Year! I hope you are doing well and had pleasant holidays, for those of you that celebrate holidays around this time. I’m going to get right to the newsletter, without any big introduction. I will say in advance that this is going to be a shorter newsletter, for reasons I’m about to explain.</p><p>As always, questions, comments, and all feedback are much appreciated. And thanks for your interest in what I have to say and do!</p><h2 id="you">What Are You Thinking? =&gt; Bimonthly Newsletters</h2><p>First of all, how difficult is the English language? The term “bimonthly” means <em>both</em> every two weeks and every two months. Seriously? Yikes. Well, the reason I bring it up is that I’m thinking of changing the frequency of the newsletter. Right now, I try to send out the newsletter every 3-4 weeks, and target keeping it under 3,000 words (which I often don’t do). I’m debating putting it out every two weeks (-ish), but cutting the length by about half (as a point of reference this newsletter is the approximate new length). I’d also have to change some of the structure a bit. For example, I’d probably drop the “About This Newsletter” section, and only do some sections some times. What do you think?</p><p>You can reply to this email with your thoughts, or quickly vote at <a
href="http://www.larryullman.com/2012/01/06/newsletter-opinion-poll/">this online poll</a>. Thanks in advance for your input!</p><h2 id="web">On the Web =&gt; How To Read a PHP Function Definition</h2><p>It was recently pointed out to me by a couple of readers that they found my explanation for how to read the PHP manual, presented in Chapter 1 of my <a
href="http://www.larryullman.com/books/php-for-the-web-visual-quickstart-guide-4th-edition/">“PHP for the Web: Visual QuickStart Guide”</a> book, to be confusing. I think that learning how to read the manual is quite important, but I can see now that my presentation of that subject was a bit much at that early stage of the game, at least for absolute beginners. In any case, in that forum discussion, someone shared a link to a page in the PHP manual titled <a
href="http://www.php.net/manual/en/about.prototypes.php">“How to Read a Function Definition”</a>, which they found to be useful. So I thought I’d share it here!</p><h2 id="blog">On the Blog =&gt; Finding Book Bonus Content</h2><p>For many of my books, bonus content is made available through the publisher. Sometimes this is material that was intended for the book but had to be cut, such as an appendix or a chapter, and sometimes the material is a true bonus, such as a video screencast. Because it’s not clear for everyone how to access this bonus material, I recently <a
href="http://www.larryullman.com/2011/12/20/finding-book-bonus-content/">posted instructions for finding bonus material</a> on my blog.</p><h2 id="qa">Q&amp;A =&gt; Do You Use Any Tools to Debug Your PHP Scripts?</h2><p>Daniel had asked me this question and the truthful answer is that I generally don’t, crazy as that sounds. Mostly this is because I primarily write PHP code using a text editor, <a
href="http://macromates.com">TextMate</a>, that does not have a built-in debugger. That leaves me with using echo statements as my primary debugging tool. I know I <em>can</em> get <a
href="http://xdebug.org/">XDebug</a> working with TextMate on my Mac, I just haven’t felt the need.</p><p>On the other hand, I’ve used <a
href="http://www.zend.com/en/products/studio/">Zend Studio</a> some, mostly for Flex+PHP development, in conjunction with Flash Builder, and Zend Studio does have a built-in debugger. Debuggers are nice—they report the values of variables, let you walk through code, and so forth, I just haven’t been driven to force myself to use one yet. Certainly if I were to use an IDE more frequently, I would get myself into the debugger habit.</p><h2 id="thinking">What is Larry Thinking? =&gt; Testing Your PHP Knowledge</h2><p>A friend of mine recently went on a job interview for a position as a PHP programmer and was given this prompt:</p><blockquote><pre>$a = 4;
$b = 5;
$c = --$b + $a++;</pre><p>What is the value of $c?</p></blockquote><p>This is just annoying. The question is trying to test knowledge of the impact that using the postfix and prefix versions of the increment and decrement operators have. In other words, will <strong>$b</strong> be decremented and then added to <strong>$a</strong> or will <strong>$b</strong> be added to <strong>$a</strong> and then decremented (and, of course, the same goes for the <strong>$a</strong> value, too)?</p><p>Besides being a meaningless example, in no way does this test one’s actual skills as a PHP programmer. It only tests one’s ability to memorize the rules of precedence. I, for one, always considered memorizing the precedence rules to be a waste of time. The list contains many esoteric operators that aren’t commonly used. More importantly, memorizing the list is only useful if you always remember the precedence list accurately. As soon as you slip up, you’ve created a bug. And even if you don’t slip up, relying upon precedence will lead to code that’s not clearly understood (i.e., that doesn’t clearly convey the programmer’s intent). That, to me, is bad code. When I look at that prompt, I don’t wonder what the value of <strong>$c</strong> is, but rather what the original programmer intended it to be. I know it undercuts the point of the test, but a real PHP programmer should have coded:</p><blockquote><pre>$c = (--$b) + $a;
$a++;</pre></blockquote><p>That code assigns the same answer to <strong>$c</strong>—8—and then increments <strong>$a</strong>, but is much, much cleaner. And, of course, some comments wouldn’t hurt!</p><p>It probably would not have gotten me the job, but that’s what my answer would have been. To me it comes down to whether the company is looking for someone that can memorize arcane rules, or someone that actually knows how to program. This is also why I don’t personally put much stock into certifications. Those are just exams that tests one’s ability to memorize and regurgitate rules. Certification exams have little reflection of real-world programming. For example, I might be asked on a certification test the order of the arguments for PHP’s <strong>explode()</strong> function, which I can never remember for whatever reason. On the test, I’d have a 50-50 shot of getting that question right, but in the real-world, there is a 100% guarantee that I’ll use the function correctly, because I’ll just look up its definition.</p><p>Years ago, I was a trainer for Borders Bookstores. As part of the training process, we’d have the new employee go on a treasure hunt to find a slew of books. Inevitably some trainee would get stumped and tentatively ask another, more seasoned employee for help. I loved that, because it accurately reflects the job: when you got stuck, you asked the person next to you.</p><p>Many books, tests, and even these simple employee tests put way too much emphasis on knowing facts. Being able to answer a question about a rule or function is not that important in the grand scheme of things. <em>Being able to find answers to questions is far, far more critical.</em> If you rely only on what you know, there will be a time when you won’t know, and then you’ll really be stuck.</p><h2 id="news">Larry Ullman’s Book News =&gt; “Modern JavaScript: Develop and Design”</h2><p>I just submitted Chapter 14, “Advanced JavaScript,” about two days ago, which means I only have two chapters left (whohoo!). One chapter will be on frameworks, in which I introduce both <a
href="http://jquery.com">jQuery</a> and <a
href="http://developer.yahoo.com/yui/">YUI</a>, probably the two most commonly used frameworks. The other chapter will be an example chapter using JavaScript with PHP (and HTML and CSS, of course). I’m thinking right now of doing an auction-like system, which would entail timers and Ajax and DOM manipulation and all sorts of goodies.</p><p>I will have those chapters done in the next two weeks, at the latest. I’ve also done the rewrites on the first 8 chapters, and have a few more of those to go. There will be supporting video screencasts to go with the book, and probably a couple of articles to be published online. The end is nigh!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/07/what-is-larry-thinking-49-a-new-year/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Newsletter Opinion Poll</title><link>http://www.larryullman.com/2012/01/06/newsletter-opinion-poll/</link> <comments>http://www.larryullman.com/2012/01/06/newsletter-opinion-poll/#comments</comments> <pubDate>Fri, 06 Jan 2012 14:34:14 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[newsletter]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2962</guid> <description><![CDATA[Historically, the has gone out every 3-4 weeks, and is around 3,000 words long (that&#8217;s my target). I&#8217;m debating switching the newsletter&#8217;s schedule to every two weeks. If I were to do this, I&#8217;d likely cut the length by about half. I&#8217;d also change a couple of other things about the regular content: probably drop [...]]]></description> <content:encoded><![CDATA[<p>Historically, the <a
href="http://www.larryullman.com/newsletter/">newsletter</a> has gone out every 3-4 weeks, and is around 3,000 words long (that&#8217;s my target). I&#8217;m debating switching the newsletter&#8217;s schedule to every two weeks. If I were to do this, I&#8217;d likely cut the length by about half. I&#8217;d also change a couple of other things about the regular content: probably drop the &#8220;About This Newsletter&#8221; section and alternate what other sections are used, for starters. What do you think?</p><p>Please use the poll below to vote. If you have any specific comments, please post them using the comments form. Thanks for your input and for your interest in what I do!</p> Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/06/newsletter-opinion-poll/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>My January 2012 Non-Resolutions List</title><link>http://www.larryullman.com/2012/01/03/my-january-2012-non-resolutions-list/</link> <comments>http://www.larryullman.com/2012/01/03/my-january-2012-non-resolutions-list/#comments</comments> <pubDate>Wed, 04 Jan 2012 04:12:41 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[book]]></category> <category><![CDATA[phpvqp3]]></category> <category><![CDATA[textmate]]></category> <category><![CDATA[writing]]></category> <category><![CDATA[yii]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2947</guid> <description><![CDATA[I&#8217;ve never been much of a New Year&#8217;s Resolution person: if something is important enough to do, start today, not on some arbitrary date that happens to be the first day of the year. (Or, you know, January 2nd, because the first is a holiday and all.) But this year I happen to have quite [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve never been much of a New Year&#8217;s Resolution person: if something is important enough to do, start today, not on some arbitrary date that happens to be the first day of the year. (Or, you know, January 2nd, because the first is a holiday and all.) But this year I happen to have quite a long non-resolutions list. The timing is entirely coincidental: I just happen to be almost done with my <em>Modern JavaScript: Develop and Design</em> book, and I always have a long list of things to do between books. I only have two more chapters to write on this book, and the end is in site!</p><p>In a recent newsletter, I <a
href="http://www.larryullman.com/2011/11/20/what-is-larry-thinking-47-random-monkey-appearances/#qa2">answered a question about how I spend my time between projects</a>. For me, the biggest projects I have, in terms of stress and time consumption, are the books I write. The client projects&#8211;Web development and such, no matter how big or complicated, never seem to be that much of a burden. Mostly this is because I find programming to be much easier than writing about programming, and because it&#8217;s fun to make things happen, to implement new concepts. Over the course of a year, I&#8217;ll work on any number of projects, ranging from consulting a couple of hours here or there (i.e., helping to steer the actual developers) to doing all of the development myself. When these bigger projects are done, I&#8217;m pleased to have them off of my list, but there&#8217;s never the huge sigh of relief that I have when I&#8217;ve finished a book. And that sigh says: now I can do these other 20 things that have been waiting for me!</p><p>With the completion of the JavaScript book on the horizon, I&#8217;ve been making my January to-do list, and salivating over all the things I&#8217;ll be getting done. Certainly, what I will actually do won&#8217;t be nearly as long as this list, but one can dream, no? My next deadline isn&#8217;t until this summer, which is when I have to turn in the third edition of my <em>PHP 5 Advanced: Visual QuickPro Guide</em> book. Although I&#8217;d like to, for a change, get that book done well in advance! Still, I have a bit of time to really put a dent in my &#8220;someday&#8221; to-do list.</p><p>First on my list is to exercise more often. I feel like I&#8217;ve gained five pounds for every book I&#8217;ve written (all that sitting), and while I&#8217;ve exercised more than never over the past few months, I&#8217;d like to do much, much better. We could all probably use more exercise!</p><p>After exercise, which is a daily and on-going goal, I&#8217;ve grouped my dream tasks into four categories:</p><ul><li>Things to work on</li><li>Books to read</li><li>Work things I really should get done</li><li>Personal things I really should get done</li></ul><p>The last category is of little interest to you, I imagine, or wouldn&#8217;t mean much regardless (mostly construction projects around the house). The work things I really should get done are those things that don&#8217;t get done during my books and big projects. For January, this primarily means creating an HTML5 version of this site&#8217;s design, plus a corresponding version for my forum. Before I redid this site in October of 2010, the site had become woefully outdated and I want to insure that doesn&#8217;t happen again. If time allows, I&#8217;ll do a mobile version, too, and make sure everything is performing as well as can be.</p><p>The books to read are both personal and work related. I want to read one or two parenting books, a novel, and some work-related books. I&#8217;m specifically looking to read <em><a
href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1325649567&amp;sr=1-1">The Pragmatic Programmer</a></em> by Hunt and Thomas first. I&#8217;ve heard good things about it. Then, coincidentally, I have a couple of ebooks from <a
href="http://pragprog.com/">The Pragmatic Bookshelf</a> on my computer awaiting a few moments of time. As I read these, I&#8217;ll no doubt be posting my thoughts about them here.</p><p>Finally, there&#8217;s my &#8220;things to work on&#8221; category, which is a broad category of topics without definitive targets or concrete tasks. Normally these items are a matter of improving my skills in specific areas. Right now I&#8217;m thinking honing my abilities and knowledge with respect to <a
href="http://www.obdev.at/products/launchbar/index.html">Launchbar</a> and <a
href="http://macromates.com/">TextMate</a>, two Mac apps I use all the time. I know for a fact that I&#8217;m underutilizing both. The time I spend improving my skills with them now will pay dividends over the rest of the year. As time allows, I also plan on continuing to write my Yii book, although I&#8217;ll probably do that as blog posts, too.</p><p>So there are my January 2012 non-resolutions. Which will likely also be my February 2012 non-resolutions. Sadly, at least a quarter of them will end up on my September 2012 resolutions, too!</p><p><strong>UPDATE</strong>: I just literally finished all the work on the <em>Modern JavaScript: Develop and Design</em> book yesterday, so thus far, I&#8217;ve done pretty much none of the things on my list, including exercise more. Ugh. But how about that February list&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2012/01/03/my-january-2012-non-resolutions-list/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> </channel> </rss>
<!-- Served from: www.larryullman.com @ 2012-02-05 11:51:56 by W3 Total Cache -->
