What is Larry Thinking? #39 => How I Got Here and the Future

April 16, 2011

In this edition…

About This Newsletter

The thrust of this newsletter is the future: how new and emerging technologies might change what we all do. Some links to online content, and some answers to questions I’ve received, fall under this important umbrella. I’m no great prognosticator, but as with anything, I have my theories and opinions!

In this newsletter I’m also continuing what is turning out to be a series. I first wrote about becoming a better programmer, in two parts(1 and 2). Then I wrote about building a career. In this newsletter it was my intention to write about some of the specifics of what I do, with the goal of helping you do those things, too, but a couple of people wrote in saying they were looking forward to hearing my story, so I thought maybe I should talk about how I got here, before providing suggestions as to how you can get here, too (should you want to, that is).

The newsletter is a bit longer than I prefer they be, but I felt it important to get in all the sections that I did.

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? => Building a Career

In my previous newsletter, I wrote about the various ways one can build up a career (as much as I actually know anything about that subject). Kevin replied with a suggestion well worth mentioning: local startups. As Kevin pointed out, local startups tend to have good working environments, interesting goals, and small, fun teams.

This leads me to a tangent: local technology-related user groups. Many communities have PHP groups, design groups, etc., attached to a school or not. Getting involved with such organizations is a great way to network, possibly find employment, or just learn what other people are doing. You could also use the networking capabilities of a group to build a team for your own local startup!

On the Blog => MongoDB

Someone, I forget who (sorry), referred me to MongoDB, some time back. MongoDB is in the family of NoSQL databases, which is an entirely different concept than the relational database to which you’re probably accustomed. It took me a while to “get” MongoDB, but I have a better sense of it now, and wrote a quick blip about it on my blog. If you’re not curious enough yet, you should at least check out who is already using MongoDB.

On the Blog => “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide (4th Edition)” Rough Table of Contents

As promised in the previous newsletter, the rough version of the Table of Contents for the fourth edition of my “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide” has been posted on my blog.

Q&A => How do you think Oracle’s acquisition of MySQL will impact MySQL?

Brett had asked me this question, after Oracle had purchased Sun (which in turn owns MySQL). Historically, on non-Windows systems the database choices have been MySQL and Oracle. Period. Sure, some people used PostgreSQL (not enough do, though). And maybe a few use SQLite, but it’s largely been MySQL and Oracle. (On Windows, Microsoft’s SQL Server is a major player, too.)

Oracle was actually moving in this direction for some time. Many years ago, Oracle purchased the InnoDB storage engine, which was MySQL’s second most important table type, after MyISAM. Among other features, InnoDB supports row-level locking (as opposed to MyISAM’s table-level) and transactions. Oracle’s earlier acquisition of InnoDB could have led to problems within MySQL in years to come. But now, miraculously, you’ll find that InnoDB is the default table type in MySQL and the documentation even claims that it’s faster than MyISAM (I take that statement with a grain of salt).

Before the sale of Sun to Oracle was approved, there was a campaign to stop it, largely by the original creators of MySQL. I personally found that to be a case of sour grapes. MySQL was bought by Sun for a reported ONE BILLION DOLLARS. I have no problems with that, but I do feel that once you sell your company, you lose the right to complain about, let alone attempt to prevent, what happens to it from there on out.

Anyway, a lot of people are pretty upset with Oracle these days, both because of what they fear might happen and what they think has already happened. For example, the person that created Java, James Gosling, recently left Oracle for Google (Java is owned by Sun). The Apache Foundation, which is actively involved with Java development, has stopped working with Oracle on the Java group, too. And here’s what I think…

I doubt that Oracle would clearly and dramatically undercut MySQL. Nor do I think Oracle can just stop giving MySQL away, as the public fallout would be terrible. And Oracle does have a track record of supporting open source projects. What Oracle could do, though, is quietly undercut MySQL by not supporting it as wholeheartedly as, say, their Oracle database. But, in my opinion, should that happen, things will be fine.

First of all, while MySQL is certainly the most popular open source database application out there, there are many who would say it’s not the best. For years PostgreSQL has had features MySQL just recently added. And MySQL may already be bloated with too many features: arguably losing performance and reliability for the sake of adding bells and whistles. Second, if you do prefer MySQL, many of the key developers behind the original MySQL have already forked their own offshoot, embracing the core principles, with projects like MariaDB. Third, the rise of the “NoSQL” family of databases, such as MondoDB, already mentioned, is showing that not every problem is best solved by a relational database.

Finally, if, for some reason, I had to switch from MySQL to any other relational database, there’s not a Web site I’ve created that I couldn’t successfully convert in a day or two. If I were being overly cautious, I could use PDO, a data-access abstraction layer, or the like, for all future sites, so that changing the underlying database would require only the change of a single line of code.

Q&A => What are your thoughts on mobile apps?

Bill wrote in asking “What is your take on the whole mobile app craze from a developer’s standpoint?” He went on to say that he thought it would make more sense for existing Web developers to continue making Web sites that can be commercialized rather than learn the skills required to make applications that are only purchasable by a subset of the market.

As you may know, I’m not a “smart” phone person, or even much of a cell phone person, although I’m admittedly a dinosaur in these regards. To me, a Web site is universally available and an app, whether you decide to go the Android or the iOS route, is only available to a smaller market. But I get the sense that this mentality is partially a generational thing and that the future is in apps. I just don’t personally think in apps, but a lot of people do. It’s safe to say we’ve passed the “craze” phase. Further, for those of you that don’t regularly use a Mac, you may not know that Apple has also rolled out its own store where you can buy desktop apps. Access to that store is built into the operating system. Quite literally, people now shop for applications, for their mobile devices and even their computer, as if they were buying songs at iTunes. I can’t imagine that’s going to do anything but continue to expand for years to come, especially as the capacities and capabilities of mobile devices improve.

While it is true that Web development has a much larger potential market, the app market has something critical that Web sites do not: a trusted marketplace. Users can go to the iTunes store or the Android store, search, browse, and read reviews of applications in a way that’s not even remotely possible for Web sites. Even with the hundreds of thousands of apps out there, the one you create will be swimming in a much smaller pool than your site among everything on the Internet. And at these stores, customers are already accustomed to giving a couple of dollars and making a purchase. That’s all built in and tied to their account. Customers are in the habit of making purchases at Web sites, sure, but not at your Web site. Maybe an appropriate analogy is the difference between having your own restaurant on the street versus having a small setup in the mall’s food court: with the food court, you already have customers right there and thinking about food. So while I would not say we should all drop Web development for app development, I don’t think there’s a clear favorite between the two today.

But here’s the catch: it doesn’t have to be an “either…or” situation. Aside from the games, what all of the apps on my iPod Touch have in common is data. And the apps must get their data from somewhere. Beyond apps, data, and the Web services that provide data, are at the heart of whatever “Web 2.0” is. This means that no matter what happens with the evolution of Web sites, and the greater use of mobile-based apps, data-providing Web services will continue to be integral. This is good news for any Web developer.

All that being said, for my own edification, and because I do have a couple of specific ideas in mind, I am going to spend some time this year learning app development. I was originally debating Android vs. iOS to start (iOS would be more natural to me, but the Android market is technically bigger), but just saw this video about using Adobe AIR 2.6 to create apps that run on all platforms (if you’re intrigued by that, also check out this link). In any case, I expect I’ll have something different, or just more educated, to say in a year from now.

What is Larry Thinking? => How I Got Here

As I said in the introduction to this newsletter, my plan was to next write about how one can go about getting work writing, doing Web development, and training. I’ll still write about that in the next newsletter, but it’s probably worthwhile to discuss how I got to be where I am. Whether or not you’re interested in the personal anecdotes and history, I think there’s also plenty to learn, professionally, from my experiences. (As a warning, I sincerely hope that this doesn’t come off as patronizing, because that’s most certainly not my intention, but a patronizing tone is an easy trapping when being self-reflective.)

Let’s begin in 1999: for a number of reasons, I decided to start working for myself, doing something (I wasn’t sure what) in IT. I had no experience, clients, skills, or portfolio. I had a degree in English literature. I had intermittent experiences with various IT subjects (I had picked up a bit of HTML in 1997), but practically no formal training. I mention all this in order to suggest that many of you are probably better equipped for this industry than I was when I began. What I did have was the motivation to go out on my own, and the opportunity. Plus, more than anything, an interest in, and ability to learn, new things.

When you have no work to do, you have a huge opportunity to learn and experiment (that’s the “silver lining” viewpoint). In the Fall of 1999, with no work or experience, I decided to spend some of my ample time creating a dynamic Web site for a personal project. I started off using Perl to create CGI scripts and found that route to be stunningly difficult. In searching for alternatives, I came across PHP, in version 3 at the time. PHP was still relatively little known at the time (more people were doing CGI scripts, ColdFusion, or Java Server Pages), and I think there were only two books out on the subject. One was pretty much the PHP manual; the other was an advanced book. But in fairly short order, I was able to learn enough PHP to complete my personal project.

A lesson learned: It can be advantageous to be an early adopter.

Of course, if what you’re adopting turns out to be a bust, then you’ve just wasted a lot of time. Plus, being an early adopter can mean a much tougher learning curve. But for me, getting into PHP early on was immensely beneficial.

At the time, there were several online freelancing sites sprouting up, such as Guru and eLance. (I’m sure they, or similar sites, are still around, but it’s been years since I’ve used any of them.) I was able to get several projects, largely based upon PHP or JavaScript, through these sites. Sometimes my bid was cheaper than most, but I succeeded mostly because I had excellent communication skills and was able to convince the clients that I could do the work.

A lesson learned: Strong communication skills are more important than anything.

If real estate is about “location, location, location”, business is about “communication, communication, communication.” Being able to effectively communicate that you understand what a client needs, and that you are able to provide that service, is vital to success. Furthermore, about half the jobs I got were because the client said they needed X, and I went ahead and did X, and then showed it to them as part of my bid. Nothing does a better job of convincing a client you can do a job than actually doing the job! Through these online Web sites I eventually built up enough clients, several of whom still hire me for projects today.

After a few months of doing Web development, I put together a book proposal for what turned out to be my “PHP for the World Wide Web: Visual QuickStart Guide” (Peachpit Press). I had wanted to be a writer for years, long before I ever knew what that meant. I had dreams of glory about writing the next Great American Novel. With that in mind, I had taken a course on getting published, through a college’s continuing education department. Once I had a good grasp of PHP, I knew I had a good topic for a book proposal, considering how great of a language it is and that there were only two books published on the subject. I followed what I learned in the getting published course, and paid strict attention to the instructions on each publisher’s Web site, and then sent out proposals to three publishers: For Dummies, Idiot’s Guide, and Peachpit Press.

A lesson learned: Follow directions!

One of the biggest reasons book proposals get rejected is that the writer failed to follow directions. If you can’t follow a publisher’s clear instructions as to what a proposal should contain, how it should be formatted, and so forth, what confidence would they have that you’d be able to correctly do an entire book? But this is true in many areas: an ability to follow directions is an easy way for anyone to deny you your request.

I never heard back from the For Dummies and Idiot’s Guide publishers (which is definitely for the best), but after jumping through a couple of hoops, convincing them I could do the job, Peachpit Press signed me to write the book on PHP. And here’s an important thing that I later learned: they had another person proposing the same book at the same time.

A lesson learned: Being good is more important than being original.

At this point, having written a well-received book, on the right subject at the right time, my career changed significantly. From just the initial success of the first book, I was able to easily get a second, “PHP Advanced for the World Wide Web: Visual QuickPro Guide” (Peachpit Press), and a third, “MySQL: Visual QuickStart Guide” (Peachpit Press), and… As with many things, it’s just much easier to get a book deal having already written a book. Not that it’s some sort of secret club: you still have to have a good idea, follow directions, etc.

From the books I also got work doing corporate training, as well as other Web projects. But I don’t want you to think that you need to publish books to succeed like this, because you don’t. As an example, two years ago I discovered the Yii framework and really liked it. The documentation, as with so many things, was lacking, so I took the time to write up a series of tutorials based upon what I had learned. The creator of the Yii framework liked my work so much that he linked the series from the official documentation page. From the traffic that link sent to my site, I was able to sell more books and get more work doing Web sites (this time using Yii). Again: I adopted something early, and I communicated well, and it has so far paid off.

A lesson learned: learn lessons!

As important as whether you succeed or fail is that you learn from the success or failure (granted, I’d much rather learn by succeeding!). Of course, you can learn from other people’s successes and failures, too, which is perhaps one of the reasons you’ve subscribed to this newsletter. Well, that and the occasional free book.

So there’s my story…to date! If I were to throw in two more lessons, they’d be these:

  • Be adaptive.
  • Never stop learning.

Although much of my secondary success has come from the success of my books, I don’t want to convey that one has to publish to succeed. Also, while I feel I’ve been successful by my standards, I may or may not have achieved a level that you’d consider to be sufficiently successful. In any case, remember that I was able to do this without any formal training and experience. And I was able to do all this without spending much money at all at first. I needed a computer, Internet access, and Web hosting. From there it was all free software for quite some time. In short: if I can pull this off, perhaps you can too!

In my next newsletter, I’ll give some hints as to getting and doing specific kinds of jobs.

Book Giveaway => “PHP for the Web: Visual QuickStart Guide (4th Edition)”

Once again, if I ever want to get a wave of feedback to my newsletters, or am looking for shameless flattery (and really, who isn’t?), a book giveaway is the way to go. By now all the recipients have been notified. My thanks to everyone for their interest.

There was a bit of confusion, it seemed, in that much of the previous newsletter talked about the fourth edition of my “PHP and MySQL for Dynamic Web Sites” book, which I’m working on now, but I was giving away copies of the fourth edition of my “PHP for the Web: Visual QuickStart Guide.” Some people, having already read the PHP and MySQL book, and sometimes even my “PHP 5 Advanced: Visual QuickPro Guide” book, asked for a copy of the “PHP for the Web”. It’s a beginner’s guide to PHP, and I prefer to give away books to those that will get the most out of them. Come late summer, when the PHP and MySQL book is published, I’ll give away copies of that.

Larry Ullman’s Book News => “PHP and MySQL for Dynamic Web Sites” and the JavaScript Book

The good news is that I’m making pretty good progress on the fourth edition of my “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide.” I’ve finished the first draft through Chapter 8 (possibly Chapter 9, by the time you get this). Chapters 6 and 7, on advanced SQL and MySQL, were heavily edited, reorganized, and expanded, per your feedback. First, I created a new Chapter 6, “Database Design,” which covers normalization, indexing, table types, collations, time zones, and foreign key constraints. Along with the last section being entirely new, this chapter results in the creation of two normalized databases, instead of just one. Chapter 7, “Advanced SQL and MySQL,” now covers joins, groupings, transactions, and encryption, plus the new topics of explaining queries, advanced selections using IF(), CASE(), COALESCE(), and the like, and I tripled the coverage of joins. Plus, with the second normalized database created in Chapter 6, there are more and different examples. Overall, I think this book will have about 30% more material on just SQL and MySQL. Chapters 8-13 will stick somewhat closely to the previous edition, and then I’ll try to introduce two entirely new chapters. More on that in the next newsletter or so!

The bad news is that I’ve spent so much time on the PHP and MySQL book (you know: the one with an actual deadline), that I haven’t written a single word on the JavaScript book in the past two weeks. Also, it’s not looking good for doing anything with it in April, either. I can hear your groans! But rest assured that the JavaScript book is still on my mind and it will get my attention as much as it can. I do hope to reward your patience when all is said and done.

Speaking of the JavaScript book, Kenoli had put forth an interesting payment option: selling individual chapters for maybe $2 each, like how you can buy individual songs at iTunes. I don’t know all the answers as to how the book will be available when it’s done, but I’m dedicated to putting it out there in as many ways, and as conveniently as possible. Currently this means I’m thinking about:

  • As a series of HTML pages (freely viewable)
  • Per chapter as PDFs
  • The entire book, as a PDF
  • The entire book, as a printed book!
  • ePub format
  • mobi Format (Amazon Kindle)
  • mobile app versions