In this edition…
- About This Newsletter
- What Were You Thinking? => Doing What I Do
- On the Web => Flash Builder 4.5 for PHP
- On the Web => The Modernizr JavaScript Library
- Q&A => What Do You Think About HTML5, CSS3, and the Future?
- Q&A => Where Are Your Thoughts on HTML5, Browsers, and Mobile Devices?
- What is Larry Thinking => Quantum Computing
- Book Giveaway => “PHP for the Web: Visual QuickStart Guide” and “Effortless Flex 4 Development”
- Larry Ullman’s Book News => “PHP and MySQL for Dynamic Web Sites” (4th Edition) and “Modern JavaScript”
About This Newsletter
Hello, hello, hello. For those of you in the United States, I hope you’re reading this in a quiet, air conditioned room (it’s been a brutally hot summer here in the states)! The three weeks since the last newsletter went by quickly, so much so that it’s actually been about four weeks! This newsletter begins with a reader response to my extended “Careers in IT”/”Doing What I Do” series, posted in the past several newsletters. Next you’ll find references to a few interesting things online, followed by answers to some questions I’ve received (thanks for those!). At the conclusion of the newsletter, there’s a blip about quantum computing, stemming from a fascinating article in The New Yorker a couple months back. All in all, this newsletter is largely about future tech. And, per usual, the newsletter ends with news about my forthcoming books. Oh, and there’s a book giveaway, too, with another one to follow in about a month or so.
As always, questions, comments, and all feedback are much appreciated. And thanks for your interest in what I have to say and do!
What Were You Thinking? => Doing What I Do
Over several issues of this newsletter, I discussed careers in IT and doing what I do. Something I’ve mentioned before is that a great thing about working in IT is that you can imagine, and realize, your own projects. This is not something that architects or doctors can do (not ethically, at least!). Specifically I mentioned that you’re able to try to create your own Next Big Thing, and can often do so with little introductory cost. Ross replied with a good point about how “aiming for ‘The Next Big Thing’ may skew the discussion a bit”. There are lots of levels of success, many of them far more attainable than trying to earn yourself billionaire status. Ross says that he tries to objectively analyze a project, determining the likelihood of making money and, at what level. Having a sense of that makes it easier for him to adjust the risk—financial and otherwise—he takes accordingly. The question Ross asks himself is “Can a creation be profitable and sustainable, and do the finances work [for the creator’s] personal situation?”
My thanks to Ross for this input, and I hope I didn’t badly misrepresent his perspective. I agree that it’s important to look at projects not just in terms of how financially successful they can be, but also in terms of whether the reasonable estimate of success matches the amount of personal risk. And, Ross’s bigger point is that there are multiple goals one can shoot for, many of them far more attainable than others.
I would also point out that, so long as the personal risk and loss isn’t too great, there’s a lot of value that can be gained through failure. Not that I like it when projects fail, but as Walter Brunell said, “Failure is the tuition you pay for success.”
On the Web => Flash Builder 4.5 for PHP
Version 4.5 of the Flex framework makes it easier to develop applications destined for mobile devices, but version 4.5 of the corresponding Flash Builder IDE also comes with a nice bonus: even better integration with PHP.
PHP is my Web programming language of choice, and in version 4 of the Flex framework and the Flash Builder IDE, Adobe made a purposeful attempt to increase usage of Flex among the PHP community (this is also when I really began embracing Flex). For example, Flash Builder 4 comes with a wizard for connecting to PHP scripts, including creation of boilerplate PHP code. The new Flash Builder 4.5 IDE, recently released, comes in a couple of versions: Standard, Premium (with extra wizards, debugging tools, and profiling utilities), Flash Builder 4.5 for PHP Standard, and Flash Builder 4.5 for PHP Premium. The Flash Builder 4.5 for PHP versions were created in conjunction with Zend, and include an integrated version of Zend Studio 8. As both Flash Builder and Zend Studio are built upon Eclipse, this is a natural fit. And Flash Builder 4 started using Zend AMF to transmit data in Action Message Format between Flash applications and PHP scripts; the two companies have been working together for a while.
Needless to say, if you’re already doing Flex and PHP development (like I am), Flash Builder 4.5 for PHP is the perfect tool. The ability to do all the programming, both server-side PHP and client-side Flex, in one application, will save a lot of time. Just the debugging alone…Flash Builder 4.5 for PHP will let you debug both the PHP script and the Flash application without changing programs!
In terms of pricing, Flash Builder 4.5 Standard is $249.00, if purchased new, and Zend Studio is $299.00 (all prices are in US dollars and accurate as I write this). Flash Builder 4.5 for PHP Standard is $399.00, so there’s a decent price break compared to having the applications individually.
For a good, quick introduction to Flash Builder 4.5 for PHP, see this article at the Adobe Developer Connection.
On the Web => The Modernizr JavaScript Library
HTML5 and CSS3 add useful and cool new features, but, as always, browser support is still an issue. If you want to develop sites using cutting edge options, while still being backwards-compatible, a great tool to use is Modernizr. The concept is simple (and brilliant): Modernizr identifies what features the user’s browser supports and adds corresponding classes to the opening HTML tag. In your CSS, you can then add styling to just those classes. The result is that browsers that support, say, @font-face or canvas, will get the stylized version, and browsers that don’t, won’t. Modernizr also creates a JavaScript object that represents the browser’s capabilities. This object could be used to customize your JavaScript accordingly, too. And Modernizr has IE-specific tools, that add HTML5-like functionality to that browser.
For good, quick introductions, see the Modernizr site, this article at A List Apart, and this article at Web Designer Notebook. Modernizr just came out in version 2 and is open source.
Q&A => What Do You Think About HTML5, CSS3, and the Future?
HTML5 has received a ton of press and talk over the past few months and it definitely needs to be on any Web developer’s radar. Martin wrote in, asking me
Are you excited by HTML5, CSS3, the W3C’s direction of web standards and ultimately the future of where the web is going? How do you perceive PHP and MySQL adapting within this ever changing environment?
The two simple answers are, “I’m kind of excited” and “I don’t think these changes will have a huge impact on PHP and MySQL”. As for the first answer, I’m not trying to be cynical or jaded here, but we’ve got to keep in mind the glacial pace with which new standards are adapted by corporations. It will be years before HTML5 will be reliable for all the major browsers. And one must keep in mind that the version of HTML5 that will eventually be formalized will undoubtedly be different than the version being discussed today. There are some great new features suggested in HTML5, such as local storage, an email input type, support for regular expressions, and many new elements, but it’ll be eons before those features are going to be universally (or universally-enough) usable in your sites. Now, tools such as Modernizr (just mentioned) help, and going ahead and adopting HTML5 today, with the knowledge that the site won’t work the same in all browsers, is only a problem if universal support is a goal; cutting-edge sites quite blatantly insist that visitors use a good, modern browser.
But the HTML5 proposal is a good thing, as it acknowledges what today’s Web is compared to the Web that was envisioned when HTML was created. On the other hand, where will the Web be in years from now when HTML5 is finally adopted?
I’m intrigued by some of the additions in CSS3, but not being a designer, they don’t have as much of an impact on me as HTML5.
As for PHP and MySQL adapting to HTML5, I don’t see that being much of an issue. PHP and MySQL are server-side technologies; HTML5 is the very definition of a client-side technology. For the most part, switching a site to HTML5 will have no more impact on the server side of things than if you switched from HTML 4.01 to XHMTL 1.1. Now, HTML5 does support client-side storage, so that may affect how you do some things, but I don’t think the impact on PHP and MySQL will be significant.
Q&A => Where Are Your Thoughts on HTML5, Browsers, and Mobile Devices?
On a similar note, Jorge sent in a question, asking me what I think of HTML5, both with respect to its impact on browsers and mobile devices (smart phones, tablets, etc.). In terms of browsers, I’ve just addressed that in reply to Martin’s question, but HTML5 for mobile devices is an intriguing prospect. The difference is this: the mobile platform itself means that mobile users will always have current, HTML5-capable Web browsers. I recently read an interesting article at the Chicago Tribune’s Web site (my home town paper) about using HTML5 for mobile app development (the article does not seem to be currently available). The Financial Times and ESPN just released new applications for mobile devices, but instead of creating standalone apps, they used HTML5 to make Web apps. HTML5 provides all the functionality the apps needed, such as content storage for offline reading, video support, and the ability to respond to touch and gestures. By creating a Web app, one application can reliably work on all the platforms, and the proceeds from the app do not have to be split with Apple or the Android store.
In no way am I suggesting that HTML5 is the only smart way to create mobile apps—there’s still plenty HTML5 can’t do, but this is an interesting turn of events that I, for one, didn’t see coming.
What is Larry Thinking? => Quantum Computing
In the May 2, 2011 issue of The New Yorker (one of my longtime favorite periodicals), there was a fascinating article by Rivka Galchen, titled “Dream Machine“. The article discusses the topic of quantum computing, which I believe will—someday—have a huge impact on our lives. I’ll try to summarize the key points as best as I can, considering I have no science background, but you can check out the article at a library or pay to read it online if you want the full story. Note that text in quotation marks below come verbatim from the article, starting with this assertion:
“With one millionth of the hardware of an ordinary laptop, a quantum computer could store as many bits of information as there are particles in the universe.”
Computers being used today are binary: at the most basic, fundamental level, there are bits, each bit representing either 0 or 1. Everything you do on your computer comes down to zeros and ones. These computers are based upon classical mechanics, discovered by Isaac Newton, although few of us ever think of that when surfing the Web, I’m sure. Classical mechanics, also called classical physics, still accurately describe much of the physical world at large, but on an atomic level, classical mechanics don’t hold up so well. Quantum mechanics, or quantum physics, does a better job of explaining what’s going on in the atomic and sub-atomic levels.
One principle of quantum mechanics is that the same particle can exist in two places at once (this is referred to as superposition). A second principle is that two particles can be entangled: they can communicate with each other “regardless of their distance in space and time”. Whoa. Taking these two principles, a quantum computer is built using quantum bits, or qubits, instead of regular bits. Unlike a regular bit, which can represent 0 or 1, a qubit can also represent 0 and 1, thanks to superposition. Whoa. Thanks to entanglement, qubits can “instantly share information”. Whereas data in a traditional computer must be transmitted from bit to bit, qubits will communicate instantly (and in an un-observable manner). Whoa.
This may all sound quite theoretical, too philosophical to be useful. But venture capital is going into this area, trying to build quantum computers for specific purposes, and Google’s been striving towards quantum-computing since 2006. Yale has already created a two-qubit computer, and Oxford an eight-qubit one. An estimate is that fifty to a hundred qubits would be as powerful as today’s laptop.
To test the capability of quantum computers, researchers try different tests, such as Grover’s algorithm, which is a quantum algorithm for searching an unordered database. A test of Grover’s algorithm can be as simple as four-card monte: four cards are face down, one is a queen, how many steps does it take to find the queen? A conventional computer using a straightforward algorithm finds the queen in an average of about 2.25 steps. (You could probably write that program yourself: check the first card; if that’s not it, check the second; if that’s not it, check the third; if that’s not it, then you know it’s the fourth. There are three steps, maximum, and sometimes you’ll get luckier.) A quantum computer can solve this puzzle in just one step. (The article explains how, but the explanation is complicated.)
That particular example may not sound that useful, so let’s turn to prime factorization (or integer factorization). Take two prime numbers and multiply them: say, 3 and 7 results in 21. You and I know looking at that number–21–that it is the product of 3 and 7. In an instant, most of us can reverse-engineer that calculation. But as the two original prime numbers get larger, it becomes exponentially harder to determine what two primes were used to make the resulting product. In 2009, researchers were able to determine the factors of a 232-digit number. It took hundreds of machines two years to do that. That particular number required 768-bits to be represented in the computer. The researchers estimated that just changing to a 1024-bit number would be about one thousand times harder. But why is this significant? Because prime factorization is the basis of modern cryptography, such as RSA. A conventional computer cannot reasonably break encryption schemes based upon prime factorization, but a quantum computer could break one in an afternoon.
This article on quantum computing was a really fascinating read, in my opinion, and I encourage you to check it out. I hope that my synopsis has been intriguing enough and sufficiently accurate. The article goes into further details about some of the key people involved in these fields, the histories of computers and physics, and some of the technical challenges to quantum computers, like qubit fidelity (e.g., the two-qubit computer solves the four-card monte puzzle in one step, but is only correct 80% of the time). And I didn’t touch upon the Many Worlds theory, which suggests that perhaps quantum computers function by performing calculations in parallel universes! Whoa.
Book Giveaway => “PHP for the Web: Visual QuickStart Guide” and “Effortless Flex 4 Development”
You must be subscribed to the newsletter to qualify for book giveaways.
Larry Ullman’s Book News => “PHP and MySQL for Dynamic Web Sites” (4th Edition) and “Modern JavaScript”
The complete draft of the fourth edition of my “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide” book has now been submitted to the publisher and I’ve completed the rewrites on most of the book as well. Now I need to review the PDF layouts of each chapter, and then it’s off to the printer. Well, after the indexer and other important people take a crack at it first…
Some key new features in this edition will be:
- Extra material on database design, JOINs, advanced SQL, and advanced MySQL functions
- About a dozen pages on server (i.e., Apache) configuration and manipulation
- A new chapter introducing the jQuery JavaScript framework, walking through form validation, DOM manipulation, and Ajax
- A new chapter introducing Object-Oriented Programming (OOP) in PHP, focusing on the basic syntax and principles, with examples recreating earlier MySQL-based scripts and another example performing date and time validation and manipulation
The final page count for the work I submitted isn’t in, but I think I should be able to get the extra material in there.
Along with the above, I’ve removed references to PHP 6 (my “Dewey Defeats Truman” moment, as Paul so brilliantly named it), changed a couple of the examples, fixed any minor problems, and added a “Review and Pursue” section to the end of each chapter. That section, as in the fourth edition of my “PHP for the Web: Visual QuickStart Guide” book, has review questions on the material just introduced and prompts for how you can extend the newfound knowledge.
For the first time ever, I’m doing screencasts to accompany the text. These videos will be embedded in some electronic versions of the book and made available separately (as I understand it). Most of the videos demonstrate and expand upon specific book content. I’m in the process of doing those videos over the next month.
The book should be available in a store near you, and online, within two months at the latest.
In August, I officially turn my full-time attention to my next book, “Modern JavaScript.” Whohoo!