Wednesday, January 25, 2012

10 things you should know about HTML5

August 5, 2011, 5:49 AM PDT

Takeaway: HTML5 may not be a fully finalized standard yet, but it isn't changing much — and adoption is on the rise. Justin James highlights the key aspects of the new specification.

A year or two ago, HTML5 seemed like a vague idea that only a few Internet wonks cared about. Now, it feels like HTML5 is everywhere. Thanks to rapid releases from Mozilla and Chrome, and the deployment of IE9 from Microsoft (and IE10 already in "tech preview" status), browser support for HTML5 is available to nearly everyone in a limited (or better than limited) amount. Developers are starting to take advantage of the widely implemented features. With full HTML5 support probably less than a year away, and the specification quickly reaching an unchanging state, this is a great time to look at some things you should know about HTML5.

1: XHTML is no more; long live HTML5 with XML syntax

XHTML was the choice of people who favored precision, particularly for parsing. HTML has always looked a lot like XML, but it never was quite exactly like XML, and as a result, trying to parse it like XML would fail. So a while ago, the XHTML spec was made, to take the HTML language and put it into the XML lingo. When HTML5 first got started, there was work on XHTML 2 as well, but that was eventually mothballed. Instead, the HTML5 spec is written so that you can write HTML5 with strict XML syntax and it will work. And if you send it with an XML MIME type, user agents will parse it as an XML document too. This gives developers the best of both worlds.

2: The 2022 myth, the 2011 reality

One of the persistent misconceptions around HTML5 is that "it won't be done until 2022." The typical supporting evidence for this is an interview I conducted with Ian Hickson, the HTML5 specification editor, a few years ago. Ironically enough, even in that interview, he was clear about the 2022 date. But a few people got really worked up about it, and their angry articles got a lot more attention than the actual facts.

The truth is that 2022 is when Hickson expects the HTML5 spec to become a full W3C recommendation, which means that there are two 100% complete, verifiable implementations. To get an idea of why that is both fairly meaningless and a huge leap at the same time, consider that no other version of the HTML spec has ever achieved that status, mainly because they were too vague for any implementation to be provably correct. The HTML5 specification is getting close to being solidified and unchanging, right now in 2011.

3: It is a Flash and Silverlight killer for many developers

While HTML5 does make numerous improvements in how it is used for marking up documents, the big focus is in applications. The number of features that HTML5 introduces to support application development is staggering. This isn't to say that Flash and Silverlight are going away anytime soon. But Microsoft has already announced that it's refocusing Silverlight on the out-of-browser experience. Flash and Silverlight still have capabilities that HTML5 does not have, but the gap is nonexistent for many common purposes now, thanks to HTML5's new capabilities. It probably isn't worth rewriting existing applications, but you should see whether HTML5 makes sense for new applications.

4: It is the basis of many new tools

With HTML5 becoming a full-blown application framework, toolmakers are now using it as the foundation technology for their products, particularly those designed to overcome cross-platform development issues. If you are looking to write an application that runs cross platform, and it is within the capabilities of an HTML5 application, you should consider one of these tools. This is especially important in the mobile space, where the alternative is to learn an entirely different language, API, and framework for each phone platform you want to target.

5: The <video> tag is important but controversial

My personal pick for "best new HTML5 feature" is the <video> tag. Before <video> (there is also an <audio> tag), you would find yourself having to turn to Flash or Silverlight to provide a media player on your site. With these new tags, those days are, in theory, over. Why only "in theory"? Sadly, the different browser makers can't quite decide on which formats to support yet, due to patent concerns. When the dust settles on that, Flash and Silverlight both lose their #1 use case.

6: Google led the way

If it seems like the Chrome browser has a huge head start with HTML5, there is a good reason for that. The HTML5 specification process put a heavy premium and emphasis on written, deployed code. I'm not saying that they "rubber stamped" whatever browser vendors did. But it was hard to convince those involved to write specifications for unimplemented features, and implemented features were likely to become the basis of new items in the specification. Because Chrome seems to have a new version every few weeks, features that Google put into it had an excellent chance of making it into the HTML5 spec.

7: "Standards compliant" is finally provable

Whenever someone claims that a browser is or is not "standards compliant," I have got to laugh. Before HTML5, it is literally impossible to be provably standards compliant. In many cases, the current specs are too vague or simply silent on important issues (like handling parsing errors) and the result is that different browsers can do wildly different things and still be either standards compliant or fall into the category of "not provably out of compliance." Even the famous ACID test does not prove too much, since it tests only a subset of the HTML specification. With HTML5, the bar has been raised quite a bit, and it will finally be possible to prove that a user agent is standards compliant. Indeed, one of the reasons behind the 2022 date for "recommendation" status is the need to write full test suites.

8: "Standards compliant" still does not guarantee how it will look

Standards compliance in Web browsers does not do what people often think it does, and HTML5 does not change that fact. A big confusion with HTML is that many Web designers and developers believe that the HTML specification controls the look of items on the screen; it does not. For example, a Web browser can make the <strong> tag use a bigger or different colored font instead of a heavier font, if it likes and still be compliant. Many times, when designers say a browser is not standards compliant, what they are really encountering is the flexibility given to user agents in how to render tags. HTML5 does not change this fact. If you absolutely need a tag to be rendered in a precise way, do not count on the browser's default behavior; specify your needs in CSS.

9: Parsing is more precise

The HTML5 specification finally introduces precise parsing rules and defines things like what the user agent should do when it encounters a parsing error. As a result, you can expect that some things that used to pass as acceptable or even "valid" HTML in the past will no longer cut the mustard. You will want to get familiar with HTML5's parsing rules and make sure that your code adheres to them.

10: HTML5 goes far beyond the browser

In previous versions of HTML, there was an inherent assumption that a traditional Web browser was the user agent of choice. While other user agents and content types were supported, there was an implication that they were not as important. HTML5, on the other hand, has a good number of changes to put non-browser, non-desktop-size-screen user agents on more equal footing with traditional Web browsers. There have been a lot of advances with things like how well it works with screen readers and mobile phones. As a result, well-written HTML5 can be a "write-once, view anywhere" framework for developers who need it, and it can reach users (particularly those with a variety of disabilities) who otherwise would struggle with the Web.


10 reasons why this is a great time to be a developer

December 17, 2011, 6:37 AM PST

Takeaway: After a long stretch of stagnation, the developer field is starting to open up — in a number of interesting, groundbreaking ways.

Ever since I was a kid, being a programmer looked fun and exciting. But in the last decade, the novelty of the Internet has worn off, and it seems like we've just been spinning our wheels. With an increasingly uninteresting workload and stagnation in pay, a lot of folks have either left for other pastures or have thought about it. Well, in the last year or two, things have really changed. Here are 10 reasons why now is a great time to be a developer.

1: HTML5

HTML5 has completely turned the world of development on its head. For years, we were locked into a limited set of applications, not because we couldn't make magic happen, but because there were so many issues with getting our solutions to market. When the Web arrived, it unlocked a lot of new avenues, but its limitations were such that the really exciting things were still saddled with the native desktop application model. HTML5 takes off many of those shackles, and we are about to experience a boom time for new ideas.

2: Agile methodology

When I first encountered Agile methods, it was from the vantage point of seeing some really shoddy practices being called "Agile" out of laziness. And while I think there is still a use for more Waterfall-like techniques, Agile should be the default choice for teams going forward. With Agile, we're given a lot more freedom to do what we love — deliver innovative, customer-satisfying solutions — whereas in the past, we were stuck guessing what users wanted and usually ended up developing what their managers or our managers assumed they wanted.

3: The move to SaaS

Why do I love the software-as-a-service (SaaS) model as a developer? Because for the first time ever, developers can monetize their products in a fashion that is fair to both sides of the transaction. Sure, developers always could just charge for development, which was fair enough. But if you are trying to make "shrink wrap apps," the previous models are all awful. They usually lead to customers being force-fed upgrades or support they don't want in order to keep a vendor in business or to having vendors charge too much so they can provide "free" support and upgrades. Thanks to SaaS, the shrink wrap model is profitable in a fashion that benefits everyone.

4: Low startup costs

Seriously, could it get any cheaper to start your own company now? I read press releases of companies getting off the ground with only a million dollars, where in the past it would be $10 million or more to get going. What's changed? Various platform-as-a-service (PaaS) and infrastructure-as-a-service (IaaS) vendors let you go from "project done on my weekends" to "deployed and ready for business" in literally minutes. You can have a flexible billing schedule that allows you to cover the costs out of pocket easily and have your costs scale with your money flow. Meanwhile, platforms like Ruby on Rails have emerged to make it easy to get off the ground without all of the monetary and technical overhead associated with developing in more traditional systems.

5: Mobile technology

Thanks to the explosion in the mobile markets, there are hundreds of millions of potential software customers who never existed before. Their bank accounts are directly tied to the software discovery system, and they are accustomed to paying (albeit, not very much) for software. And the mobile revolution has enabled all sorts of amazing new apps and games that really just could not exist before. Best of all, mobile applications and devices serve users in way that offers far more satisfaction than traditional desktop computing.

6: Job market of today

Talk about a seller's market. Are there soft spots in the job market? Absolutely. I'd hate to be an entry-level programmer with no real-world job experience and no special skills competing against the overseas talent who can deliver more skills for less money. And yes, some intermediate developers are getting a squeeze as well. But you know what? The demand for talent overall is at a level that is nowhere near being met, and it will only get harder to find the right folks. And the pay scales are reflecting the lack of supply. While it can be tough to get your footing, once you have established a record of good work and a valuable, up-to-date skill set, it is pretty easy to stay employed at a fantastic pay rate.

7: Job market of the future

Until someone comes up with a reliable way of having applications write themselves, the job market will only improve for developers so long as they are willing to put in some effort with skills improvement. The graduation rates for development-related majors are not ramping up to even come close to meeting the demand. If you have a foothold in the industry today, and do not let your skills deteriorate or go out of date, the job market should treat you very well over the course of your career, and certainly much better than most jobs.

8: Computing penetration

Those mobile devices have done something amazing: They've allowed entire segments of the world's population to have access to computing when before there was none. Not only does this create potential new users and customers, but it allows our work to have a positive influence on the world like never before. Some of the mobile applications I have seen do truly amazing things, like allowing farmers in Africa to determine whether there is a demand for crops before starting a long trek to market, or enabling doctors in poor parts of Asia to communicate with each other to share lifesaving information. Being able to be part of something more impactful than merely making a living is a great feeling!

9: The rise of "personal computing" devices

When the idea of a "personal computer" came about, most folks treated it as "my personal computer" in contrast to "the company's computer" or "the shared mainframe." Now, "personal computer" is becoming much more similar to what visionaries like Dr. Alan Kay imagined in the 60s, 70s, and 80s, a system that individuals can customize on the fly to meet their needs easily. Is this a reality yet? No. But for the first time in a long time, it looks like the industry is actually starting to move in that direction, and it can't come soon enough. I look forward to being part of the revolution that allows people to leverage their computing devices to accomplish their goals, instead of the devices depending upon users to do what they need to do for the applications to meet their own goals.

10: The increasingly prominent role of developers

As things continue to shift and change in the IT industry, our networking and systems administration brethren are seeing their jobs become more routine and less exciting. Meanwhile, programmers are the fulcrum that the IT lever pivots on. Without us, companies are forced to accept solutions out-of-the-box and attempt to make their business processes match the solutions. Entire industries are experiencing unprecedented paradigm shifts, thanks to the recent innovations in software. Up until a few years ago, it was hard to make software that did more than replace filing cabinets and calculators. Now we're making software do things that have never been done before, and the world depends on us to make it happen.

Other reasons?

Do the reasons cited here make the developer field seem more enticing and full of opportunity than in previous years? What other aspects of current tech trends make this a good time to pursue a career in development?


10 skills for developers to focus on in 2012

By

January 23, 2012, 10:57 AM PST

Takeaway: Quick: Throw out last year's list of must-learn dev skills — it's already obsolete. This new list will help you rethink your skill set to avoid falling behind.

Software development had a few years of relative calm. But now the rollercoaster is back on track and it's picking up speed, as HTML5 gains a foothold and Windows 8 threatens to significantly change the Windows development landscape. If you want to stay ahead of the curve, you should consider learning at least a few of these 10 software development skills.

1: Mobile development

If you don't think it is worth your time to learn mobile development, think again. Global shipments of Android phones in 2011 are almost equal to PC sales. Add in the other big-name mobile devices (iPhones, iPads, and even the "dying" RIM devices), and what you see is that mobile devices now dwarf PCs in sales. What does this mean? If you make your living from software that can run only on a PC (which includes Web sites that don't work or are hard to use on mobile devices), now is the time to learn mobile development.

2: NoSQL

I appreciate a well-designed relational database schema as much as the next person, but they just are not appropriate for every project. We've been using them even when they aren't the best tool because the alternatives haven't been great. The last few years have seen the introduction of a wide variety of NoSQL database systems. And now that major service vendors (like Amazon and Microsoft) support NoSQL as well, there is no technical limitation on their use. Are they right for every project? No. Are they going to replace traditional databases? In some projects, and for some developers, definitely. This is the year to learn how to use them, as they will only become more prevalent in the year to follow.

3: Unit testing

We've seen unit testing go from being, "Oh, that's neat" to being a best practice in the industry. And with the increasing use of dynamic languages, unit testing is becoming more and more important. A wide variety of tools and frameworks are available for unit testing. If you do not know how to do it, now is the time to learn. This is the year where it goes from "resume enhancement" to "resume requirement."

4: Python or Ruby

Not every project is a good fit for a dynamic language, but a lot of projects are better done in them. PHP has been a winner in the industry for some time, but Python and Ruby are now being taken seriously as well. Strong arguments can be made for Ruby + Rails (or Ruby + Sinatra) or Python + Django as excellent platforms for Web development, and Python has long been a favorite for "utility" work. Learning Python or Ruby in addition to your existing skillset gives you a useful alternative and a better way to get certain projects done.

5: HTML5

HTML5 is quickly pulling away from the station. The impending release of IE 10 is the last piece of the puzzle to make the full power of HTML5 available to most users (those not stuck with IE 6 or IE 8). Learning HTML5 now positions you to be on the forefront of the next generation of applications. Oh, and most mobile devices already have excellent support for it, so it is a great way to get into mobile development too. And don't forget: HTML5 is also one route for UI definitions in Windows 8!

6: Windows 8

Windows 8 should be released sometime in 2012, unless the schedule slips badly. While Windows 8 may very well get off to a slow start, being the top dog in an app store is often based on being the first dog in the race. The first mover advantage is huge. It is better to be in the Windows 8 app store at launch time than to take a wait-and-see approach. Even if Windows 8 sales disappoint, it's better to be the only fish in a small pond than a fish of any size in a big pond, as recent app sales numbers have shown.

7: RESTful Web services

While I personally prefer the convenience and ease of working with SOAP in the confines of Visual Studio, REST is booming. Even Microsoft is starting to embrace it with OData. JSON really was the final straw on this matter, relegating SOAP to be for server-to-server work only. Unless your applications can run in isolation, not knowing REST is going to hold you back, as of 2012.

8: JavaScript

Before the Windows 8 Developer Preview, it was easy for non-Web developers to look at JavaScript as a Web-only language. No more! JavaScript is now a first-class citizen for native desktop and tablet development, thanks to the Metro UI and WinRT API in Windows 8. XAML + C# or VB.NET may be a good way for you to get things done, but if you want to maximize what you can get out of your knowledge, HTML5 and JavaScript are the best bet. They give you Web and Metro/WinRT, and you can also use them for some of the cross-platform mobile systems out there, like Appcelerator's Titanium product.

9: jQuery

If you are going to do any kind of Web development where you are working directly with HTML, jQuery is becoming a must-know skill. While there are plenty of credible alternatives, jQuery is quickly turning into the de facto tool for rich UIs with HTML.

10: User experience

Other than getting that first mover advantage in new app stores, there is little to differentiate many applications on a feature basis; it's a crowded field. User experience, on the other hand, is a different story. Creating a great user experience is not easy; it starts before anyone even downloads your application and continues through to the uninstall process. In the age of instant $0.99 and free app downloads, and ad-supported Web apps, the barriers to switching to another application are mighty low. If your user experience is poor, do not expect much business.

ITWORLD
If you have any question then you put your question as comments.

Put your suggestions as comments