Skip navigation
partial shot of clock multicolored filter with clock at 900

The Past, Present, and Future of HTML5

Ready, set, start your HTML5 learning with a look at the evolution of HTML and basic HTML5 coding

Stop and think for a moment about how long you've been a developer. For some of you, that journey started recently. For others, it has been years. However long it's been, do you realize that less than a decade ago, the .NET revolution had not officially started? Classic ASP was the primary way we developed for the web, and HTML was at version—wait a minute—is still at version 4.01!

Despite sluggish transformations regarding HTML overall, small to very dramatic changes in technologies that are based on HTML have occurred. Think of the changes that have occurred in web browsers, JavaScript, and Cascading Style Sheets (CSS). Think of how AJAX has changed the way many web developers approach communications between the browser and server-side resources. The web has seen many changes but with virtually no change to its core language, HTML. However, that logjam is about to bust with HTML5.

A Brief History of HTML5

Before we discuss what HTML5 has to offer, we should note that attempts have been made to change HTML. Note the word is change, not upgrade or revise. But what does that mean? Why is it important to consider the failed attempts to change HTML? So that you can appreciate why HTML5 is worth investigating and why it is here to stay. For these reasons, let's take a brief journey down memory lane and consider the series of events that led to where we are today. Then we'll discuss where we'll be tomorrow.

You probably already know who Tim Berners-Lee is and that HTML came into existence as far back as 1989. You also probably know that the Internet took off in the 1990s, and so on. So instead of strolling through a step-by-step timeline, let's focus on the attempts to replace HTML with something else.

Fast-forward to January 2000. The World Wide Web Consortium (W3C) recommended Extensible HyperText Markup Language (XHTML) 1.0. For an XHTML document to be served correctly, the author had to use the new application/xhtml+xml MIME type. However, Appendix C of W3C's XHTML 1.0 specification made provision for pages to be served by using the common text/html MIME type.

More than a year later, in May 2001, the W3C recommended XHTML 1.1. The abstract of the recommendation stated, "The purpose of this document type is to serve as the basis for future extended XHTML 'family' document types, and to provide a consistent, forward-looking document type cleanly separated from the deprecated, legacy functionality of HTML 4 that was brought forward into the XHTML 1.0 document types."

According to the abstract, XHTML was prepped to be the future of the web. The abstract boldly referred to HTML 4 as "deprecated, legacy functionality." And version 1.1 of XHTML removed the Appendix C version 1.0 provision that allowed a page to be served with the text/html MIME type. So why didn't this recommended standard replace HTML altogether? The answer is simple: Developers didn't implement it.

To be sure, many developers tried to implement XHTML in their websites. XHTML mandated a well-formed XML document using the classic HTML tags. To be well-formed, a web page would need to be served with no overlapping tags and no missing end tags, and the values of all attributes had to be enclosed in quotation marks. The notion of cleaning up our web pages wasn't unpopular, but it wasn't strictly enforced either. And even if a web developer created a well-formed web document, was it served with the application/xhtml+xml MIME type? Likely not. In fact, it is estimated that 99 percent of web pages on the Internet today contain at least one violation of the XHTML standard, which, if enforced, would cause the page to stop rendering and post an error to the end user. Ouch!

So now what? Exactly. WHAT was born. The Web Hypertext Applications Technology (WHAT) Working Group, actually known as WHATWG, came into existence in 2004 to put life back into HTML. This group's intent was to move forward in a manner consistent with how the web was actually being used and to spearhead innovations in HTML while maintaining backward compatibility. Instead of breaking 99 percent of the web, why not embrace the way in which web pages are actually served? Browsers have been forgiving. Why make page-breaking changes?

Therefore, the WHATWG came up with Web Applications 1.0 while the W3C worked toward version 2.0 of XHTML. However, near the end of 2006, it was clear that the WHATWG was gaining momentum while XHTML 2.0 was lacking support by any major browser. Thus, the W3C announced it would collaborate with the WHATWG. One of the outcomes of this union was to rename Web Applications 1.0 as HTML5.

Is there a lesson in this for us? Absolutely. Despite noble aims and grand ambitions, whatever the masses choose to adopt wins. The growing adoption of HTML5 makes it the winner. HTML5 cannot be ignored. Our brief history lesson demonstrates that HTML5 is here because we willed it to be here. (For more in-depth coverage of the history leading up to HTML5, check out Mark Pilgrim's Dive Into HTML5.)

Start Using HTML5

Although HTML5 is not an official specification yet, it achieved WC3 Candidate Recommendation status as of December 2012, which means that HTML5 is on the cusp of being the industry standard for web development. HTML5 already has a prominent place in website development, given that the major browsers are incorporating HTML5 features and Microsoft's recently stated intention to incorporate native HTML5 in Windows. In light of these changes, it's a good idea to start getting familiar with HTML5 now—and you can do so without making dramatic changes to the pages you already have. Let's consider a minimalistic HTML5 document, such as in Figure 1.


A relatively minimal HTML document

Hello World!

Notice the omission of the and tags. According to the current specs, this is still a valid document. If these tags are omitted, the browser will still parse the document, and the tags will be implied. This represents a shift from the strict conformity imposed by the current HTML standard.

Here is another example of how easy it is to adapt to HTML5:


The doctype syntax has been simplified. Compare this to examples of what we have been accustomed to, shown in Figure 2.



The doctype declaration is required. Although it is clearly easier to type the normal HTML5 doctype, the deprecated doctypes in Figure 2 are still accepted formats. By the way, the doctype declaration is not case sensitive, so any of the following are acceptable:



Now take a look at Figure 3 to see a more realistic starting point for an HTML5 document.



  
    
    Getting Started With HTML5
  
  
    

Simple text.

You might find slight differences in this HTML5 document compared to what you are used to. Apart from the doctype, you might notice the attribute on the tag and the contents of the tag. Let's focus first on the tag:


The lang="en" attribute informs the browser that the contents of this document are in English. This is much simpler than the following:


Look at how much was removed. There is no longer any need to specify the namespace of the document because all elements in HTML5 (unless otherwise noted) belong to the XHTML namespace. The xml:lang attribute is left over from the XHTML era. So, once again, HTML5 presents a simpler way to do things, but for what it is worth, the older syntax is still acceptable.

Now, how about that tag? This is how we used to handle it:

And as you have noticed, it is now this simple:

Of course if you want to use the old style, that's still okay. It's a good practice to make this meta charset tag the first child of the tag because the specification states that the character encoding declaration must appear within the first 1024 bytes of the document. Why set the encoding for the document? Failing to do so can cause security vulnerabilities. Although the encoding can also be set in the HTTP headers, it's still a good practice to declare the encoding in the document.

These subtle differences clearly confirm the WHATWG's commitment to maintaining backward compatibility while allowing changes that simplify or enhance HTML. However, not everything from the past is preserved in HTML5. For good reason, some tags, such as those in Figure 4, have been given a proper burial.

Figure 4: Elements absent from HTML5
</td> </tr><tr><td> <center></td> <td> <strike></td> </tr><tr><td> <dir></td> <td> <tt></td> </tr><tr><td> <font></td> <td> <u></td> </tr></tbody></table><p>Tags such as <basefont>, <big>, <center>, <font>, <strike>, <tt>, and <u> are purely presentational in their function and are better handled through CSS. In addition to these retired elements, a number of attributes have been removed for similar reasons. All absent or removed items in HTML5 can be found on the <a href="http://www.w3.org/TR/html5-diff/" target="_blank">WC3 reference page</a>.</p> <h3> New Features in HTML5</h3> <p>But what about the changes that give us new features in HTML5? Let's briefly consider some of the more popular additions that you can start using today.</p> <p>First are the new elements that are in line with how the web works today. These new tags, shown in Figure 5, are structural or semantic in nature.</p> <table border="1" bordercolor="#000000" cellpadding="3" cellspacing="3" style="background-color: rgb(255, 255, 255); width: 595px;" width="100%"><thead><tr><th scope="col"> <strong>Element</strong></th> <th scope="col"> <strong>Purpose</strong></th> </tr></thead><caption> <strong>Figure 5: Semantic elements in HTML5</strong></caption> <tbody><tr><td> <article></td> <td> For independent content, such as blog post or article</td> </tr><tr><td> <aside></td> <td> For content slightly related to primary content on page</td> </tr><tr><td> <figure></td> <td> For grouping a section of standalone content, such as video or an image</td> </tr><tr><td> <figcaption></td> <td> For use with <figure> (optionally) to provide a caption</td> </tr><tr><td> <footer></td> <td> For providing author, copyright data, etc.</td> </tr><tr><td> <header></td> <td> For introductory content, could include navigation</td> </tr><tr><td> <hgroup></td> <td> For grouping <h1> to <h6></td> </tr><tr><td> <nav></td> <td> For content intended to provide navigation</td> </tr><tr><td> <section></td> <td> For a section in a document; similar to sections in newspapers</td> </tr></tbody></table><p>A good number of websites today have very similar structures. Think of footers, for example: Many sites display footers, which usually contain author information, links, and copyright information. A typical HTML approach to footers would look something like this:</p> <pre class="brush: text"> <div id="footer">© Copyright 2011 Egan & Palermo</div></pre> <p>How many <div> tags would you guess there are on the web functioning as the container for footer information? Well, the count is so high it became obvious that a tag was needed to represent this information. In HTML5, the tag looks like this:</p> <pre class="brush: text"> <footer>© Copyright 2011 Egan & Palermo</footer></pre> <p>The main purpose of semantic elements is to provide context to the data. These tags are not about how the content looks. Rather, they are more concerned about the substance of the content. You modify the appearance of these elements through CSS.</p> <p>The <input> tag in HTML5 supports new attribute types, shown in Figure 6.</p> <table border="1" bordercolor="#000000" cellpadding="3" cellspacing="3" style="background-color: rgb(255, 255, 255); width: 350px;" width="100%"><caption> <strong>Figure 6: New input attributes</strong></caption> <tbody><tr><td> <strong>Input Attribute</strong></td> <td> <strong>Type Value</strong></td> </tr><tr><td> color</td> <td> Hexadecimal color value</td> </tr><tr><td> date</td> <td> Date</td> </tr><tr><td> datetime</td> <td> Date and/or time</td> </tr><tr><td> datetime-local</td> <td> Local date and/or time</td> </tr><tr><td> email</td> <td> Email address(es)</td> </tr><tr><td> month</td> <td> Month</td> </tr><tr><td> number</td> <td> Numeric</td> </tr><tr><td> range</td> <td> Numeric range</td> </tr><tr><td> search</td> <td> Intent to search</td> </tr><tr><td> tel</td> <td> Telephone number</td> </tr><tr><td> time</td> <td> Time</td> </tr><tr><td> url</td> <td> URL</td> </tr><tr><td> week</td> <td> Week number</td> </tr></tbody></table><p>Although not all browsers support these new attribute types, it is clear that these types will map nicely with our modern entry forms.</p> <h3> Audio and Video Capabilities</h3> <p>Support for multimedia via the <audio> and <video> tags is another welcome addition to HTML5. What used to require a plug-in is now accomplished with simple HTML5 tags. Getting started is very easy. Observe the following markup and the screen shot in Figure 7.</p> <pre class="brush: text" language="text" linenumbers="none"> <video src="big_buck_bunny.mp4" controls> Sorry, your browser does not support the video tag. </video></pre> <p><img alt="135865_Fig7_HTML5_video_control_0" src="/content/content/135865/135865_fig7_html5_video_control.jpg" title="Figure 7: HTML5 video control" class="old-inline-image"></p> <p>With just a few lines of code, you can have a video up and running with interactive controls for your users to manage! The controls attribute can stand by itself, or you can use controls="controls" to provide the XML-friendly approach. Also, note that within the tags you can provide optional text that will be displayed if the browser does not support the video tag. As you select your video formats, remember that not all browsers support the same video types.</p> <p>If adding video seems easy, HTML5 makes it just as easy to add audio to your site. The markup is fairly similar:</p> <pre class="brush: text"> <audio src="music.mp3" controls> Sorry, your browser does not support the audio tag. </audio></pre> <p>Like the <video> tag, the <audio> tag contains a controls attribute for visual display to manage volume and positioning of audio, as Figure 8 shows.</p> <div> <img alt="135865_Fig8_HTML5_audio_control_0" src="/content/content/135865/135865_fig8_html5_audio_control.jpg" title="Figure 8: HTML5 audio control" class="old-inline-image"></div> <p>Although this example features an MP3 audio file, be aware that not all browsers support the same audio types.</p> <p>A very exciting addition to HTML5 is the <canvas> tag. With this new feature, developers can add rich graphical experiences to their web pages. Think of a canvas as you would visual art in the real world. A painting canvas is usually a blank rectangle waiting to be drawn or painted upon. Likewise, in your web page, a canvas is a designated section of the page that you can draw on. By using the <canvas> tag, you eliminate the need for plug-ins that provide animations. Here is an example of how to declare a simple <canvas> tag:</p> <pre class="brush: text"> <canvas id="myArtwork" width="200" height="200"> Your browser does not support the canvas element. </canvas></pre> <p>To begin your artwork, you need calls in JavaScript are needed. Using the canvas from the preceding example, Figure 9 shows how to draw a simple blue square.</p> <pre class="brush: text" language="text" linenumbers="none" title="Figure 9: JavaScript for Canvas"> <script type="text/javascript"> function advagg_mod_1() { // Count how many times this function is called. advagg_mod_1.count = ++advagg_mod_1.count || 1; try { if (advagg_mod_1.count <= 40) { var art=document.getElementById("myArtwork"); var ctx=art.getContext("2d"); ctx.fillStyle="#FF0000"; ctx.fillRect(0,0,150,75); // Set this to 100 so that this function only runs once. advagg_mod_1.count = 100; } } catch(e) { if (advagg_mod_1.count >= 40) { // Throw the exception if this still fails after running 40 times. throw e; } else { // Try again in 250 ms. window.setTimeout(advagg_mod_1, 250); } } } function advagg_mod_1_check() { if (window.jQuery && window.Drupal && window.Drupal.settings) { advagg_mod_1(); } else { window.setTimeout(advagg_mod_1_check, 250); } } advagg_mod_1_check();</script> </pre> <p>To what degree can the <canvas> tag enhance the user experience? You really must try it yourself to experience the difference. However, to give you an idea, Figure 10 presents a screen shot of the game "<a href="http://www.pirateslovedaisies.com/" target="_blank">Pirates Love Daisies</a>." This tower-defense game is packed with action, animation, and stimulating sounds. It is so well done that you might find yourself doubting it is a pure HTML5 page.</p> <div> <img alt="135865_Fig10_Pirates_Love_Daisies_game_0" src="/content/content/135865/135865_fig10_pirates_love_daisies_game.jpg" title="Figure 10: Pirates Love Daisies game" class="old-inline-image"></div> <p>Another striking demo that showcases a variety of HTML5 features, including Scalable Vector Graphics (SVG) support, is found at <a href="http://director.bonjovi.com/" target="_blank">director.bonjovi.com</a>. This page, shown in Figure 11, allows a fan to drag and drop clips onto a circular timeline, add effects, and publish a custom Bon Jovi video.</p> <div> <img alt="135865_Fig11_Custom_Bon_Jovi_video_0" src="/content/content/135865/135865_fig11_custom_bon_jovi_video.jpg" title="Figure 11: Custom Bon Jovi video" class="old-inline-image"></div> <h3> Web Storage</h3> <p>Web storage represents another nice addition to HTML5. Web storage is a highly anticipated feature that allows larger amounts of data to be stored locally in the browser without generating a performance hit on round trips. The primary way developers handle local storage today is through cookies. The disadvantage of cookies is that the data is passed back and forth with every HTTP request or response.</p> <p>In HTML5, developers can use one of two options: local or session storage. The difference is that session storage expires when the browser session ends, while local storage has no time limit. This web-storage feature is available through objects in JavaScript. Here is an example of how to store a display name in local storage:</p> <pre class="brush: text"> <script type="text/javascript"> function advagg_mod_2() { // Count how many times this function is called. advagg_mod_2.count = ++advagg_mod_2.count || 1; try { if (advagg_mod_2.count <= 40) { localStorage.DisplayName="Egan-Palermo"; // Set this to 100 so that this function only runs once. advagg_mod_2.count = 100; } } catch(e) { if (advagg_mod_2.count >= 40) { // Throw the exception if this still fails after running 40 times. throw e; } else { // Try again in 250 ms. window.setTimeout(advagg_mod_2, 250); } } } function advagg_mod_2_check() { if (window.jQuery && window.Drupal && window.Drupal.settings) { advagg_mod_2(); } else { window.setTimeout(advagg_mod_2_check, 250); } } advagg_mod_2_check();</script></pre> <p>Note that in the preceding example, DisplayName was made up on the fly. The property name can be whatever you want it to be.</p> <h3> No Better Time to Be a Web Developer</h3> <p>What we have covered so far is just a taste of the new features in HTML5. This is an exciting time to be a web developer! Whether you are developing publicly for the web or creating internal sites for your company, HTML5 has much to offer in providing sorely needed features that are native to the browser. With growing support among all the major browsers and with new sites emerging that consistently use it, HTML5 is a must-visit technology for any serious web developer today. In the next article of this series, Dev Pro editors will focus on why leveraging HTML5 is important for ASP.NET developers in  "<a href="/article/html5/html5-aspnet-developer-139543" target="_blank">HTML5 for the ASP.NET Developer</a>."</p> </div> <div class="comments-wrapper" id="comments-4898"> <div class="comments"> <a href="javascript:void(0)" class="comments--show hidden">0 comments</a> </div> <div class="comments-container"> <div class="fill-comments"> <div class="comments-header"><span class="comments--hide">Hide comments</span></div> <form class="comment-form" action="/comment/reply/4898" method="post" id="comment-form" accept-charset="UTF-8"><div><div class="user-comment-body"> <div class="user-comment-field"> <div class="user-photo"> <img class="user-thumb-img" src="https://www.itprotoday.com/sites/all/themes/penton_core_theme/images/account-default-image.png" alt="" /> </div> <div class="user-content"> <div class="user-name"> <a href="/" class="js-penton-user-url-profile"></a> </div> <div class="user-comment"> <div class="field-type-text-long field-name-comment-body field-widget-text-textarea form-wrapper" id="comment_body"><div id="comment-body-add-more-wrapper"><div class="text-format-wrapper"><div class="form-item form-type-textarea form-item-comment-body-und-0-value"> <label class="element-invisible" for="edit-comment-body-4898">Comment <span class="form-required" title="This field is required.">*</span></label> <div class="form-textarea-wrapper resizable"><textarea class="text-full ckeditor-mod form-textarea required" placeholder="Be the first to comment..." id="edit-comment-body-4898" name="comment_body[und][0][value]" cols="60" rows="5"></textarea></div> </div> <a class="ckeditor_links" style="display:none" href="javascript:void(0);" onclick="javascript:Drupal.ckeditorToggle(['edit-comment-body-4898'],'Switch to plain text editor','Switch to rich text editor');" id="switch_edit-comment-body-4898">Switch to plain text editor</a><fieldset class="filter-wrapper element-invisible form-wrapper" id="edit-comment-body-und-0-format"><div class="fieldset-wrapper"><div class="filter-help form-wrapper" id="edit-comment-body-und-0-format-help"><p><a href="/filter/tips" target="_blank">More information about text formats</a></p></div><div class="form-item form-type-select form-item-comment-body-und-0-format"> <label for="edit-comment-body-und-0-format--2">Text format </label> <select class="filter-list form-select" id="edit-comment-body-und-0-format--2" name="comment_body[und][0][format]"><option value="comments" selected="selected">Comments</option><option value="plain_text">Plain text</option></select> </div> <div class="filter-guidelines form-wrapper" id="edit-comment-body-und-0-format-guidelines"><div class="filter-guidelines-item filter-guidelines-comments"><h3>Comments</h3><ul class="tips"><li>Allowed HTML tags: &lt;em&gt; &lt;strong&gt; &lt;blockquote&gt; &lt;br&gt; &lt;p&gt;</li></ul></div><div class="filter-guidelines-item filter-guidelines-plain_text"><h3>Plain text</h3><ul class="tips"><li>No HTML tags allowed.</li><li>Web page addresses and e-mail addresses turn into links automatically.</li><li>Lines and paragraphs break automatically.</li></ul></div></div></div></fieldset> </div> <a href="#" class="publish js-publish user-comment__publishbtn">Publish</a><span class='comment-error'><a href="/penton_modal/nojs/login" class="ctools-use-modal ctools-modal-modal-popup-login" rel="nofollow">Log in or register to comment</a></span></div></div> </div> </div> </div> </div> <input type="hidden" name="cid" value="" /> <input type="hidden" name="pid" value="" /> <input type="hidden" name="form_build_id" value="form-3gEG46OBTouk87DvLJ4FBJMTYA4SaZNgbiPCui9_Pu8" /> <input type="hidden" name="form_id" value="comment_node_article_form" /> <input type="hidden" name="captcha_sid" value="239095144" /> <input type="hidden" name="captcha_token" value="d0ea2d99ecf8762ba21a6a8f0c7775f8" /> <div class="element-invisible"><div class="form-actions form-wrapper" id="edit-actions"><button id="edit-submit-4898" name="op" value="Save" class="form-submit">Save</button> </div></div><div class="url-textfield"><div class="form-item form-type-textfield form-item-url"> <label for="edit-url">Leave this field blank </label> <input autocomplete="off" type="text" id="edit-url" name="url" value="" size="20" maxlength="128" class="form-text" /> </div> </div></div></form> <div class="comments-inner-container"> </div> </div> </div> </div> </div> <div class="row related-articles-row"> <div class="related-articles-heading">Recommended Reading</div><div class="related-articles-wrapper"><a href="/development-techniques-and-management/microsoft-s-ai-copilot-starting-automate-coding-industry" class="small-article-link"><article class="small-article"><div class="img-crop"><img loading="lazy" class="js-imgpxr" data-x2src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_retina/public/github-building.jpg?itok=dJwSYxcy" src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_standard/public/github-building.jpg?itok=5pZ3bCTC" width="90" height="83" alt="Microsoft&#039;s GitHub offices" /></div><div class="small-article__inner"><div class="small-article__inner-title">Microsoft’s AI Copilot Is Starting to Automate the Coding Industry</div><span>Apr 17, 2024</span></div></article></a><a href="/development-techniques-and-management/how-build-international-shipping-software-system" class="small-article-link"><article class="small-article"><div class="img-crop"><img loading="lazy" class="js-imgpxr" data-x2src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_retina/public/digital%20world%20map%20on%20warehouse%20background.jpg?itok=YWPaOQA1" src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_standard/public/digital%20world%20map%20on%20warehouse%20background.jpg?itok=7x6kE1S4" width="90" height="83" alt="digital world map on warehouse background" /></div><div class="small-article__inner"><div class="small-article__inner-title">How To Build an International Shipping Software System</div><span>Jan 30, 2024</span></div></article></a><article class="dfp-ad-hideempty hidden n_hidden small-article" data-dfp-position="native_related"></article><a href="/artificial-intelligence/top-10-ai-stories-2023" class="small-article-link"><article class="small-article"><div class="img-crop"><img loading="lazy" class="js-imgpxr" data-x2src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_retina/public/artificial%20intelligence%20concept%20art.jpg?itok=tiy1RsI7" src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_standard/public/artificial%20intelligence%20concept%20art.jpg?itok=6IvaFWHm" width="90" height="83" alt="artificial intelligence concept art" /></div><div class="small-article__inner"><div class="small-article__inner-title">Top 10 AI Stories of 2023</div><span>Dec 19, 2023</span></div></article></a><a href="/compute-engines/top-10-stories-about-compute-engines-linux-2023" class="small-article-link"><article class="small-article"><div class="img-crop"><img loading="lazy" class="js-imgpxr" data-x2src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_retina/public/Abstract%20technology%20concept%20lighting%20effect%20on%20dark%20blue%20background.jpg?itok=FZixREt0" src="https://www.itprotoday.com/sites/itprotoday.com/files/styles/article_related_thumb_standard/public/Abstract%20technology%20concept%20lighting%20effect%20on%20dark%20blue%20background.jpg?itok=YgIVkchA" width="90" height="83" alt="Abstract technology concept lighting effect on dark blue background" /></div><div class="small-article__inner"><div class="small-article__inner-title">Top 10 Stories About Compute Engines, Linux in 2023</div><span>Dec 18, 2023</span></div></article></a></div> </div> <div class="item-list"><ul class="lazy-pagination"><li class="read-more pagination-read-more next first last"><a href="/development-techniques-and-management/microsoft-s-ai-copilot-starting-automate-coding-industry?parent=4898&infscr=1" rel="nofollow">Load More</a></li> </ul></div> </article> </section> </div> </div> </div> </div> <div class="banner-bottom-wrapper"> <div id="banner-bottom" class="dfp-ad-hideempty hidden"> <div data-dfp-position="bottom_banner"></div> </div> </div> <!-- /Main Content Area --> <!-- Footer --> <footer class="corporate l-footer l-footer-min"> <div class="l-footer-inner"> <div class="l-footer-info"> <div class="footer-logo-min"> <a href="/"><img class="footer-logo-min__site_logo" loading="lazy" src="/sites/all/themes/penton_subtheme_itprotoday/images/logos/footer.png" alt="Logo" /></a> <div class="small-12 medium-5 columns"> <div class="footer-links"> </div> </div> </div> <div class="footer-content"> <ul class="footer-min-col"> <li class="footer-min-col__item"> <a href="/about-us" class="footer-min-col-link">About</a> </li> <li class="footer-min-col__item"> <a href="https://www.itprotoday.com/advertise" class="footer-min-col-link">Advertise</a> </li> <li class="footer-min-col__item"> <a href="/contact-us" class="footer-min-col-link">Contact Us</a> </li> <li class="footer-min-col__item"> <a href="/sitemap" class="footer-min-col-link">Sitemap</a> </li> <li class="footer-min-col__item"> <a href="http://www.penton.com/privacy-policy#ThirdPartyAdvertisingTech" class="footer-min-col-link">Ad Choices</a> </li> </ul> <ul class="footer-min-col no-margin"> <li class="footer-min-col__item"> <a href="https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html" class="footer-min-col-link">CCPA: Do not sell my personal info</a> </li> <li class="footer-min-col__item"> <a href="https://informa.com/privacy-policy" class="footer-min-col-link">Privacy Policy</a> </li> <li class="footer-min-col__item"> <a href="https://engage.informa.com/terms-of-service" class="footer-min-col-link">Terms of Service</a> </li> <li class="footer-min-col__item"> <a href="https://info.wrightsmedia.com/informa-licensing-reprints-request" class="footer-min-col-link">Content Licensing/Reprints</a> </li> <li class="footer-min-col__item"> <a href="https://engage.informa.com/cp/cookie-policy/" class="footer-min-col-link">Cookie Policy</a> </li> </ul> <div class="social-min-col"> <p class="social-min-col__label">Follow us:</p> <div class="social-icons"><a href="https://www.facebook.com/ITProToday/" title="" class="social-icons__link"><i aria-label="facebook" class="social-icons__icon fa fa-facebook"></i></a><a href="https://twitter.com/ITProToday" title="" class="social-icons__link"><i aria-label="twitter" class="social-icons__icon fa fa-twitter"></i></a><a href="https://www.linkedin.com/company/itpro-today/" title="" class="social-icons__link"><i aria-label="linkedin" class="social-icons__icon fa fa-linkedin"></i></a><a href="https://www.youtube.com/channel/UCedUgT8R7qC3vsOSxXS5-ZA" title="" class="social-icons__link"><i aria-label="youtube" class="social-icons__icon fa fa-youtube"></i></a><a href="https://www.itprotoday.com/rss.xml" title="" class="social-icons__link"><i aria-label="rss" class="social-icons__icon fa fa-rss"></i></a></div></div> </div> </div> </div> <div class="l-corporate-footer"> <div class="l-corporate-footer-logo-copyrights-wrapper"> <div class="l-corporate-footer-logo-copyrights"> <div class="l-corporate-footer-logo"> <a href="https://tech.informa.com/"><img loading="lazy" src="/sites/all/themes/informa_midtheme_tech/images/corporate_footer_logo.png" alt="Informa Tech" /></a> </div> <div class="l-coporate-footer-copyright"> &#169; 2024 Informa USA, Inc., All rights reserved </div> </div> </div> <div class="l-corporate-footer-links-wrapper"> <div class="l-coporate-footer-links"> <ul class="links"><li class="menu-1804 first"><a href="https://informa.com/privacy-policy/" title="">Privacy Policy</a></li> <li class="menu-1805"><a href="https://engage.informa.com/cp/cookie-policy/">Cookie Policy</a></li> <li class="menu-1806 last"><a href="http://engage.informa.com/terms-of-service" title="">Terms of Use</a></li> </ul> </div> </div> </div> </footer> <!-- /Footer --> </div> </div> </div> </main> <!-- /Page --> <div id="hidden-dfp" class="dfp-ad-hideempty hidden"> <div data-dfp-position="hidden" class="hidden-for-ads"></div> </div> <!--[if lte IE 9]> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__o462xIvJcTydPQBQSqIGbKyyOKoMc_3r_T97VJ_RROY__JRUPJgstYYy6ZBdjWHZ2Oe9kekM7QWkvt7HMcvaB7_k__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js#ie9-" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);jQuery.holdReady(true)} function advagg_mod_3(){advagg_mod_3.count=++advagg_mod_3.count||1;try{if(advagg_mod_3.count<=40){init_drupal_core_settings();advagg_mod_3.count=100}}catch(e){if(advagg_mod_3.count>=40){throw e}else window.setTimeout(advagg_mod_3,1)}} function advagg_mod_3_check(){if(window.init_drupal_core_settings&&window.jQuery&&window.Drupal){advagg_mod_3()}else window.setTimeout(advagg_mod_3_check,1)};advagg_mod_3_check();"></script> <![endif]--> <!--[if gt IE 9]> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__o462xIvJcTydPQBQSqIGbKyyOKoMc_3r_T97VJ_RROY__JRUPJgstYYy6ZBdjWHZ2Oe9kekM7QWkvt7HMcvaB7_k__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js#ie10+" defer="defer" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);jQuery.holdReady(true)} function advagg_mod_3(){advagg_mod_3.count=++advagg_mod_3.count||1;try{if(advagg_mod_3.count<=40){init_drupal_core_settings();advagg_mod_3.count=100}}catch(e){if(advagg_mod_3.count>=40){throw e}else window.setTimeout(advagg_mod_3,1)}} function advagg_mod_3_check(){if(window.init_drupal_core_settings&&window.jQuery&&window.Drupal){advagg_mod_3()}else window.setTimeout(advagg_mod_3_check,1)};advagg_mod_3_check();"></script> <![endif]--> <!--[if !IE]><!--> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__o462xIvJcTydPQBQSqIGbKyyOKoMc_3r_T97VJ_RROY__JRUPJgstYYy6ZBdjWHZ2Oe9kekM7QWkvt7HMcvaB7_k__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);jQuery.holdReady(true)} function advagg_mod_3(){advagg_mod_3.count=++advagg_mod_3.count||1;try{if(advagg_mod_3.count<=40){init_drupal_core_settings();advagg_mod_3.count=100}}catch(e){if(advagg_mod_3.count>=40){throw e}else window.setTimeout(advagg_mod_3,1)}} function advagg_mod_3_check(){if(window.init_drupal_core_settings&&window.jQuery&&window.Drupal){advagg_mod_3()}else window.setTimeout(advagg_mod_3_check,1)};advagg_mod_3_check();"></script> <!--<![endif]--> <script type="text/javascript"> <!--//--><![CDATA[//><!-- (function(w){"use strict";if(!w.loadCSS)w.loadCSS=function(){};var rp=loadCSS.relpreload={};rp.support=(function(){var ret;try{ret=w.document.createElement("link").relList.supports("preload")}catch(e){ret=false};return function(){return ret}})();rp.bindMediaToggle=function(link){var finalMedia=link.media||"all" function enableStylesheet(){if(link.addEventListener){link.removeEventListener("load",enableStylesheet)}else if(link.attachEvent)link.detachEvent("onload",enableStylesheet);link.setAttribute("onload",null);link.media=finalMedia};if(link.addEventListener){link.addEventListener("load",enableStylesheet)}else if(link.attachEvent)link.attachEvent("onload",enableStylesheet);setTimeout(function(){link.rel="stylesheet";link.media="only x"});setTimeout(enableStylesheet,3e3)};rp.poly=function(){if(rp.support())return;var links=w.document.getElementsByTagName("link");for(var i=0;i<links.length;i++){var link=links[i];if(link.rel==="preload"&&link.getAttribute("as")==="style"&&!link.getAttribute("data-loadcss")){link.setAttribute("data-loadcss",true);rp.bindMediaToggle(link)}}};if(!rp.support()){rp.poly();var run=w.setInterval(rp.poly,500);if(w.addEventListener){w.addEventListener("load",function(){rp.poly();w.clearInterval(run)})}else if(w.attachEvent)w.attachEvent("onload",function(){rp.poly();w.clearInterval(run)})};if(typeof exports!=="undefined"){exports.loadCSS=loadCSS}else w.loadCSS=loadCSS}(typeof global!=="undefined"?global:this)); //--><!]]> </script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- function advagg_mod_5(){advagg_mod_5.count=++advagg_mod_5.count||1;try{if(advagg_mod_5.count<=40){window._vwo_code=window._vwo_code||(function(){var account_id=743738,settings_tolerance=2e3,library_tolerance=1500,use_existing_jquery=false,is_spa=1,hide_element='body',f=false,d=document,code={use_existing_jquery:function(){return use_existing_jquery},library_tolerance:function(){return library_tolerance},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a)}},finished:function(){return f},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish()};d.getElementsByTagName('head')[0].appendChild(b)},init:function(){window.settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);var a=d.createElement('style'),b=hide_element?hide_element+'{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}':'',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet){a.styleSheet.cssText=b}else a.appendChild(d.createTextNode(b));h.appendChild(a);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&f='+(+is_spa)+'&r='+Math.random());return settings_timer}};window._vwo_settings_timer=code.init();return code}());advagg_mod_5.count=100}}catch(e){if(advagg_mod_5.count>=40){throw e}else window.setTimeout(advagg_mod_5,250)}} function advagg_mod_5_check(){if(window.jQuery&&window.Drupal&&window.Drupal.settings){advagg_mod_5()}else window.setTimeout(advagg_mod_5_check,250)};advagg_mod_5_check(); //--><!]]> </script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- function init_drupal_core_settings() {jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","setHasJsCookie":0,"ajaxPageState":{"theme":"penton_subtheme_itprotoday","theme_token":"RUKQTm9Qj2f-rIdoZrf8qUalYl9S5LHgfCtzBcW8tk8","jquery_version":"1.10","css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"misc\/ui\/jquery.ui.core.css":1,"misc\/ui\/jquery.ui.theme.css":1,"modules\/book\/book.css":1,"modules\/comment\/comment.css":1,"sites\/all\/modules\/contrib\/date\/date_api\/date.css":1,"sites\/all\/modules\/contrib\/date\/date_popup\/themes\/datepicker.1.7.css":1,"modules\/field\/theme\/field.css":1,"sites\/all\/modules\/contrib\/logintoboggan\/logintoboggan.css":1,"modules\/node\/node.css":1,"modules\/search\/search.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_file\/uc_file.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_order\/uc_order.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_product\/uc_product.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_store\/uc_store.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/contrib\/views\/css\/views.css":1,"sites\/all\/modules\/contrib\/ckeditor\/css\/ckeditor.css":1,"sites\/all\/modules\/features\/penton_people_search\/penton_people_search.css":1,"sites\/all\/modules\/contrib\/ctools\/css\/ctools.css":1,"sites\/all\/modules\/custom\/magic_autocomplete_widget\/css\/select2.min.css":1,"sites\/all\/modules\/custom\/magic_autocomplete_widget\/css\/magic-autocomplete.css":1,"sites\/all\/modules\/contrib\/ctools\/css\/modal.css":1,"sites\/all\/modules\/contrib\/forward\/forward.css":1,"sites\/all\/modules\/contrib\/print\/print_ui\/css\/print_ui.theme.css":1,"sites\/all\/modules\/contrib\/ckeditor\/css\/ckeditor.editor.css":1,"modules\/filter\/filter.css":1,"public:\/\/honeypot\/honeypot.css":1,"sites\/all\/themes\/penton_subtheme_itprotoday\/public\/style.css":1,"sites\/all\/themes\/penton_core_theme\/public\/vendor.css":1,"sites\/all\/themes\/penton_core_theme\/public\/override\/system.messages.css":1,"sites\/all\/themes\/penton_core_theme\/public\/override\/system.base.css":1,"sites\/all\/themes\/penton_core_theme\/public\/override\/system.menus.css":1,"sites\/all\/themes\/penton_core_theme\/public\/override\/user.css":1,"sites\/all\/themes\/penton_core_theme\/public\/style.ie9.css":1},"js":{"sites\/all\/modules\/contrib\/jquery_update\/replace\/jquery\/1.10\/jquery.min.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/ajax.js":1}},"authcache":{"q":"node\/4898","cp":{"path":"\/","domain":".www.itprotoday.com","secure":true},"cl":23.14814814814815},"typekitId":"njq2hxj","adunit":"\/3834\/itprotoday.home","is_new_welcome_ad":1,"penton_custom_dfp":{"dfp_tags":{"everywhere":[],"article":{"native_leftrail_1":[{"disabled":false,"api_version":1,"machinename":"article_native_leftrail_1","slot":"[article] Native Left Rail 1","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"native_leftrail_1","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_1_lft"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_1_lft"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"native_leftrail_2":[{"disabled":false,"api_version":1,"machinename":"article_native_leftrail_2","slot":"[article] Native Left Rail 2","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"native_leftrail_2","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_2_lft"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_2_lft"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"native_related":[{"disabled":false,"api_version":1,"machinename":"article_native_related","slot":"[article] Native Related","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"native_related","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_12_1"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_12_1"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"native_inline":[{"disabled":false,"api_version":1,"machinename":"article_native_inline","slot":"[article] Native Inline","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"native_inline","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_13_1"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_13_1"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"right_rail_rect":[{"disabled":false,"api_version":1,"machinename":"_article_right_rail_rect","slot":"[article] [article] Right rail rect","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"right_rail_rect","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_1_rht"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_1_rht"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"native_umpu":[{"disabled":false,"api_version":1,"machinename":"article_native_umpu","slot":"[article] Native Umpu","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"native_umpu","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_3"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_3"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"inarticle1":[{"disabled":false,"api_version":1,"machinename":"article_300_1_rht_infinite","slot":"[article] Rectangle Inline 1","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"inarticle1","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_1_rht"},{"target":"article_number","value":"1"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_1_rht"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"inarticle2":[{"disabled":false,"api_version":1,"machinename":"article_300_2_rht_infinite","slot":"[article] Rectangle Inline 2","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"inarticle2","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_2_rht"},{"target":"article_number","value":"1"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_2_rht"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"inarticle3":[{"disabled":false,"api_version":1,"machinename":"article_300_3_rht_infinite","slot":"[article] Rectangle Inline 3","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"inarticle3","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_3_rht"},{"target":"article_number","value":"1"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_3_rht"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"inarticle4":[{"disabled":false,"api_version":1,"machinename":"article_300_4_rht_infinite","slot":"[article] Rectangle Inline 4","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"inarticle4","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_4_rht"},{"target":"article_number","value":"1"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_4_rht"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"left_rail_rect":[{"disabled":false,"api_version":1,"machinename":"article_300_x_lft","slot":"[article] Left rail 300_x_lft","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[300,250],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"left_rail_rect","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_1_lft"}],"breakpoints":[{"browser_size":"779x0","ad_sizes":"300x250"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_1_lft"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"jumbotron":[{"disabled":false,"api_version":1,"machinename":"article_300_x_rht","slot":"[article] Rectangle Inline and Jumbotron","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[300,250],[300,600]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"jumbotron","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"300_1_rht"}],"breakpoints":[{"browser_size":"0x0","ad_sizes":"300x250"},{"browser_size":"779x0","ad_sizes":"300x250,300x600"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[300,250],"browser_size":[0,0]},{"ad_sizes":[[300,250],[300,600]],"browser_size":[779,0]}],"targeting":[{"target":"pos","value":"300_1_rht"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"top_banner":[{"disabled":false,"api_version":1,"machinename":"article_728_1_a","slot":"[article] Leaderboard 728_1_a","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[728,90],[970,90],[320,50],[970,250]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"top_banner","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"728_1_a"},{"target":"program","value":"[node:program_without_space_specialchars]"},{"target":"ptype","value":"[node:field_penton_article_type]"},{"target":"nid","value":"[node:nid]"},{"target":"pterm","value":"[node:pterm_without_space_specialchars]"},{"target":"sterm","value":"[node:sterm_without_space_specialchars]"},{"target":"author","value":"[node:author_without_space_specialchars]"},{"target":"combo","value":"wrap"},{"target":"content","value":"[node:program_without_space_specialchars]"}],"breakpoints":[{"browser_size":"1119x0","ad_sizes":"970x90,970x250,728x90"},{"browser_size":"728x0","ad_sizes":"728x90"},{"browser_size":"0x0","ad_sizes":"320x50"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[[970,90],[970,250],[728,90]],"browser_size":[1119,0]},{"ad_sizes":[728,90],"browser_size":[728,0]},{"ad_sizes":[320,50],"browser_size":[0,0]}],"targeting":[{"target":"pos","value":"728_1_a"},{"target":"combo","value":"wrap"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"bottom_banner":[{"disabled":false,"api_version":1,"machinename":"article_728_footer","slot":"[article] Leaderboard 728_10_a","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[728,90],[320,50]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"bottom_banner","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"728_10_a"}],"breakpoints":[{"browser_size":"1119x0","ad_sizes":"728x90"},{"browser_size":"728x0","ad_sizes":"728x90"},{"browser_size":"0x0","ad_sizes":"320x50"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[728,90],"browser_size":[1119,0]},{"ad_sizes":[728,90],"browser_size":[728,0]},{"ad_sizes":[320,50],"browser_size":[0,0]}],"targeting":[{"target":"pos","value":"728_10_a"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"hidden":[{"disabled":false,"api_version":1,"machinename":"article_canopy","slot":"[article] Canopy","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[1,1],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"hidden","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"adhesion"},{"target":"gdpr_banner","value":"off"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"adhesion"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]},{"disabled":false,"api_version":1,"machinename":"article_footnote_floor","slot":"[article] Footnote_Floor","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[1,1],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"hidden","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"footnote"},{"target":"gdpr_banner","value":"off"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"footnote"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]},{"disabled":false,"api_version":1,"machinename":"article_oop","slot":"[article] Out of Page","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[0,0],"block":0,"settings":{"out_of_page":1,"slug":"","short_tag":0,"location":"article","position":"hidden","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"oop_a"},{"target":"gdpr_banner","value":"off"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"oop_a"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]},{"disabled":false,"api_version":1,"machinename":"article_pagewrap","slot":"[article] PageWrap","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[1,1],"block":0,"settings":{"out_of_page":1,"slug":"","short_tag":0,"location":"article","position":"hidden","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"wrap"},{"target":"combo","value":"wrap"}],"breakpoints":[{"browser_size":"1500x0","ad_sizes":"1x1"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[1,1],"browser_size":[1500,0]}],"targeting":[{"target":"pos","value":"wrap"},{"target":"combo","value":"wrap"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"custom_content_channel_sponsored_header":[{"disabled":false,"api_version":1,"machinename":"article_ccc_header","slot":"[article] Article CCC header","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[160,65],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"custom_content_channel_sponsored_header","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"customsponsoredlogo1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"customsponsoredlogo1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"custom_content_channel_sponsored_resources":[{"disabled":false,"api_version":1,"machinename":"article_ccc_resources","slot":"[article] Article CCC resources","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[160,65],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"custom_content_channel_sponsored_resources","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"customsponsoredlogo2"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"customsponsoredlogo2"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"inarticlevid":[{"disabled":false,"api_version":1,"machinename":"article_in_article_video_ad","slot":"[article] In-Article Video Ad","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[1,1],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"inarticlevid","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"inarticlevideo_1_a"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"inarticlevideo_1_a"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"reveal":[{"disabled":false,"api_version":1,"machinename":"article_reveal","slot":"[article] Reveal Ad","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[1,1],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"reveal","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"reveal_1"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"reveal_1"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"infinitescroll":[{"disabled":false,"api_version":1,"machinename":"article_interscroller_728_x_a","slot":"[article] Interscroller\/Leaderboard 2","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[728,90],[320,50]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"infinitescroll","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"728_2_a"}],"breakpoints":[{"browser_size":"1119x0","ad_sizes":"728x90"},{"browser_size":"728x0","ad_sizes":"728x90"},{"browser_size":"0x0","ad_sizes":"320x50"}]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[{"ad_sizes":[728,90],"browser_size":[1119,0]},{"ad_sizes":[728,90],"browser_size":[728,0]},{"ad_sizes":[320,50],"browser_size":[0,0]}],"targeting":[{"target":"pos","value":"728_2_a"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"sponsored_logo":[{"disabled":false,"api_version":1,"machinename":"article_sponsored_logo","slot":"[article] Sponsored Logo","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[160,65],[125,125],[90,90]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"sponsored_logo","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"sponsoredlogo"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"sponsoredlogo"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}],"sponsored_logo_weather":[{"disabled":false,"api_version":1,"machinename":"article_sponsored_logo_weather","slot":"[article] Sponsored Logo Weather","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":[[160,65],[125,125],[90,90]],"block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"article","position":"sponsored_logo_weather","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"sponsoredlogo_weather"},{"target":"article_number","value":"1"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"sponsoredlogo_weather"},{"target":"article_number","value":"1"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}]},"taxonomy":{"native_article_4":[{"disabled":false,"api_version":1,"machinename":"term_native_article_4","slot":"[taxonomy] Native Article 4","adunit":"\/3834\/itprotoday.home\/article\/software_development\/development_techniques_and_management","size":"fluid","block":0,"settings":{"out_of_page":0,"slug":"","short_tag":0,"location":"taxonomy","position":"native_article_4","adsense_ad_types":"","adsense_channel_ids":"","adsense_colors":{"background":"","border":"","link":"","text":"","url":""},"targeting":[{"target":"pos","value":"nativekey_10"}],"breakpoints":[]},"export_module":"penton_dfp","type":"Default","export_type":2,"in_code_only":true,"table":"dfp_tags","breakpoints":[],"targeting":[{"target":"pos","value":"nativekey_10"},{"target":"ptype","value":"Article"},{"target":"nid","value":"4898"},{"target":"pterm","value":"development_techniques_and_management"},{"target":"author","value":"michael_palermo,daniel_egan"},{"target":"reg","value":"anonymous"}]}]}},"current_type":"article","default_adunit":"\/3834\/itprotoday.home","brand_adunit":"","async_rendering":1,"single_request":0,"collapse_empty_divs":"1","viewport":1,"lifetime_banner":"2000","do_byline":0,"enable_sticky":1,"enable_cb_refresh":0,"cb_refresh_interval":"15","is_blocked_ip":false,"uip":"18.119.105.239"},"is_new_article_view":0,"penton_eloqua_api":{"eloqua_site_id":"1885539667","eloqua_subdomain":"trk.itprotoday.com","tracking_enabled":1,"fields":["nl","utm_rid"]},"CToolsModal":{"loadingText":"Loading...","closeText":"Close Window","closeImage":"\u003Cimg src=\u0022https:\/\/www.itprotoday.com\/sites\/all\/modules\/contrib\/ctools\/images\/icon-close-window.png\u0022 alt=\u0022Close window\u0022 title=\u0022Close window\u0022 \/\u003E","throbber":"\u003Cimg src=\u0022https:\/\/www.itprotoday.com\/sites\/all\/modules\/contrib\/ctools\/images\/throbber.gif\u0022 alt=\u0022Loading\u0022 title=\u0022Loading...\u0022 \/\u003E"},"modal-popup-small":{"modalSize":{"type":"fixed","width":300,"height":300},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopup"},"modal-popup-medium":{"modalSize":{"type":"fixed","width":550,"height":450},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopup"},"modal-popup-large":{"modalSize":{"type":"scale","width":0.8,"height":0.8},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopup"},"modal-popup-x-large":{"modalSize":{"type":"scale","width":1100,"height":850},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopupXLarge"},"modal-popup-basic":{"modalSize":{"type":"fixed","width":550,"height":450},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopupBasic"},"modal-popup-basic-email":{"modalSize":{"type":"fixed","width":550,"height":450},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopupBasicEmail"},"modal-popup-advanced":{"modalSize":{"type":"fixed","width":550,"height":450},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopupAdvanced"},"modal-popup-login":{"modalSize":{"type":"fixed","width":545,"height":485},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","modalTheme":"PentonModalPopupLogin"},"modal-popup-legal-comm":{"modalSize":{"type":"fixed","width":300,"height":300},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","closeText":"Close","modalTheme":"PentonModalPopupLegalComm"},"modal-popup-validation-prompt":{"modalSize":{"type":"fixed","width":300,"height":300},"modalOptions":{"opacity":0.5,"background":"#000"},"animation":"fadeIn","closeText":"Close","modalTheme":"PentonModalPopupValidationPrompt"},"gdpr_countries":[],"prevent_js_alerts":{"module_path":"sites\/all\/modules\/contrib\/prevent_js_alerts"},"ws_pb":{"countlayout":"horizontal"},"informa_gtm":{"user":{"profile":{"profileInfo":{"profileID":null,"userName":null,"email":null}},"segment":{"loginStatus":"unreg","permission":"anonymous"}},"page":{"pageInfo":{"pageName":"The Past, Present, and Future of HTML5","destinationURL":"https:\/\/www.itprotoday.com\/web-application-management\/past-present-and-future-html5","pageID":"f9fd4930-a1fa-41c1-be9c-6c4e3d1d2990","author":"Michael Palermo|Daniel Egan","issueDate":"Jun 27, 2011"},"attributes":{"destinationPath":"\/web-application-management\/past-present-and-future-html5","taxonomy":"Development Techniques and Management","buyerJourney":null,"permission":"public","subType1":"Article","subType2":null,"visibility":"visible","programs":null,"scrollCount":"10","scrollPosition":"1_of_10","contentSponsor":null,"byline":"Michael Palermo and Daniel Egan","contentLabel":null},"category":{"pageType":"article","primaryCategory":"Software Development \u003E Development Techniques and Management"}}},"informa_gtm_events":[],"penton_gdpr":{"banner":"\u003Cdiv\u003E\n \u003Cdiv class=\u0022gdpr-popup-border\u0022\u003E\n \u003Cdiv class=\u0022gdrp-popup-content\u0022\u003E\n \u003Cdiv id=\u0022popup-text\u0022\u003E\n This website uses cookies, including third party ones, to allow for analysis of how people use our website in order to improve your experience and our services. By continuing to use our website, you agree to the use of such cookies. Click here for more information on our \u003Ca href=\u0022http:\/\/corporate.knect365.com\/privacy-centre\/our-cookie-policy\/\u0022 target=\u0022_blank\u0022\u003ECookie Policy\u003C\/a\u003E and \u003Ca href=\u0022https:\/\/knect365.com\/privacy-policy\u0022 target=\u0022_blank\u0022\u003EPrivacy Policy\u003C\/a\u003E.\u200b \u003C\/div\u003E\n \u003Cdiv id=\u0022popup-buttons\u0022\u003E\n \u003Cspan class=\u0022close-button\u0022\u003E\u0026times;\u003C\/span\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n\u003C\/div\u003E\n"},"advagg_font":{"proxima-nova":"proxima-nova","jaf-bernino-sans-condensed":"jaf-bernino-sans-condensed","merriweather-light":"Merriweather-Light","merriweather-bold":"Merriweather-Bold","merriweather":"Merriweather","helvetica-neue":"Helvetica Neue","consolas":"Consolas"},"advagg_font_storage":1,"advagg_font_cookie":1,"advagg_font_no_fout":0,"ckeditor":{"input_formats":{"comments":{"customConfig":"\/sites\/all\/modules\/contrib\/ckeditor\/ckeditor.config.js?sc6r5d","defaultLanguage":"en","toolbar":"[\n [\u0027Bold\u0027,\u0027Italic\u0027,\u0027Blockquote\u0027]\n]","enterMode":2,"shiftEnterMode":3,"toolbarStartupExpanded":true,"width":"100%","skin":"moono-lisa","format_tags":"p;div;pre;address;h1;h2;h3;h4;h5;h6","show_toggle":"t","default":"t","ss":2,"loadPlugins":{"drupalbreaks":{"name":"drupalbreaks","desc":"Plugin for inserting Drupal teaser and page breaks.","path":"\/sites\/all\/modules\/contrib\/ckeditor\/plugins\/drupalbreaks\/","buttons":{"DrupalBreak":{"label":"DrupalBreak","icon":"images\/drupalbreak.png"}},"default":"t"}},"entities":false,"entities_greek":false,"entities_latin":false,"scayt_autoStartup":false,"js_conf":{"fillEmptyBlocks":false},"stylesCombo_stylesSet":"drupal:\/sites\/all\/modules\/contrib\/ckeditor\/ckeditor.styles.js?sc6r5d","contentsCss":["\/sites\/all\/modules\/contrib\/ckeditor\/css\/ckeditor.css?sc6r5d","\/sites\/all\/modules\/contrib\/ckeditor\/ckeditor\/contents.css?sc6r5d"]}},"plugins":[],"textarea_default_format":{"edit-comment-body-4898":"comments"},"timestamp":"sc6r5d","module_path":"\/sites\/all\/modules\/contrib\/ckeditor","editor_path":"\/sites\/all\/modules\/contrib\/ckeditor\/ckeditor\/","ajaxToken":"0EfEMlsSREA1lehOsKww20_JOageClzD2til48Hp1l0","xss_url":"\/ckeditor\/xss","theme":"penton_subtheme_itprotoday","elements":{"edit-comment-body-4898":"comments"},"autostart":{"edit-comment-body-4898":true}},"ajax":{"edit-submit-4898":{"callback":"penton_comment_comment_add","event":"mousedown","keypress":true,"prevent":"click","url":"\/system\/ajax","submit":{"_triggering_element_name":"op","_triggering_element_value":"Save"}}},"urlIsAjaxTrusted":{"\/system\/ajax":true,"\/comment\/reply\/4898":true}}); if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(false);}} if(window.jQuery && window.Drupal){init_drupal_core_settings();} //--><!]]> </script> <script type="text/javascript" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__SI_3Jf1LswSYIPT2nOt89AVh__7kVYL_o5gkJN-XCW0__HlD2qoOEx_TcmqkvBYdBmKiy_MjdqNZuD8zu4HgaztA__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer"></script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__LOTzmTjOEyBYTRa73tu6Fj3qY7yfNxJxX3y1JUwojnc__40YrL2aSiZmfap0peqfapAZpogiJynGBflb-zJ7vQQo__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer" async="async"></script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__tySr6wQRZH62UkgX3pOEVXIqzqYYtt8E471UGbxtwtI__e-ztmPvExmTXYbOIqGgcLcBJ3WFm8kIk0gcBTnIgmX0__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer"></script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__E3u8USQplSZ5KJ7H1a04va3fLnxx2SBJ-VuwgI4-0Sk__AdhAFZ5QAk_VrKkFUOCnxJb9ANrhuWlKf15A7QHm14M__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer" async="async"></script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__6yeE2nNBsFfdTwfOlbg9lyoa1PlwfaWwa57z5jXs10g__Pz0uQhv5Va-AtDPQiBWxd6O1fH4EbSRT5coNgrdfODo__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- function advagg_mod_4(){advagg_mod_4.count=++advagg_mod_4.count||1;try{if(advagg_mod_4.count<=40){window.CKEDITOR_BASEPATH="/sites/all/modules/contrib/ckeditor/ckeditor/";advagg_mod_4.count=100}}catch(e){if(advagg_mod_4.count>=40){throw e}else window.setTimeout(advagg_mod_4,250)}} function advagg_mod_4_check(){if(window.jQuery&&window.Drupal&&window.Drupal.settings){advagg_mod_4()}else window.setTimeout(advagg_mod_4_check,250)};advagg_mod_4_check(); //--><!]]> </script> <script type="text/javascript" src="/sites/itprotoday.com/files/advagg_js/js__ax5VN18vQmrA6FY5TS3SYpdt18hbOFOcJ4xQWmOYupM__vTGsRDf8SvZDf2DwcETxDlJ9nNJrfUleoEr9tPtoUiQ__dx85Ttf_A0Sq8VDZcItaBSSxlnEE8sGTynBc9WZgKg0.js" defer="defer"></script> </div> </body> </html>