- About DMCI :
- Larry Ullman :
- Books :
- Forum :
- Contact :
- Newsletter Signup :
- Newsletter Archives :
- Blog :
Newsletter Archives
What is Larry Thinking? #28 (May 29, 2010)
In this edition...
- About This Newsletter
- On the Blog => HTML5 Video
- On the Web => Second Excerpt from “Effortless Flex 4 Development”
- On the Web => Google “recursion”
- On the Web => Editra Editor
- On the Web => Google's Ajax Libraries API
- Q&A => What are the dangers with PHP's allow_url_fopen setting?
- What is Larry Thinking? => Partly Cloudy with a Chance of Savings
- Larry Ullman's Book News => “Effortless Flex 4 Development” and more
About This Newsletter
No particular theme this time, just some stuff I've found, the answer to a good question sent in some time back, and news about my forthcoming books. In my next newsletter I'll probably do a giveaway, but feel free to keep those questions and comments coming in the interim. As always, thanks for reading!
On the Blog => HTML5 Video
In recent weeks I've come across two new players for video in HTML5. Because HTML5 has a video element, you can now embed video in an HTML page without using a plug-in. The players that control the actual playing of the video are written in JavaScript. You can find more information about these two players, and HTML5 in general, here.
On the Web => Second Excerpt from “Effortless Flex 4 Development”
Peachpit Press, publisher of my forthcoming “Effortless Flex 4 Development” book, has published another excerpt of the book online, free for anyone to read. (Technically New Riders is the publisher, but New Riders is owned by Peachpit.) This article represents a few pages from Chapter 4 of the book, “Event Management”. It follows the previous excerpt (also from Chapter 4), which you should probably read first if you haven’t. The first excerpt largely discusses event handling theory; in this excerpt you’ll see how to turn that theory into actual code. Even if you don’t yet know Flex and ActionScript, you should still be able to follow along. Most importantly, Flex is largely an event-driven approach to application development (conversely, Flash Professional is primarily a timeline-driven approach), so this section is really a key insight into what it’s like to use Flex.
I’ve also completed one “5 Tips in 5 Days” blog posts series for Peachpit’s site, although it has not yet been published, and am working on a second now. One series will be specifically on the Flex 4 framework and the other will be on Flash Builder. Flash Builder, in case you’re not familiar with it, used to be called Flex Builder and is just a commercial IDE for developing using Flex. You don’t have to use Flash Builder as the Flex 4 framework and its SDK are available for free, but it does ease the process significantly. The book does not assume you’re using Flash Builder, either. There are specific instructions for how to create Flex applications using a text editor and the command-line IDE, but there are also areas that cover how you would do X or Y using Flash Builder. Most of the book focuses on the Flex framework, so it doesn’t matter what development tools you’re using.
On the Web => Google “recursion”
I can't remember where I first saw this, but as an amusing little diversion, trying Googling the word “recursion”. Someone at Google certainly has a clever sense of humor!
On the Web => Editra Editor
I've recently come across the Editra text editor, which is currently in its alpha release. Editra runs on most operating systems (there are installers for Windows and Mac OS X and you can install it on Linux/Unix from the source) and is free for personal use. It has all the basic text editor features and supports a ton of programming languages. It'll be interesting to see how this project evolves but keep it in mind if you're looking for a good, free text editor.
On the Web => Google's Ajax Libraries API
In my blog series on using YSlow! to test and speed up your Web site, I came across the concept of CDN. Short for content delivery network, this is something I hadn't personally considered before because it requires using multiple servers to provide content to the end user. For most sites, you won't be managing multiple servers; However, there is still a way to use CDNs, thanks to Google's Ajax Libraries API. In any situation, most of the content on your site will be stored on your server, including the media, CSS, HTML, that coming from a database, etc. But there is one thing you might easily be able to get elsewhere: some of the JavaScript.
Say you're using a common JavaScript framework, which many of us are by now. Normally you would upload a copy of the framework to your site. When the user loads your page in their browser, the browser will also need to load your copy of the framework, as it won't already have a copy (assuming this is the first visit). But, if your framework comes from another common server, it's possible that the user will already have a copy of that and will not then need to download it again, thereby speeding up the rendering of the page. This is where Google's Ajax Libraries API comes into play. Using it, you can tell the browser to download jQuery, MooTools, or whatever from Google. If the user has already been to a different site (completely unrelated to yours) that also used that same version of the same library from Google, the browser won't have to download the framework again.
Q&A =>What are the dangers with PHP's allow_url_fopen setting?
In a previous newsletter I had posted about the PhpSecInfo tool that will inspect your PHP configuration for possible security concerns. One reader, Jim, tried this and received a warning about PHP's allow_url_fopen setting being enabled and asked how dangerous this was. First, let's look at what allow_url_fopen does.
The fopen() function is used to open files. It can be overtly used in your code but it's also implicitly used by functions such as file_get_contents(), include(), and require(). These last two are important, because they're used all the time by even relatively basic PHP sites. If allow_url_fopen is set to true, then PHP has the ability to open URLs with fopen(): in other words, you can open files from other servers, not just those on your own server. If you're using include() and require(), you can include files from other servers, not just your own. In itself, this is not a security concern. The problem comes when an fopen(), include(), require(), or other functions make use of user-derived data.
For example, on my own site, where I have a separate section for each book I've written, the book's ID is passed in the URL. That ID value is then used to dictate which modules are included. Fortunately I run the ID through a switch and then determine the module to be included based upon acceptable values of the ID. I say "fortunately", because almost as soon as I revamped my site using this system, I started seeing error messages because malicious users were trying to change id=XXXX in the URL to id=http://www.somesite.com/somebadcode.txt. I checked out that somebadcode.txt file and it was a bunch of PHP code meant to inspect my server and dispaly information. If that file was included, the code would be include and run as if it were a PHP script on my own server. Not good! This didn't end up being a problem for me, because my PHP script was written to only acknowledge accepted values, but it could have been an easy way for hackers to get access to my site. Clearly, properly filtering the data was the fix, but disabling allow_url_fopen would prevent some problems even if my data wasn't properly filtered. This is kind of like the register_globals setting issue, which isn't a security risk in itself when enabled, it's only a security risk when your programming relies upon register_globals.
Even if allow_url_fopen is disabled, you still need to be careful when using user-derived data in any file-related calls, however. If I passed id=somefile.html in my URL and didn't validate the ID value before including that file, a user could change that to id=.htaccess (or whatever) in order to fish for potential information. And if you do need to open files on other servers, the recommendation is to use the cURL library instead.
What is Larry Thinking? => Partly Cloudy with a Chance of Upscaling
For the past year or so, there's been tons of talk about "Cloud Services". Amazon and Aptana were the first two companies offering cloud services that I came across (Aptana in conjunction with Jaxer, their server-side JavaScript tool), but there are tons of alternatives these days. Cloud computing, simply put, is Internet-based computing as opposed to local computing. For example, instead of installing Microsoft Office on every computer, a business might use Google Docs instead. There are many ways cloud computing can be used (just check out Amazon's services for a representative list), but the two most common purposes are data storage and data processing.
There are a couple of obvious benefits to using cloud computing. The first is reliability: by taking work off of your own computer and putting it on a more expansive network, you're tapping into presumably better infrastructure (and may also have secondary backups this way). Another benefit is ease of maintenance: somone else is now responsible for keeping the servers running and secure (and most likely this is a team of people with more knowledge and experience). A third benefit is scalability: if I max out my server's capacities, there's little I can do. But a cloud server is part of a large network that can balance and share the data and workload among many, many computers. And this brings me to how cloud computer can help the average Jane...
As Clint pointed out in response to a previous emails, cloud services are an excellent way to ensure that your Web sites can scale well but without spending too much money up front. From the research I've done on cloud computing services, how much you pay is based upon how much in terms of resources you use. If your site is really busy, has lots of data to store and process, you use more cloud services and get billed more, but your system doesn't crash or seize up. I think cloud computing is something anyone should consider on any project they suspect could be quite busy and demanding in the future. You just need to make sure that you're bringing in the income, or have money in reserve, should your usage spike and you get hit with that several thousand dollar bill!
Larry Ullman's Book News => “Effortless Flex 4 Development” and more
I am very happy to say that my “Effortless Flex 4 Development” book is finished and will be heading off to the printer soon. I think the book turned out pretty well and the feedback I've seen from third-parties was positive. The publisher was also kind enough to give me another 80 pages once it seemed clear that I wouldn't be able to cover everything I wanted in the originally allotted space. I'll be giving away a few copies of the book (probably in the next newsletter) and keeping everyone informed as to when it becomes available in bookstores.
After I wrap up a couple of little Web sites over the next week, I'm on to my “E-Commerce with PHP and MySQL” book. This book will also be written for New Riders, meaning it won't have the same steps and two-column structure as the Visual QuickStart/Pro Guides I often do. As I found on the Flex book, the lack of formal structure freed me up as to how I write about things. It allows me to discuss things in more depth and not necessarily come up with an example of every point.
For this e-commerce book, I'm going to create a rough table of contents which will be a guide as to what I plan on discussing. These will be the big topics like security, user interface, search engine optimization and marketing, etc. The book will use two example sites to demonstrate these concepts in terms of actual code. So I'll then develop all the code for both examples in the book before I do any writing. I can't normally write books in this way (because there's rarely one, concrete end goal), so it'll be interesting here. This approach will also give me some flexibility as to the final content depending upon the alloted pages. For example, I might have a chapter about adding Ajax features to one of the projects and this chapter would make it in if possible. If not, it could be published as an online extra. Once I get the working versions of both examples completed, I'll post those URLs here for anyone to look at, learn from, and provide feedback on.There's also a forum thread in which people can make suggestions as to what I do and do not discuss.
After I complete the e-commerce book, my hope is to begin on my self-published JavaScript book. I already started on it, some, and have a rough table of contents, but now it's time to really churn it out. The book is going to teach JavaScript in the same way I teach PHP: what you really need to know from A to Z. So you'll start by actually learning JavaScript, instead of just cobbling together code and not knowing why it works (or, more likely, doesn't). JavaScript is a comparatively small language in terms of variable types, functions, and so forth, so the learning will be the first third or 40% of the book. Then I'll demonstrate practical uses of JavaScript, which are applications of that knowledge. That section will include both writing JavaScript from scratch and how one would do the same things using frameworks (probably jQuery and at least one other example framework).
My intent is to put it online for free as a series of HTML pages and to also sell it as a PDF and in Kindle format through Amazon. It's not a problem writing the book myself, but in order to "publish" it, I'm going to need to use a program such as InDesign to lay the code and figures out in chapters myself. So I'm going to have to learn something new here.
I'm already in talks with Peachpit Press for what titles I'll do in 2011. Fourth editions of my "PHP for the Web: Visual QuickStart Guide" and "PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guides" are likely candidates.
Read Current Newsletter
Past Issues
#1 (June 25, 2007)
- About this Newsletter
- On the Web => PHPSecInfo
- In the Forums => Preventing Spam through PHP
- What is Larry Thinking => Creating a Successful Web Site, part 1
- Book Giveaway Update
- My Book News
#2 (July 10, 2007)
- About this Newsletter
- Q & A => Why not do a blog instead?
- On the Web => Improving MySQL Performance
- What is Larry Thinking => Creating a Successful Web Site, part 2
- Book Giveaway Update
- My Book News
#3 (August 8, 2007)
- About this Newsletter
- On the Web => The End of PHP 4
- What is Larry Thinking => Spam, Spam, Spam
- Book Giveaway Update
- My Book News
#4 (August 26, 2007)
- About this Newsletter
- Q & A => What kind of Web hosting do I need?
- What is Larry Thinking => Finding a Good Web Host
- Book Giveaway Update
- My Book News
#5 (October 1, 2007)
- About this Newsletter
- Q & A => What is a JavaScript-free, universally accessible no-spam solution that allows people to contact you through a Web site?
- What is Larry Thinking => Introducing Adobe AIR
- Book Giveaway: Building a Web Site with Ajax: Visual QuickProject
- My Book News
#6 (November 7, 2007)
- About this Newsletter
- What is Larry Thinking => Introducing "PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide (3rd Edition)"
- Book Giveaway: "PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide (3rd Edition)"
- My Book News
#7 (November 27, 2007)
- About this Newsletter
- On the Web => QuickSilver
- What is Larry Thinking => About Apple, Macs, and Mac OS X
- What is Larry Thinking => My Favorite Applications
- My Book News
#8 (December 19, 2007)
- About this Newsletter
- Have you done work for readers? Are you available for hire?
- How do you manage your time/workload? How long does it take to write a book?
- How did you teach yourself PHP? MySQL?
- When you get stuck with a php problem or other language problem, where do you turn to for help?
- Is there any thing that you still consider hard to do on the computer, or that you've had trouble doing, or have had trouble learning?
- What are your favorite tools of the trade, editors and such?
- Besides your books, what other authors do you respect and recommend?
- What is Linux and what makes it better than other OS's? Which version of Linux do you recommend?
- Do you feel that it's best to build a project with an open source resource or to start from scratch and why?
- What should I do/learn/pursue?
#9 (January 17, 2008)
- About this Newsletter
- On the Web=> Sun to buy MySQL
- Q & A => How do you install PHP 6 when it hasn't yet been released?
- In the Forums => Developing an E-Commerce Site
- Book Giveaway Update => "PHP 6 and MySQL 5 for Dynamic Web Sites" Books Have Been Mailed
- My Book News => "Adobe AIR: Visual QuickPro Guide" Available in Rough Cuts
#10 (February 18, 2008)
- About this Newsletter
- Q & A =>What are some of your favorite hobbies, outside of computers?
- Q & A =>When should I use OOP vs procedural programming?
- Q & A =>When should I use a framework?
- Q & A =>What mailing list software do you recommend?
- What is Larry Thinking=> The Story of My Dryer
- My Book News => "Adobe AIR: Visual QuickPro Guide" Update
#11 (March 23, 2008)
- About this Newsletter
- On the Web => Larry Appearing at the Voices That Matter Web Design Conference
- What is Larry Thinking=> The Adobe Air Experience
- Book Giveaway => "Adobe AIR: Visual QuickPro Guide" and others
- My Book News => "Adobe AIR: Visual QuickPro Guide" Update
#12 (May 5, 2008)
- About this Newsletter
- On the Web => Larry Appearing at the Voices That Matter Web Design Conference
- On the Web => Q&A Session with MySQL's CEO
- Q & A=> What security measures do Adobe AIR applications take?
- Q & A=> Is it still that important for programs to be efficient?
- Q & A=> What technologies do you prefer to use?
- Book Giveaway => "Adobe AIR with Ajax: Visual QuickPro Guide" and others
- My Book News => "Adobe AIR with Ajax: Visual QuickPro Guide" Published!
#13, Mac Edition (June 15, 2008)
- About this Newsletter
- On the Web: Other World Computing
- What is Larry Thinking => Leopard
- What is Larry Thinking => My Favorite Applications
- What is Larry Thinking => Stickies and Notes
- My Book News
#14 (July 9, 2008)
- About this Newsletter
- On the Web => Adobe AIR Chapter Available Online
- On the Web => Ruby is on the Rise
- On the Web => Ruby on Rails Screencasts
- What is Larry Thinking => Five Seconds on Ruby
- Book Giveaway => Foreign Editions
- My Book News
#15 (August 6, 2008)
- About This Newsletter
- In the Forum => Online Poll
- What is Larry Thinking => The Business of Business
- What is Larry Thinking => Contracts
- My Book News
#16 (October 23, 2008)
- About This Newsletter
- In the Forum => Online Poll
- On the Web => MoWeS Portable
- On the Web => Adobe MAX 2008
- On the Web => Ruby on the Rise
- Q&A => How do I protect my Web site's copyright?
- Q&A => How do I get new business?
- Q&A => How do you learn new technologies?
- What is Larry Thinking => Contracts Revisited
- Book Giveaway
- My Book News
#17 (December 3, 2008)
- About This Newsletter
- On the Web => My Blog
- On the Web => Learning the Linux Shell
- On the Web => Web Design Resources
- Q&A => What newsletters do you subscribe to?
- Q&A => How do you get a book published?
- Q&A => What browser do you recommend?
- Q&A => How do Google Gears, Microsoft's Silverlight, and Adobe AIR compare?
- Book Giveaway
- My Book News
#18 (January 8, 2009)
- About This Newsletter
- On the Blog => User Interface
- On the Web => Sitepoint
- On the Web => Less known SQL syntax and functions in MySQL
- On the Web => Essential Bookmarks for Web Designers and Developers
- Q&A => How do you argue for PHP?
- Book Giveaway Preview
- My Book News => Announcing the E-Commerce Book!
#19 (January 29, 2009)
- About This Newsletter
- On the Blog => Comments for My Forthcoming E-Commerce Book
- On the Blog => Speeding Up Your Web Site
- On the Web => MaxMind JavaScript Web Service
- Q&A => About Adobe AIR
- What is Larry Thinking? => Finding a Graphic Designer
- What is Larry Thinking? => Rich Internet Applications
- Book Giveaway
- My Book News => My E-Commerce Book!
#20 (March 3, 2009)
- About This Newsletter
- On the Blog => An Introduction to jQuery
- On the Web => Building RIA's with the Adobe Flash Platform
- Q&A => How do I make a Web site easily administratable?
- Q&A => How can I generate static HTML-pages from database content?
- Q&A => How do I prevent spam form submissions?
- Q&A => What should I learn next?
- Q&A => The Ruby vs PHP Debate
- Q&A => How can I convince clients to actually follow through with their deliverable commitments in a timely fashion (without nagging them to death)?
- What is Larry Thinking? => Getting Things Done
- Book Giveaway
- My Book News
#21 (April 22, 2009)
- About This Newsletter
- On the Blog => An Introduction to jQuery, Continued
- On the Web => Yii Framework
- On the Web => Linux GTD Apps
- Q&A => How does one learn JavaScript and/or jQuery?
- What is Larry Thinking? => PHP Frameworks, Revisited, in Relative Detail
#22 (May 30, 2009)
- About This Newsletter
- On the Blog => PHP Variables: Passing by Value or Reference
- On the Web => Larry Ullman's Blog Available Through Kindle
- On the Web => Sign-Up Forms Must Die and the $300 Million Button
- Q&A => How do I dynamically generate pages using a MySQL table's columns?
- Q&A => How can I generate static HTML pages from dynamic content?
- What is Larry Thinking? => The Yii Framework, Continued
- Book Giveaway => Ruby: Visual QuickStart Guide
- Larry Ullman's Book News => E-commerce, JavaScript
#23 (October 30, 2009)
- About This Newsletter
- Newsletter E-mail Address Change!
- About My Situation
- On the Blog => Understanding MVC
- In the Forum => Being Self-Taught
- On the Web => Best of Open Source Software Awards
- On the Web => Git: Your New Best Friend
- On the Web => Titanium Desktop
- Q&A => How do I improve my programming skills?
- Q&A => How do you organize your code library?
- What is Larry Thinking? => Mac's Snow Leopard Release
- Larry Ullman's Book News => E-commerce, Flex, JavaScript
#24 (December 17, 2009)
- About This Newsletter
- On the Blog => Learning the Yii Framework
- On the Web => Adobe's BrowserLab
- On the Web => Zend Interviews
- Q&A => What do I need to know about SSL?
- Book Giveaway => PHP for the Web: Visual QuickStart Guide and Translations
- Larry Ullman's Book News => Effortless Flex Development
#25 (February 2, 2010)
- About This Newsletter
- On the Blog => Access Control and Authentication in Yii
- On the Web => HTML Purifier
- Q&A => How do I go about learning Ajax?
- Q&A => PHP vs ASP.NET vs ???
- Q&A => Do you do any social networking?
- What is Larry Thinking? => Starting a New Business
- Book Giveaway => PHP for the Web: Visual QuickStart Guide and Translations
- Larry Ullman's Book News => Flex
#26 (March 18, 2010)
- About This Newsletter
- On the Blog => The First Rule of User Interface
- On the Blog => The Economics of Publishing
- On the Blog => What's New in Yii 1.1
- On the Web => EasyPHP
- On the Web => PHP in Facebook
- Q&A => With the availability of so many PHP frameworks, what is the role of PEAR? Is it still useful?
- Q&A => From your perspective, as a PHP expert, do you think more and more computer people are learning applications (Drupal, Joomla, osCommerce), and not learning "core PHP language" stuff?
- Q&A => Where is PHP headed? Is there a future for PHP and if so do you see it becoming more widespread or being superceded by other newer technologies?
- What is Larry Thinking? => Starting a New Business, Follow Up
- Larry Ullman's Book News => Effortless Flex 4 Development
#27 (April 24, 2010)
- About This Newsletter
- On the Blog => A Simple Approach to Site Security
- On the Web => BumpTop, the Snazz Desktop App
- On the Web => Excerpt from “Effortless Flex 4 Development”
- On the Web => DMC Insights, Inc. Reaches a Million Hits
- Q&A => What's your current development setup?
- Q&A => How do I get published?
- Q&A => How do I automatically backup my databases?
- What is Larry Thinking? => Coming Full Circle
- Larry Ullman's Book News => Effortless Fles 4 Development
What is Larry Thinking? #28 (May 29, 2010)
- About This Newsletter
- On the Blog => HTML5 Video
- On the Web => Second Excerpt from “Effortless Flex 4 Development”
- On the Web => Google “recursion”
- On the Web => Editra Editor
- On the Web => Google's Ajax Libraries API
- Q&A => What are the dangers with PHP's allow_url_fopen setting?
- What is Larry Thinking? => Partly Cloudy with a Chance of Savings
- Larry Ullman's Book News => “Effortless Flex 4 Development” and more
What is Larry Thinking? #29 (June 24, 2010)
- About This Newsletter
- On the Blog => “E-Commerce with PHP and MySQL” Table of Contents
- On the Web => “Five Flex/Flash Builder Tips in Five Days” Blog Posts
- On the Web => The Open Standard Media (OSM) Player for HTML5
- On the Web => A Roundup of 15 Mobile Web Design Tutorials
- Q&A => What are the practical benefits of learning JavaScript for a hobby web developer?
- Q&A => What is the target group of Flex and why would one start with Flex?
- What is Larry Thinking? => Testing the Waters: Self-Publishing
- Book Giveaway=> “Effortless Flex 4 Development”
- Larry Ullman's Book News => “Effortless Flex 4 Development” and More!
