<?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 &#187; Amazon</title> <atom:link href="http://www.larryullman.com/tag/amazon/feed/" rel="self" type="application/rss+xml" /><link>http://www.larryullman.com</link> <description>Translating Geek Into English</description> <lastBuildDate>Mon, 21 May 2012 11:03:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>What Is Larry Thinking? #46 =&gt; JavaScript, Sexism, and Bad User Interface</title><link>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/</link> <comments>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#comments</comments> <pubDate>Fri, 21 Oct 2011 05:22:00 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[apple]]></category> <category><![CDATA[books]]></category> <category><![CDATA[file]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[newsletter]]></category> <category><![CDATA[permissions]]></category> <category><![CDATA[security]]></category> <category><![CDATA[silk]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2845</guid> <description><![CDATA[In this edition… About This Newsletter What Are You Thinking? =&#62; Using JavaScript On the Web =&#62; Amazon Silk: A New Mobile Browser On the Web =&#62; Steve Jobs and Dennis Ritchie, in Memoriam On the Blog =&#62; Why There Are Few (No?) Good JavaScript Books Q&#38;A =&#62; Could You Explain File Permissions? What is [...]]]></description> <content:encoded><![CDATA[<p> In this edition…</p><ul><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#about">About This Newsletter</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#you">What Are You Thinking? =&gt; Using JavaScript</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#web1">On the Web =&gt; Amazon Silk: A New Mobile Browser</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#web2">On the Web =&gt; Steve Jobs and Dennis Ritchie, in Memoriam</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#blog">On the Blog =&gt; Why There Are Few (No?) Good JavaScript Books</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#qa">Q&amp;A =&gt; Could You Explain File Permissions?</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#thinking">What is Larry Thinking =&gt; Sexism and Bad User Interface</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#giveaway">Book Giveaway =&gt; &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition)</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#news">Larry Ullman&#8217;s Book News =&gt; &#8220;Modern JavaScript: Develop and Design&#8221;</a></li></ul><p> <span
id="more-2845"></span></p><h2 id="about">About This Newsletter</h2><p>Life is busy here and I&rsquo;m well behind schedule on all fronts, so this newsletter is getting out about a week to ten days late. I&rsquo;m taking consolation in the fact that I&rsquo;ve kept pretty close to a three-week schedule for the past year (about 15 newsletters sent in that time). Rather than blather on, let’s get on with the show!</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; Using JavaScript</h2><p>So I&rsquo;m working on my next book, &ldquo;Modern JavaScript: Develop and Design.&rdquo; As I write about in a blog post (also mentioned later in this newsletter), JavaScript is kind of a tricky language to write a book about, as a lot of information is required just to do a basic thing such as form validation. Like any of my books, I&rsquo;m working hard to use lots of good, real-world examples to demonstrate the new information being taught. Thus far, with two real code chapters in the bank, most examples are based upon form validation and data manipulation. These are obviously crucial uses of JavaScript, and good ways to practice some of the early material. Some readers have let me know that they&rsquo;re hoping to see lots and lots of examples, so I thought I&rsquo;d go ahead and send a direct request out asking what, if any, specific examples or topics you&rsquo;d like to see in the book. What do you know you need to use JavaScript for? What are you curious about? What have you seen that you know is confusing to you and you&rsquo;d like clarification on?</p><p>All thoughts and suggestions are welcome and very much appreciated. As an incentive, I&rsquo;ll go ahead and give away ten copies of &ldquo;Modern JavaScript: Develop and Design&rdquo; to people with the best responses.</p><h2 id="web1">On the Web =&gt; Amazon Silk: A New Mobile Browser</h2><p>As you may have seen, <a
href="http://www.amazon.com/?tag=larrullm09-20">Amazon</a> announced their new lineup of Kindles recently, from the <a
href="http://amzn.to/qQREgw">$79 base version</a> to the <a
href="http://amzn.to/oZyxhk">$199 Kindle Fire</a>, a rival to Apple&rsquo;s iPad. One thing that piqued my interest about the Kindle Fire is that it includes a new, custom Web browser, named <a
href="http://amazonsilk.wordpress.com/">Silk</a>. Amazon posted <a
href="http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/">an introduction to Silk</a>, along with a six-minute video, on their site, too. A lot on that page and in the video is marketing hype, but they raise some interesting points about the fact that Web browsers are fundamentally the same as they were 15 years ago, and aren&rsquo;t ideal for today&rsquo;s use, especially with all the mobile devices. Now the solution they came up with seems to be something akin to a reverse CDN: Whereas a CDN takes the load off of one server and shares it across a network of servers, Amazon Silk uses Amazon Web Services (AWS) to reduce the load on the device. From just what I&rsquo;ve seen, it doesn&rsquo;t seem like they&rsquo;ve addressed a problem with browsers, but rather with the HTTP protocol, introducing their own gateway to improve the communications. It&rsquo;ll be interesting to see what impact this new approach has, and how, if at all, it affects Web development in the years to come.</p><h2 id="web2">On the Web =&gt; Steve Jobs and Dennis Ritchie, in Memoriam</h2><p>As I&rsquo;m sure you&rsquo;re all aware, Steve Jobs, one of the founders of Apple, passed away just recently. You may also know that I&rsquo;m a pretty big fan of Apple. I first learned to program Basic on an Apple IIe, the first computer I purchased was a Macintosh Color Classic, and I&rsquo;m probably on my 10th or 12th Mac by now. I&rsquo;m not saying Macs are better than PCs, and they&rsquo;re certainly not cheaper, but I definitely prefer them. A lot has been said and written about Jobs since his passing, such that I have little to add, except I would offer that I what I think was the most brilliant thing that happened during Jobs&rsquo;s tenure was the ability to get non-Mac people to buy Apple products. For decades, if you purchased an Apple product, you were buying either a Mac or Apple software to run on a Mac. This accounted for at best about 5% of the computing population. Thanks to the iPod, iPhone, and iPad, almost all computer users and a majority of mobile phone users have one or more Apple products, whether or not they ever bought an Apple computer (and many of these people have since started buying Macs, too). Just brilliant, and the clear reason why Apple has become one of the most valuable companies in the world. Had you told me 15 years ago that Apple would become a dominant computer company and Bill Gates a prominent philanthropist, I wouldn&rsquo;t have believed you.</p><p>Jobs&rsquo;s other huge success was with Pixar, although he probably had less directly to do with Pixar&rsquo;s success than the brilliant talents employed there. Jobs purchased what became Pixar from George Lucas, helped build it up, and when Pixar was purchased by Disney, Jobs became the single largest shareholder of Walt Disney. Quite the life. If you&rsquo;d like one more little blip about Jobs, check out his <a
href="http://www.youtube.com/watch?v=D1R-jKKp3NA">Stanford commencement address</a> from 2005. In it, Jobs talks candidly about work, life, and death.</p><p>Days after Steve Jobs passed away, <a
href="http://www.nytimes.com/2011/10/14/technology/dennis-ritchie-programming-trailblazer-dies-at-70.html">Dennis Ritchie</a> died, garnering much, much less media attention. Dennis Ritchie arguably had a bigger impact on computing and the world than Jobs, but is no household name. If you&rsquo;re not familiar with Ritchie, all he did was create the C programming language, and helped develop the Unix operating system. C is one of the most important programming languages of all time. It has greatly influenced many other languages, and is still used widely today. In fact, PHP, Python, and Perl are all written in C! Unix, and its inspired variants such as Linux, is running most of the Internet, along with Apple&rsquo;s iOS devices, Tivo&rsquo;s, and many other devices.</p><h2 id="blog">On the Blog =&gt; Why There Are Few (No?) Good JavaScript Books</h2><p>Just yesterday, I <a
href="http://www.larryullman.com/2011/10/18/why-there-are-few-no-good-javascript-books/">posted a blog article</a> discussing my thoughts on why there are so few good JavaScript books. In part this post stems from time spent skimming through other JavaScript books and thinking &ldquo;Really, you&rsquo;re doing that in this book?&rdquo; And, in part, in formally writing a JavaScript book now myself, I&rsquo;m aware of some of the unique challenges that JavaScript poses for writers.</p><h2 id="qa">Q&amp;A =&gt; Could You Explain File Permissions?</h2><p>File permissions and file paths are probably two of the things that I get the most questions on, and that beginners are most often confused about. Some time back, Martin had asked if I&rsquo;d explain file permissions, and even though a previous newsletter <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#qa1">touched upon the subject</a>, it&rsquo;s worth going into again and in more detail. For a couple of reasons, I&rsquo;m going to ignore Windows permissions and focus on *nix, which includes Unix, Linux, and Mac OS X. First, all these operating systems share the same permissions scheme. Second, statistically, most Web servers are running one of these operating systems. Third, permissions in Windows rarely need to be altered or cause problems, in my experience. And, fourth, you&rsquo;re much more likely to be confused by *nix permissions, which are as follows…</p><p>File and folder permissions are an operating system&rsquo;s way of dictating who can do what to that file or folder. There are three permissions that can be granted or denied: <em>read</em>, <em>write</em>, and <em>execute</em>. For files, read means the ability to literally open and read the file; write means the ability to modify the file; and execute means the ability to run the file (e.g., as an executable or a script). For directories, read means the ability to see the names of the files in the directory; write means the ability to modify the directory (such as create, rename, or delete files and folders therein); and execute means the ability to traverse the directory (i.e., be able to go into it). You&rsquo;ll see these permissions represented by both letters—r, w, and x—and octal (base-8) numbers: 4 (read), 2 (write), and 1 (execute). These numeric values correspond to bits, meaning that different sums from 0 to 7 represent unique permission combinations. For example, 5 has to be read plus execute; 6 has to be read plus write; and, 7 is all three (5, 6, and 7 are the most common permissions digits you&rsquo;ll see).</p><p>Now for every file and folder, these permissions can be set for three types of users: the owner, the owner&rsquo;s group, and everyone. For example, on a Web server, you may have an account under the username <em>trout</em>. Your username will also be associated with a group, such as <em>clients</em>. Other people with accounts on the same server will have different usernames but may be part of the same group. There will also be other groups, such as <em>staff</em> or <em>mysql</em>. The permissions on any file or folder can be set as three octal digits, where the first digit represents the owner&rsquo;s permissions, the second represents the owner&rsquo;s group&rsquo;s permissions (i.e., the permissions for other people in that group), and the third digit represents the permissions for everyone else. 644 permissions mean that you can read from and write to that file or folder, while everyone else can only read from it. Written using letters instead of octal numbers, you&rsquo;ll see a file or folder&rsquo;s permissions represented using 10 characters: the first reflects other details about the file or folder (I won&rsquo;t get into that here); the next three are for the owner&rsquo;s read, write, and execute permissions; the next three for the owner&rsquo;s group&rsquo;s read, write, and execute permissions; and the last three for everyone&rsquo;s. Thus, the octal 644 becomes -rw-r&#8211;r&#8211;. The octal 755 is -rwxr-xr-x.</p><p>So there are the basics and the hieroglyphics you&rsquo;ll occasionally see; what does this mean in actual application? For starters, you need to understand that the third category—everyone else—means everyone else <em>on the computer</em>, not everyone else in the universe. For example, if you create a directory with open permissions—777 or -rwxrwxrwx, that doesn&rsquo;t mean anyone with an Internet connection can modify that directory&rsquo;s contents. No. You can only modify a directory&rsquo;s contents if you have access to the server&rsquo;s file system, which means you&rsquo;ve connected to the server via FTP or command line (SSH, telnet) access. And that kind of access requires using an account recognized by the server. But what about loading a Web page in the browser? Well, that is a type of server access, but not <em>file system access</em>. When a user goes to a Web site in the browser, the user isn&rsquo;t interfacing with the server&rsquo;s file system, but actually with the Web server software, such as Apache. Apache then does the actual accessing of the file system. So don&rsquo;t fret that assigning open permissions to a file or directory means that anyone in the universe has access. That&rsquo;s not the case.</p><p>But it is the case that an open file or directory on the server is accessible by any valid user on that server, assuming that other restrictions are not in place and that the user knows about its existence. For examples of restrictions, PHP can easily be limited as to which directories it can access and which it cannot. The same goes for Apache. In fact, the biggest security concern isn&rsquo;t that <em>people</em> can access and manipulate your files and folders, but rather that <em>software running on the server can</em>. And this is where you have to be careful. Many hacks take advantage of security holes in scripts or applications to make Apache and PHP—the software already running on the server—do something malicious. All things considered, this doesn&rsquo;t mean you should be cavalier about assigning open permissions, but it does mean that it&rsquo;s not out-and-out irresponsible to use them when needed. Speaking of which…</p><p>The last real-world issue you&rsquo;ll come across, which is a big complication for many, is establishing the correct permissions to allow for file uploads, or for PHP to write a text file, and the like. When you upload files to the server using FTP, or even create a directory using FTP, the owner of the uploaded file or folder will be you. The PHP script that needs to write to that text file or directory (in this case, &ldquo;write&rdquo; means to modify the directory by moving a file into it), will be running as a different user, namely the user that the Web server software (e.g., Apache) is running as (Apache commonly runs as &ldquo;nobody&rdquo;). In order for PHP to do what it needs to do, permissions need to be modified so that the Apache user can write to it. Normally this means using 755 as the permissions.</p><p>If you do need to create open directories and files, there are ways you can improve the security of using them, most of which I highlighted <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#qa1">in that previous newsletter</a>. For starters, always try to put these directories outside of the Web root directory, and then use a <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#thinking">proxy script</a> to safely fetch the contents. By doing so, you&rsquo;re able to mitigate the increased security risk of having open directories and files by adding a layer of protection against accessing the content therein.</p><h2 id="thinking">What is Larry Thinking? =&gt; Sexism and Bad User Interface</h2><p>About fifteen years ago, when I was working at Borders bookstores (RIP), a co-worker got married. Afterward, she was talking one day about how she had gone into her bank to add her new husband to her account. The bank added her husband to the account and let her know that her husband would have to come in and authorize her before she could access the account herself. Wait, what? Yes, she went in, added her husband, and was no longer able to use the account that only moments earlier had been hers. This is because the bank&rsquo;s policy was for men to be the primary account holders. As soon as her husband was added to the account, it became his account. This is just a lovely bit of institutional sexism, I think, especially when you consider that I&rsquo;m talking about the mid-1990&rsquo;s here, not 1950! I do not know what happened beyond that—I would hope she&rsquo;d change banks, but beyond the sexism, it amazed me that a system was in place in which a person has the power to disempower themselves. A very strange concept.</p><p>My wife works in the field of education, which in the United States is known for many things, among them having broad, institutional dictums imposed upon schools and faculty. A frequent cause of problems is the software people are forced to use. Having software forced upon you is a hazard all employees face, but given the situation of public schools, such software is inevitably created under the worst of all possible situations:</p><ul><li>The software needs are identified by a committee of people, none of whom will actually be using the software.</li><li>Undoubtedly a requirement is that the software can run on old, outdated computers.</li><li>The budget will be tight.</li></ul><p>Take these three things together, and you can plan on getting software that takes way too long to complete, that will be outdated and impractical upon its released, and that will be used for far too long from there. This sounds jaded, perhaps, and I&rsquo;m certainly exaggerating some, but this is essentially the situation the American education system, if not the entire American government, is in when it comes to developing custom software.</p><p>The reason I&rsquo;m thinking about this now, is that my wife was using one of these less-than-ideal applications the other day. The application itself is kind of like project management software and she was responsible for maintaining a project&rsquo;s particulars through this system. Due to a lack of good documentation, she had misidentified her role on the project (within the system) and went back in to change her role. She selected what she thought was the right role for her account on that project and ended up removing her own administrative ability to manage the project. In other words, she locked herself out, and she was ostensibly the project manager! Again, why would someone create the ability for an administrator to de-administer themselves? And, what&rsquo;s worse, absolutely no warning was given to my wife (i.e., the user) that this would be a consequence of the action about to be taken.</p><p>By comparison, my role on a project was just turned over to someone else, and part of that project involved making use of Amazon&rsquo;s resources. Amazon, which I feel generally does everything right, did not allow me, the administrator, to just remove my name and email address from the system, thereby shutting out anyone&rsquo;s access. Instead, to make the switch from me to this other person, I had to add her to the system and give her administrative access. She, then, could go in and remove my administrative access. Was this a bit more complicated? Yes. But it was the right way to handle this scenario and it worked without problem.</p><p>This, then, is a call to you: the next time you&rsquo;re working on a Web site or application, think about the user interface and make sure it makes logical sense. Write the functionality so that administrators cannot disable their own access to the system. And include great documentation, and provide many, clear warnings when actions are about to be taken that are permanent. Oh, and if you&rsquo;re running a bank, how about letting a person know that she is about to be blocked out of her own account? Or, you know, just make your policies less sexist.</p><h2 id="giveaway">Book Giveaway =&gt; &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition)</h2><p>As I expected, there was a wonderful response to my &ldquo;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&rdquo; (4th edition) giveaway. Unfortunately, I haven&rsquo;t yet had the time to respond to everyone, or really anyone. For this I apologize, and I hope to do that within the week. So if you wrote in hoping for a book, rest assured that just because you haven&rsquo;t heard from me yet means you won&rsquo;t be getting a copy (conversely, it doesn&rsquo;t mean you necessarily will, either). What really happened is that I&rsquo;m just swamped. Apologies again!</p><p>I&rsquo;ll be able to give away a few more copies of this book in a future newsletter.</p><h2 id="news">Larry Ullman&#8217;s Book News =&gt; &#8220;Modern JavaScript: Develop and Design&#8221;</h2><p>I just submitted Chapter 5 of &ldquo;Modern JavaScript: Develop and Design&rdquo;, which means I&rsquo;m about 30% done with the first draft (well, first submitted draft: there are multiple internal drafts prior to that). Progress is going more slowly than I&rsquo;d like, but I&rsquo;ve had sick kids and other personal issues making it harder to get to work. I always hope I&rsquo;m about to turn a corner and speed up. One of these days, I will!</p><p>The first three chapters cover Part 1 of the book, which represents the fundamentals of JavaScript. Chapter 1 is a bit of an introduction to JavaScript overall. Chapter 2 provides a sneak peak at how JavaScript is used in a Web browser. Chapter 3 discusses and demonstrates several tools you&rsquo;ll want to use.</p><p>The second part of the book is the heart of JavaScript as a true programming language. Chapter 4 covers simple data types (numbers, strings, and Booleans). Chapter 5 is on control structures: conditionals and loops. Now I&rsquo;m turning to the fun stuff, and the topics that differentiate JavaScript from other languages. This includes objects (Chapter 6), functions (Chapter 7), events (Chapter 8), and the browser (Chapter 9). Hopefully by the next newsletter I&rsquo;ll have those four chapters written. Hopefully!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Amazon Silk: A New Mobile Browser</title><link>http://www.larryullman.com/2011/09/28/amazon-silk-a-new-mobile-browser/</link> <comments>http://www.larryullman.com/2011/09/28/amazon-silk-a-new-mobile-browser/#comments</comments> <pubDate>Wed, 28 Sep 2011 15:25:08 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[cloud]]></category> <category><![CDATA[mobile]]></category> <category><![CDATA[silk]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2804</guid> <description><![CDATA[As you may have seen, Amazon announced their new lineup of Kindles today, from the $79 base version to the $199 Kindle Fire, a rival to Apple&#8217;s iPad. One thing that piqued my interest about the Kindle Fire is that it includes a new, custom Web browser, named Silk. Amazon posted an introduction to Silk, [...]]]></description> <content:encoded><![CDATA[<p>As you may have seen, <a
href="http://www.amazon.com/?tag=jcnusc-20">Amazon</a> announced their new lineup of Kindles today, from the <a
href="http://www.amazon.com/Kindle-Wi-Fi-Ink-Display-Screensavers/dp/B0051QVESA/ref=amb_link_357575542_5?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=gateway-center-column&amp;pf_rd_r=0YK3BQYAKPGA5XD7K998&amp;pf_rd_t=101&amp;pf_rd_p=1321408942&amp;pf_rd_i=507846">$79 base version</a> to the <a
href="http://www.amazon.com/Kindle-Color-Multi-touch-Display-Wi-Fi/dp/B0051VVOB2/ref=amb_link_357575542_7?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=gateway-center-column&amp;pf_rd_r=0YK3BQYAKPGA5XD7K998&amp;pf_rd_t=101&amp;pf_rd_p=1321408942&amp;pf_rd_i=507846">$199 Kindle Fire</a>, a rival to Apple&#8217;s iPad. One thing that piqued my interest about the Kindle Fire is that it includes a new, custom Web browser, named <a
href="http://amazonsilk.wordpress.com/">Silk</a>. Amazon posted <a
href="http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/">an introduction to Silk</a>, along with a six-minute video, on their site today, too. A lot on that page and in the video is marketing hype, but they raise some interesting points about the fact that Web browsers are fundamentally the same as they were 15 years ago, and aren&#8217;t ideal for today&#8217;s use, especially with all the mobile devices. Now the solution they came up with seems to be something akin to a reverse CDN: Whereas a CDN takes the load off of one server and shares it across a network of servers, Amazon Silk uses Amazon Web Services (AWS) to reduce the load on the device. From just what I&#8217;ve seen, it doesn&#8217;t seem like they&#8217;ve addressed a problem with browsers, but rather with the HTTP protocol, introducing their own gateway to improve the communications. It&#8217;ll be interesting to see what impact this new approach has, and how, if at all, it affects Web development in the years to come.</p><p>Oh, and it may be time for me to buy a new gizmo!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/09/28/amazon-silk-a-new-mobile-browser/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How I Cut My Bandwidth In Half</title><link>http://www.larryullman.com/2011/05/16/how-i-cut-my-bandwidth-in-half/</link> <comments>http://www.larryullman.com/2011/05/16/how-i-cut-my-bandwidth-in-half/#comments</comments> <pubDate>Mon, 16 May 2011 00:41:58 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[bandwidth]]></category> <category><![CDATA[cdn]]></category> <category><![CDATA[cloudfront]]></category> <category><![CDATA[hosting]]></category> <category><![CDATA[yslow]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2568</guid> <description><![CDATA[In January of 2011, the third full month after putting this site online, there were roughly 450,000 page views requiring 27GB of bandwidth (i.e., mostly data provided by the server to users). In April of 2011, there were also 450,000 page views, but only 14GB of bandwidth. That&#8217;s a dramatic difference: half the bandwidth for [...]]]></description> <content:encoded><![CDATA[<p>In January of 2011, the third full month after putting this site online, there were roughly 450,000 page views requiring 27GB of bandwidth (i.e., mostly data provided by the server to users). In April of 2011, there were also 450,000 page views, but only 14GB of bandwidth. That&#8217;s a dramatic difference: half the bandwidth for virtually the same amount of traffic! This wasn&#8217;t a goal of mine (my hosting plan allows for up to 1TB of bandwidth per month), but happens to be a great side benefit of three steps I took, primarily with the aim of improving the site&#8217;s performance (i.e., how quickly pages load for visitors). Here&#8217;s the full scoop&#8230;<span
id="more-2568"></span></p><p>In the Fall of 2010, I was finally able to purchase my name as a domain, allowing me to switch from using my company&#8217;s domain name (www.DMCInsights.com) to this domain for all my work stuff (the company is just me and no one cares about the company). In the process, I went from a custom site to using a <a
href="http://wordpress.org/">WordPress</a>-based one. The custom site primarily used PHP to handle the templates, but it also pulled some content, such as book errors, out of a database, and ran the newsletter system. Part of the justification for moving to WordPress was that I had previously (and finally) created a blog on a subdomain of my company&#8217;s site, and consequently the blog had the most frequent updates (by far). The &#8220;main&#8221; pages of my old site were not being updated with any frequency, making the site erroneously seem inactive, so the blog needed to be moved to the forefront. Another part of the justification was that by using WordPress, I would easily get a search engine for my entire site, something I had never gotten around to adding to the old site. In the process of switching, I also created a new template, based upon the <a
href="http://carringtontheme.com/">Carrington Theme</a>. The transition from the old site to this new one wasn&#8217;t perfect, but overall I think it went well enough. I&#8217;ve had to spend some time putting out little fires (there was an issue with redirects and I have to occasionally debug conflicts between the Flash widget and the navigation menus), but just by creating the new site, I was able to revisit and update all of the site&#8217;s content, which is something I should have done long ago.</p><p>The downside to using WordPress, or any Content Management System (CMS), is that general-purpose software is always going to be less efficient than a custom solution. WordPress, while being an excellent product, simply cannot be both <em>flexible</em> and <em>optimal</em> (from a performance standpoint). Once you start using plug-ins, performance is hindered even more so. After putting the new site online, I started analyzing its performance, using <a
href="http://developer.yahoo.com/yslow/">YSlow!</a> (which I&#8217;ve <a
href="http://www.larryullman.com/series/yahoo-yslow/">written about previously</a>). YSlow! makes specific recommendations for improving a site&#8217;s performance, which is a great way to get started. Once you know what you&#8217;re doing, however, or are looking at the site on a micro level, you&#8217;ll start paying more attention to what YSlow! reports as the resources being loaded: the number and size of requests being made. What I saw was a lot more CSS, JavaScript, and media being loaded than I had expected. I had specifically chosen a theme that was relatively simple in terms of images and yet&#8230; And then there are all those CSS files and JavaScript libraries! Ugh. The problem, in hindsight, was obvious: many of the plug-ins added their own CSS, images, and JavaScript to each page. The first, and most important, step for improving a site&#8217;s performance is common sense: <strong>Limit how much stuff the visitor has to download</strong>.</p><p>There are two ways of limiting the amount of content to be downloaded. First, you can outright eliminate the <em>need</em>. This is not always possible, but should be the first goal. With a standard site, you may be able to cut the amount of media used. You should also remove outdated references to CSS, JavaScript, and media once those assets are no longer needed. For example, after altering the settings for this theme, there were many resources that no longer needed to be loaded and you might encounter the same thing after a major redesign. Second, you can <em>combine downloaded content together</em>: multiple CSS files can be turned into one; multiple JavaScript files into one; and multiple images into a couple of <a
href="http://www.google.com/search?q=css+sprite">CSS sprites</a>. This isn&#8217;t always possible, or appropriate, but is worth investigating. With images, you can also use <a
href="http://www.smushit.com/ysmush.it/">Yahoo!&#8217;s Smush.it</a> tool to make images as small as possible. I was able to reduce the combined size of all the images by about 15% or more using it (your results may be better as this site uses few and small images). CSS and JavaScript files can be minimized to shrink their sizes down.</p><p>With this WordPress site in particular, restricting the number of images, CSS files, and JavaScript includes required actively tweaking, and sometimes replacing, the plug-ins in use. Some of the smartest plug-ins allow you to disable their automatic CSS and JavaScript inclusion, leaving it to you to manually add that content to the theme&#8217;s primary files instead. If you&#8217;re also using WordPress, take a moment, or a day, to really investigate what your plug-ins are doing. In some cases I was able to outright disable the plug-in and hardwire its functionality to my theme.</p><p>The second change I made to the site (in February), which had a huge impact on the site&#8217;s performance and its bandwidth was <strong>embracing a Content Delivery Network</strong> (CDN), specifically <a
href="http://aws.amazon.com/cloudfront/">Amazon&#8217;s Cloudfront</a>. Most of the site&#8217;s supporting resources—CSS, JavaScript, and images—are now being provided by Amazon&#8217;s worldwide network. The original goal for using the CDN was to provide content to visitors from servers closer to their geographic location, but this also means that a ton of served data is not being provided by <em>my</em> server. For the month of April, that amounted to approximately 8GB! When I first learned about CDNs, I assumed they were only for huge sites that could afford the expense, but Amazon&#8217;s Cloudfront has definitely changed that equation. My cost for the month of April: <strong>$1.77</strong> (US). As I&#8217;ve <a
href="http://www.larryullman.com/2011/02/20/using-amazons-cloudfront-as-a-cdn/">written about separately</a>, for the first year, the cost of <a
href="http://aws.amazon.com/s3/">Amazon&#8217;s Simple Storage Service (S3)</a> is free, so next year this total cost will increase, but, still, it will be very cheap for what I&#8217;m getting.</p><p>If you run the numbers, in April I used 13GB less bandwidth than in January. Assuming that the incoming bandwidth is inconsequential, after deducting the 8GB served by Amazon&#8217;s Cloudfront, there&#8217;s still another 5GB of data that&#8217;s no longer being provided by my server. Much of that was by eliminating the amount of data to be downloaded (i.e., step one), but I suspect another key change, made in March, was the switch to <a
href="http://www.invisionpower.com/products/board/">new forum software</a>. Again, the intent here was not to change the bandwidth, or really even to improve the performance, but rather upgrade an important and sorely outdated aspect of my site. The forum probably gets as much traffic as the main site and I strongly suspect that the new forum software is optimized more thoroughly than the open-source alternative I had previously been using.</p><p>As I said, I&#8217;m not even closing to hitting the bandwidth limitations on my hosting account, but less bandwidth used (for the same amount of traffic) is a good thing. Not only does it imply better performance for my site&#8217;s visitors, but it also means that it&#8217;ll be that much longer before I need to spend the extra money on bigger or more servers. But perhaps the more important lesson I learned is how useful it is to do thorough examinations of your Web sites, especially after the&#8217;ve been up for a while. A Web site is a dynamic thing that needs to be maintained and updated, not posted once and forgotten.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/05/16/how-i-cut-my-bandwidth-in-half/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Adding a CDN; Improving Site Speed</title><link>http://www.larryullman.com/2011/02/12/adding-a-cdn-improving-site-speed/</link> <comments>http://www.larryullman.com/2011/02/12/adding-a-cdn-improving-site-speed/#comments</comments> <pubDate>Sat, 12 Feb 2011 21:33:55 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[cdn]]></category> <category><![CDATA[cloudfront]]></category> <category><![CDATA[yslow]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2292</guid> <description><![CDATA[I&#8217;m in the process of implementing Amazon&#8217;s CloudFront as a CDN (Content Delivery Network) for my site (in order to improve performance). Once I feel comfortable with how it&#8217;s working (it seems to be now, but it will take a day or two to fully roll out), I&#8217;ll formally write up what I did and [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;m in the process of implementing Amazon&#8217;s CloudFront as a CDN (Content Delivery Network) for my site (in order to improve performance). Once I feel comfortable with how it&#8217;s working (it seems to be now, but it will take a day or two to fully roll out), I&#8217;ll formally write up what I did and why. In the meantime, if you see anything crazy, please let me know.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/02/12/adding-a-cdn-improving-site-speed/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Amazon Author Connect Page</title><link>http://www.larryullman.com/2009/06/06/amazon-author-connect-page/</link> <comments>http://www.larryullman.com/2009/06/06/amazon-author-connect-page/#comments</comments> <pubDate>Sat, 06 Jun 2009 09:52:58 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[about]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[book]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=445</guid> <description><![CDATA[Through Amazon&#8217;s Author Connect service, Amazon.com now has a &#8220;home page&#8221; for my work. Right now, my author page there lists all of my books, has my bibliography, and displays the feed for this blog (which means, in a circular connection, this post about Amazon&#8217;s service will show up there, too). In time Amazon plans [...]]]></description> <content:encoded><![CDATA[<p>Through Amazon&#8217;s <a
href="http://authorcentral.amazon.com/">Author Connect</a> service, Amazon.com now has a <a
href="http://www.amazon.com/-/e/B001ILFLY0">&#8220;home page&#8221; for my work</a>. Right now, my author page there lists all of my books, has my bibliography, and displays the feed for this blog (which means, in a circular connection, this post about Amazon&#8217;s service will show up there, too). In time Amazon plans on adding more features. This doesn&#8217;t really affect me much, although if it helps people find my work, all the better. The best thing for me is that I no longer have to maintain two blogs: my own and one at Amazon.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2009/06/06/amazon-author-connect-page/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
<!-- Served from: www.larryullman.com @ 2012-05-21 14:25:11 by W3 Total Cache -->
