Microsoft & .NETASPWriting Active Server components in Visual Basic

Writing Active Server components in Visual Basic


Active Server components are a feature of Microsoft Internet Information Server (IIS) that provide a framework for building compiled components that can be used within Web pages. Below are step-by-step instructions for building Active Server components in Visual Basic (VB) 5.0. The process involves Active Server Pages (ASP), another feature of IIS. ASP provides the ability to combine server-side scripting in the same file with HTML, allowing you to use Active Server components and create dynamic Web pages.

Tools

Here are the tools that you need to build Active Server components:

  • Windows NT Workstation 4.0
  • Visual Basic 5.0 Enterprise Edition
  • Internet Information Server 3.0 or later, or Peer Web Services (which is IIS for Windows NT Workstation)
  • duct tape (Just kidding.)

Note: You will want to install IIS on your workstation, because VB will need to reference some of the IIS libraries, and you may need to start and stop the Web server during testing.

Construction

Building an Active Server component is not hard. Here are the steps involved in the construction of a small component that performs some simple file IO operations and generates a little HTML:

  1. Create an ActiveX DLL project and set the name to “ASCExample”

  2. Add the following references:

    Microsoft Active Server Pages 1.0 Object Library

    Microsoft Scripting Runtime

  3. Add a new class to the project, and set the name to “FileIO”. (Note: This name plus the project name will be used to identify your component in the registry, for example “ASCExample.FileIO”).

  4. Add this code to the FileIO class.

  5. Save everything and compile. That’s it.

Testing

Testing your Active Server component is easy (although debugging can get tedious). A few lines of VBScript or JavaScript in an ASP page is all that is required. Here’s the test script:



ASCExample Tester

ASCExample Tester

<% ' Create a FileIO object. set objFileIO = Server.CreateObject("ASCExample.FileIO") %>


<% ' Get some help from the FileIO object. objFileIO.help %>


<% ' Create a file for testing. strLogFileName = "c:temptest.log" objFileIO.appendLine strLogFileName, "This is line 1." %>

strLogFileName = <%= strLogFileName %>
fileExists() => <%= CStr(objFileIO.fileExists(strLogFileName)) %>
fileSize() => <%= objFileIO.fileSize(strLogFileName) %> bytes
<% ' Delete the file. objFileIO.deleteFile(strLogFileName) %>


File deleted.
fileExists() => <%= CStr(objFileIO.fileExists(strLogFileName)) %>


[end]

(Note: The <% and %> are used to delimit the server-side scripting.)

To use the test script, do the following:

  • Save the script as a file called “ASCExampleTester.asp” in a Web directory that has execute permission.

  • Point your browser at


    http://localhost/<dir>/ASCExampleTester.asp</font>
    , where the <dir> tag is the name of the Web directory where


    ASCExampleTester.asp</font>
    resides.

When you run the test script, you should get the following output.

Implementation details

Basically, an Active Server component is just a VB class. What makes it different, though, is:

  • it is packaged into an ActiveX DLL.

  • it implements OnStartPage() and OneEndPage(), which are methods that are called by IIS.

OnStartPage() is called when the component is created and can be used to get references to objects that exist within the context of an ASP page. These objects can then be used for many purposes, such as writing HTML to the response that is sent to the client. This can be seen in the help() method.

OnEndPage() is called when the component is destroyed, which will happen when the current ASP page is completely processed. This method can be used to free resources, release object references (i.e., set them = Nothing), and do other clean up.

Additionally, you should notice that some of the members of the FileIO component are private and some are public. (There are no protected members, since VB does not support inheritance.) As you would expect, only the public members are visible to users of the component. Remember, though, that a good practice in OOP is to make all member variables private and implement public accessor methods for them (e.g., getFoo() and setFoo()).

Tips

Here are two tips that might be helpful when you build some of your own Active Server components:

  1. When you deploy your components to another server, you will have to copy the DLL to the IIS components directory (which is usually c:winntsystem32inetsrv???) and register the components. You register them with the registration utility, regsvr32.exe (e.g. regsvr32 ASCExample.dll). You don’t have to do this when developing, because VB registers the DLL for you at the end of compilation.

  2. When you use an Active Server component, IIS locks the DLL (don’t ask me why) and keeps it locked even after the ASP page is processed. If you then try to update the DLL, you will get an “access denied” error. The only way to release the lock is to stop the Web server. So, during development you may be stopping and re-starting the Web server a lot.

Summary

Building Active Server components is not hard, but it does require a high-end development platform that includes Visual Basic 5.0 Enterprise Edition and Internet Information Server running on Windows NT 4.0. In general, construction involves creating classes, implementing a couple of IIS-specific methods, and compiling them into an ActiveX DLL. Additionally, when you have built your components, using them is easier than building them and requires just a few lines of server-side scripting in a Web page.

Related links

Thornton Rose currently works in the MIS department at AGCO Corporation, where he is a software developer and the Webmaster for the intranet. He can be reached via e-mail at [email protected].

ASCExample Tester


Class FileIO

Usage:

set o = Server.CreateObject(“ASCExample.FileIO”)

Methods:

  • help() – shows help
  • fileSize(strName) – returns size of named file
  • fileExists(strName) – returns True if named file exists
  • deleteFile(strName) – deletes named file
  • appendLine(strName, strLine) – appends line to file

strLogFileName = c:temptest.log
fileExists() => True
fileSize() => 17 bytes

File deleted.
fileExists() => False [end]


‘ Class FileIO

Option Explicit

Private objApplication As Application ‘ Reference to Application object
Private objResponse As Response ‘ Reference to Response object

‘ OnStartPage():

‘ This procedure is called when an instance of this class is created in an
‘ Active Server Page. It gets references to the Application and Response
‘ objects that are being used in the ASP page that created the instance of
‘ this class.

Public Sub OnStartPage(objScriptingContext As ScriptingContext)
Set objApplication = objScriptingContext.Application()
Set objResponse = objScriptingContext.Response()
End Sub

‘ OnEndPage():

‘ This procedure is called when an instance of this class is destroyed in
‘ an Active Server Page. It is used to clean up object references.

Public Sub OnEndPage()
Set objApplication = Nothing
Set objResponse = Nothing
End Sub

‘ help():

‘ Writes help information to the response stream.

Public Sub help()
objResponse.Write “

Class FileIO

” & vbCrLf
objResponse.Write “Usage:” & vbCrLf
objResponse.Write “

set o = Server.CreateObject(“”ASCExample.FileIO””)” & vbCrLf
objResponse.Write “

Methods:” & vbCrLf
objResponse.Write “

    ” & vbCrLf
    objResponse.Write “

  • help() – shows help” & vbCrLf
    objResponse.Write “

  • fileSize(strName) – returns size of named file” & vbCrLf
    objResponse.Write “

  • fileExists(strName) – returns True if named file exists” & vbCrLf
    objResponse.Write “

  • deleteFile(strName) – deletes named file” & vbCrLf
    objResponse.Write “

  • appendLine(strName, strLine) – appends line to file” & vbCrLf
    objResponse.Write “

” & vbCrLf
End Sub

‘ fileSize():

‘ Returns the size of the file with the given name.

Public Function fileSize(strFileName) As Long
fileSize = FileLen(strFileName)
End Function

‘ fileExists():

‘ Returns True if the specified file exists. Note that the given file
‘ specification can contain wildcard characters.

Public Function fileExists(strFileSpec) As Boolean
fileExists = (Dir(strFileSpec) <> “”)
End Function

‘ deleteFile():

‘ Deletes files that match the given file specification, which can include
‘ wildcard characters.

Public Sub deleteFile(strFileSpec)
Call Kill(strFileSpec)
End Sub

‘ appendLine():

‘ Appends a line to a text file (which is handy when working with log
‘ files.)

Public Sub appendLine(strFileName, strLine)
Dim objFileSystem As FileSystemObject
Dim objStream As TextStream

Set objFileSystem = New FileSystemObject
Set objStream = objFileSystem.OpenTextFile(strFileName, 8, True, False)
objStream.WriteLine strLine
objStream.Close
End Sub

‘ End Class FileIO
[end]
–>

  • Save everything and compile. That’s it.

    Testing

    Testing your Active Server component is easy (although debugging can get
    tedious). A few lines of VBScript or JavaScript in an ASP page is all
    that is required. Here’s the test script:

    </p> <p><html><br /> <head><br /> <title>ASCExample Tester</title><br /> </head></p> <h3>ASCExample Tester</h3> <p> <% ' Create a FileIO object. set objFileIO = Server.CreateObject("ASCExample.FileIO") %></p> <hr> <p> <% ' Get some help from the FileIO object. objFileIO.help %></p> <hr> <p> <% ' Create a file for testing. strLogFileName = "c:temptest.log" objFileIO.appendLine strLogFileName, "This is line 1." %><br /> <!-- Get the file info. --><br /> strLogFileName = <%= strLogFileName %><br /> fileExists() => <%= CStr(objFileIO.fileExists(strLogFileName)) %><br /> fileSize() => <%= objFileIO.fileSize(strLogFileName) %> bytes<br /> <% ' Delete the file. objFileIO.deleteFile(strLogFileName) %></p> <p> <!-- Check the file existance again. --><br /> File deleted.<br /> fileExists() => <%= CStr(objFileIO.fileExists(strLogFileName)) %><br /> </html><br /> [end]</p> <p></PRE></p> <p><!--end_section--></P></p> </div></div><div class="td_block_wrap tdb_single_post_share tdi_69 td-pb-border-top td_block_template_1" data-td-block-uid="tdi_69" > <style> /* inline tdc_css att */ .tdi_69{ padding-top:30px !important; padding-bottom:20px !important; } </style> <style> /* custom css */ .tdb_single_post_share{ margin-bottom: 23px; }.tdb-share-classic{ position: relative; height: 20px; margin-bottom: 15px; }.tdi_69 .td-social-network .td-social-but-icon .td-social-copy_url-check, .tdi_69 .td-social-network .td-social-but-icon i{ color: #ffffff; }.tdi_69 .td-ps-bg .td-social-network div, .tdi_69 .td-ps-icon-bg .td-social-network .td-social-but-icon, .tdi_69 .td-ps-dark-bg .td-social-network div{ background-color: #333b7e; }.tdi_69 .td-ps-icon-arrow .td-social-but-icon:after{ border-left-color: #333b7e; }.tdi_69 .td-ps-border-colored .td-social-but-text{ border-color: #333b7e; } </style><div id="tdi_69" class="td-post-sharing tdb-block td-ps-bg td-ps-padding td-ps-bar td-post-sharing-style6 "> <style> .td-post-sharing-classic { position: relative; height: 20px; } .td-post-sharing { margin-left: -3px; margin-right: -3px; font-family: 'Open Sans', 'Open Sans Regular', sans-serif; z-index: 2; white-space: nowrap; opacity: 0; } .td-post-sharing.td-social-show-all { white-space: normal; } .td-js-loaded .td-post-sharing { -webkit-transition: opacity 0.3s; transition: opacity 0.3s; opacity: 1; } .td-post-sharing-classic + .td-post-sharing { margin-top: 15px; /* responsive portrait phone */ } @media (max-width: 767px) { .td-post-sharing-classic + .td-post-sharing { margin-top: 8px; } } .td-post-sharing-top { margin-bottom: 30px; } @media (max-width: 767px) { .td-post-sharing-top { margin-bottom: 20px; } } .td-post-sharing-bottom { border-style: solid; border-color: #ededed; border-width: 1px 0; padding: 21px 0; margin-bottom: 42px; } .td-post-sharing-bottom .td-post-sharing { margin-bottom: -7px; } .td-post-sharing-visible, .td-social-sharing-hidden { display: inline-block; } .td-social-sharing-hidden ul { display: none; } .td-social-show-all .td-pulldown-filter-list { display: inline-block; } .td-social-network, .td-social-handler { position: relative; display: inline-block; margin: 0 3px 7px; height: 40px; min-width: 40px; font-size: 11px; text-align: center; vertical-align: middle; } .td-ps-notext .td-social-network .td-social-but-icon, .td-ps-notext .td-social-handler .td-social-but-icon { border-top-right-radius: 2px; border-bottom-right-radius: 2px; } .td-social-network { color: #000; overflow: hidden; } .td-social-network .td-social-but-icon { border-top-left-radius: 2px; border-bottom-left-radius: 2px; } .td-social-network .td-social-but-text { border-top-right-radius: 2px; border-bottom-right-radius: 2px; } .td-social-network:hover { opacity: 0.8 !important; } .td-social-handler { color: #444; border: 1px solid #e9e9e9; border-radius: 2px; } .td-social-handler .td-social-but-text { font-weight: 700; } .td-social-handler .td-social-but-text:before { background-color: #000; opacity: 0.08; } .td-social-share-text { margin-right: 18px; } .td-social-share-text:before, .td-social-share-text:after { content: ''; position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); left: 100%; width: 0; height: 0; border-style: solid; } .td-social-share-text:before { border-width: 9px 0 9px 11px; border-color: transparent transparent transparent #e9e9e9; } .td-social-share-text:after { border-width: 8px 0 8px 10px; border-color: transparent transparent transparent #fff; } .td-social-but-text, .td-social-but-icon { display: inline-block; position: relative; } .td-social-but-icon { padding-left: 13px; padding-right: 13px; line-height: 40px; z-index: 1; } .td-social-but-icon i { position: relative; top: -1px; vertical-align: middle; } .td-social-but-text { margin-left: -6px; padding-left: 12px; padding-right: 17px; line-height: 40px; } .td-social-but-text:before { content: ''; position: absolute; top: 12px; left: 0; width: 1px; height: 16px; background-color: #fff; opacity: 0.2; z-index: 1; } .td-social-handler i, .td-social-facebook i, .td-social-reddit i, .td-social-linkedin i, .td-social-tumblr i, .td-social-stumbleupon i, .td-social-vk i, .td-social-viber i, .td-social-flipboard i { font-size: 14px; } .td-social-telegram i { font-size: 16px; } .td-social-mail i, .td-social-line i, .td-social-print i { font-size: 15px; } .td-social-handler .td-icon-share { top: -1px; left: -1px; } .td-social-twitter .td-icon-twitter { font-size: 12px; } .td-social-pinterest .td-icon-pinterest { font-size: 13px; } .td-social-whatsapp .td-icon-whatsapp { font-size: 18px; } .td-social-reddit .td-social-but-icon { padding-right: 12px; } .td-social-reddit .td-icon-reddit { left: -1px; } .td-social-telegram .td-social-but-icon { padding-right: 12px; } .td-social-telegram .td-icon-telegram { left: -1px; } .td-social-stumbleupon .td-social-but-icon { padding-right: 11px; } .td-social-stumbleupon .td-icon-stumbleupon { left: -2px; } .td-social-digg .td-social-but-icon { padding-right: 11px; } .td-social-digg .td-icon-digg { left: -2px; font-size: 17px; } .td-social-vk .td-social-but-icon { padding-right: 11px; } .td-social-vk .td-icon-vk { left: -2px; } .td-social-naver .td-icon-naver { left: -1px; font-size: 16px; } .td-social-copy_url { position: relative; } .td-social-copy_url-check { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: #fff; opacity: 0; pointer-events: none; transition: opacity .2s ease-in-out; z-index: 11; } .td-social-copy_url .td-icon-copy_url { left: -1px; font-size: 17px; } .td-social-copy_url-disabled { pointer-events: none; } .td-social-copy_url-disabled .td-icon-copy_url { opacity: 0; } .td-social-copy_url-copied .td-social-copy_url-check { opacity: 1; } @keyframes social_copy_url_loader { 0% { -webkit-transform: rotate(0); transform: rotate(0) } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg) } } .td-social-expand-tabs i { top: -2px; left: -1px; font-size: 16px; } @media (min-width: 767px) { .td-social-line, .td-social-viber { display: none; } } .td-ps-bg .td-social-network { color: #fff; } .td-ps-bg .td-social-facebook .td-social-but-icon, .td-ps-bg .td-social-facebook .td-social-but-text { background-color: #516eab; } .td-ps-bg .td-social-twitter .td-social-but-icon, .td-ps-bg .td-social-twitter .td-social-but-text { background-color: #29c5f6; } .td-ps-bg .td-social-pinterest .td-social-but-icon, .td-ps-bg .td-social-pinterest .td-social-but-text { background-color: #ca212a; } .td-ps-bg .td-social-whatsapp .td-social-but-icon, .td-ps-bg .td-social-whatsapp .td-social-but-text { background-color: #7bbf6a; } .td-ps-bg .td-social-reddit .td-social-but-icon, .td-ps-bg .td-social-reddit .td-social-but-text { background-color: #f54200; } .td-ps-bg .td-social-mail .td-social-but-icon, .td-ps-bg .td-social-digg .td-social-but-icon, .td-ps-bg .td-social-copy_url .td-social-but-icon, .td-ps-bg .td-social-mail .td-social-but-text, .td-ps-bg .td-social-digg .td-social-but-text, .td-ps-bg .td-social-copy_url .td-social-but-text { background-color: #000; } .td-ps-bg .td-social-print .td-social-but-icon, .td-ps-bg .td-social-print .td-social-but-text { background-color: #333; } .td-ps-bg .td-social-linkedin .td-social-but-icon, .td-ps-bg .td-social-linkedin .td-social-but-text { background-color: #0266a0; } .td-ps-bg .td-social-tumblr .td-social-but-icon, .td-ps-bg .td-social-tumblr .td-social-but-text { background-color: #3e5a70; } .td-ps-bg .td-social-telegram .td-social-but-icon, .td-ps-bg .td-social-telegram .td-social-but-text { background-color: #179cde; } .td-ps-bg .td-social-stumbleupon .td-social-but-icon, .td-ps-bg .td-social-stumbleupon .td-social-but-text { background-color: #ee4813; } .td-ps-bg .td-social-vk .td-social-but-icon, .td-ps-bg .td-social-vk .td-social-but-text { background-color: #4c75a3; } .td-ps-bg .td-social-line .td-social-but-icon, .td-ps-bg .td-social-line .td-social-but-text { background-color: #00b900; } .td-ps-bg .td-social-viber .td-social-but-icon, .td-ps-bg .td-social-viber .td-social-but-text { background-color: #5d54a4; } .td-ps-bg .td-social-naver .td-social-but-icon, .td-ps-bg .td-social-naver .td-social-but-text { background-color: #3ec729; } .td-ps-bg .td-social-flipboard .td-social-but-icon, .td-ps-bg .td-social-flipboard .td-social-but-text { background-color: #f42827; } .td-ps-dark-bg .td-social-network { color: #fff; } .td-ps-dark-bg .td-social-network .td-social-but-icon, .td-ps-dark-bg .td-social-network .td-social-but-text { background-color: #000; } .td-ps-border .td-social-network .td-social-but-icon, .td-ps-border .td-social-network .td-social-but-text { line-height: 38px; border-width: 1px; border-style: solid; } .td-ps-border .td-social-network .td-social-but-text { border-left-width: 0; } .td-ps-border .td-social-network .td-social-but-text:before { background-color: #000; opacity: 0.08; } .td-ps-border.td-ps-padding .td-social-network .td-social-but-icon { border-right-width: 0; } .td-ps-border.td-ps-padding .td-social-network.td-social-expand-tabs .td-social-but-icon { border-right-width: 1px; } .td-ps-border-grey .td-social-but-icon, .td-ps-border-grey .td-social-but-text { border-color: #e9e9e9; } .td-ps-border-colored .td-social-facebook .td-social-but-icon, .td-ps-border-colored .td-social-facebook .td-social-but-text { border-color: #516eab; } .td-ps-border-colored .td-social-twitter .td-social-but-icon, .td-ps-border-colored .td-social-twitter .td-social-but-text { border-color: #29c5f6; } .td-ps-border-colored .td-social-pinterest .td-social-but-icon, .td-ps-border-colored .td-social-pinterest .td-social-but-text { border-color: #ca212a; } .td-ps-border-colored .td-social-whatsapp .td-social-but-icon, .td-ps-border-colored .td-social-whatsapp .td-social-but-text { border-color: #7bbf6a; } .td-ps-border-colored .td-social-reddit .td-social-but-icon, .td-ps-border-colored .td-social-reddit .td-social-but-text { border-color: #f54200; } .td-ps-border-colored .td-social-mail .td-social-but-icon, .td-ps-border-colored .td-social-digg .td-social-but-icon, .td-ps-border-colored .td-social-copy_url .td-social-but-icon, .td-ps-border-colored .td-social-mail .td-social-but-text, .td-ps-border-colored .td-social-digg .td-social-but-text, .td-ps-border-colored .td-social-copy_url .td-social-but-text { border-color: #000; } .td-ps-border-colored .td-social-print .td-social-but-icon, .td-ps-border-colored .td-social-print .td-social-but-text { border-color: #333; } .td-ps-border-colored .td-social-linkedin .td-social-but-icon, .td-ps-border-colored .td-social-linkedin .td-social-but-text { border-color: #0266a0; } .td-ps-border-colored .td-social-tumblr .td-social-but-icon, .td-ps-border-colored .td-social-tumblr .td-social-but-text { border-color: #3e5a70; } .td-ps-border-colored .td-social-telegram .td-social-but-icon, .td-ps-border-colored .td-social-telegram .td-social-but-text { border-color: #179cde; } .td-ps-border-colored .td-social-stumbleupon .td-social-but-icon, .td-ps-border-colored .td-social-stumbleupon .td-social-but-text { border-color: #ee4813; } .td-ps-border-colored .td-social-vk .td-social-but-icon, .td-ps-border-colored .td-social-vk .td-social-but-text { border-color: #4c75a3; } .td-ps-border-colored .td-social-line .td-social-but-icon, .td-ps-border-colored .td-social-line .td-social-but-text { border-color: #00b900; } .td-ps-border-colored .td-social-viber .td-social-but-icon, .td-ps-border-colored .td-social-viber .td-social-but-text { border-color: #5d54a4; } .td-ps-border-colored .td-social-naver .td-social-but-icon, .td-ps-border-colored .td-social-naver .td-social-but-text { border-color: #3ec729; } .td-ps-border-colored .td-social-flipboard .td-social-but-icon, .td-ps-border-colored .td-social-flipboard .td-social-but-text { border-color: #f42827; } .td-ps-icon-bg .td-social-but-icon { height: 100%; border-color: transparent !important; } .td-ps-icon-bg .td-social-network .td-social-but-icon { color: #fff; } .td-ps-icon-bg .td-social-facebook .td-social-but-icon { background-color: #516eab; } .td-ps-icon-bg .td-social-twitter .td-social-but-icon { background-color: #29c5f6; } .td-ps-icon-bg .td-social-pinterest .td-social-but-icon { background-color: #ca212a; } .td-ps-icon-bg .td-social-whatsapp .td-social-but-icon { background-color: #7bbf6a; } .td-ps-icon-bg .td-social-reddit .td-social-but-icon { background-color: #f54200; } .td-ps-icon-bg .td-social-mail .td-social-but-icon, .td-ps-icon-bg .td-social-digg .td-social-but-icon, .td-ps-icon-bg .td-social-copy_url .td-social-but-icon { background-color: #000; } .td-ps-icon-bg .td-social-print .td-social-but-icon { background-color: #333; } .td-ps-icon-bg .td-social-linkedin .td-social-but-icon { background-color: #0266a0; } .td-ps-icon-bg .td-social-tumblr .td-social-but-icon { background-color: #3e5a70; } .td-ps-icon-bg .td-social-telegram .td-social-but-icon { background-color: #179cde; } .td-ps-icon-bg .td-social-stumbleupon .td-social-but-icon { background-color: #ee4813; } .td-ps-icon-bg .td-social-vk .td-social-but-icon { background-color: #4c75a3; } .td-ps-icon-bg .td-social-line .td-social-but-icon { background-color: #00b900; } .td-ps-icon-bg .td-social-viber .td-social-but-icon { background-color: #5d54a4; } .td-ps-icon-bg .td-social-naver .td-social-but-icon { background-color: #3ec729; } .td-ps-icon-bg .td-social-flipboard .td-social-but-icon { background-color: #f42827; } .td-ps-icon-bg .td-social-but-text { margin-left: -3px; } .td-ps-icon-bg .td-social-network .td-social-but-text:before { display: none; } .td-ps-icon-arrow .td-social-network .td-social-but-icon:after { content: ''; position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); left: calc(100% + 1px); width: 0; height: 0; border-style: solid; border-width: 9px 0 9px 11px; border-color: transparent transparent transparent #000; } .td-ps-icon-arrow .td-social-network .td-social-but-text { padding-left: 20px; } .td-ps-icon-arrow .td-social-network .td-social-but-text:before { display: none; } .td-ps-icon-arrow.td-ps-padding .td-social-network .td-social-but-icon:after { left: 100%; } .td-ps-icon-arrow .td-social-facebook .td-social-but-icon:after { border-left-color: #516eab; } .td-ps-icon-arrow .td-social-twitter .td-social-but-icon:after { border-left-color: #29c5f6; } .td-ps-icon-arrow .td-social-pinterest .td-social-but-icon:after { border-left-color: #ca212a; } .td-ps-icon-arrow .td-social-whatsapp .td-social-but-icon:after { border-left-color: #7bbf6a; } .td-ps-icon-arrow .td-social-reddit .td-social-but-icon:after { border-left-color: #f54200; } .td-ps-icon-arrow .td-social-mail .td-social-but-icon:after, .td-ps-icon-arrow .td-social-digg .td-social-but-icon:after, .td-ps-icon-arrow .td-social-copy_url .td-social-but-icon:after { border-left-color: #000; } .td-ps-icon-arrow .td-social-print .td-social-but-icon:after { border-left-color: #333; } .td-ps-icon-arrow .td-social-linkedin .td-social-but-icon:after { border-left-color: #0266a0; } .td-ps-icon-arrow .td-social-tumblr .td-social-but-icon:after { border-left-color: #3e5a70; } .td-ps-icon-arrow .td-social-telegram .td-social-but-icon:after { border-left-color: #179cde; } .td-ps-icon-arrow .td-social-stumbleupon .td-social-but-icon:after { border-left-color: #ee4813; } .td-ps-icon-arrow .td-social-vk .td-social-but-icon:after { border-left-color: #4c75a3; } .td-ps-icon-arrow .td-social-line .td-social-but-icon:after { border-left-color: #00b900; } .td-ps-icon-arrow .td-social-viber .td-social-but-icon:after { border-left-color: #5d54a4; } .td-ps-icon-arrow .td-social-naver .td-social-but-icon:after { border-left-color: #3ec729; } .td-ps-icon-arrow .td-social-flipboard .td-social-but-icon:after { border-left-color: #f42827; } .td-ps-icon-arrow .td-social-expand-tabs .td-social-but-icon:after { display: none; } .td-ps-icon-color .td-social-facebook .td-social-but-icon { color: #516eab; } .td-ps-icon-color .td-social-twitter .td-social-but-icon { color: #29c5f6; } .td-ps-icon-color .td-social-pinterest .td-social-but-icon { color: #ca212a; } .td-ps-icon-color .td-social-whatsapp .td-social-but-icon { color: #7bbf6a; } .td-ps-icon-color .td-social-reddit .td-social-but-icon { color: #f54200; } .td-ps-icon-color .td-social-mail .td-social-but-icon, .td-ps-icon-color .td-social-digg .td-social-but-icon, .td-ps-icon-color .td-social-copy_url .td-social-but-icon, .td-ps-icon-color .td-social-copy_url-check { color: #000; } .td-ps-icon-color .td-social-print .td-social-but-icon { color: #333; } .td-ps-icon-color .td-social-linkedin .td-social-but-icon { color: #0266a0; } .td-ps-icon-color .td-social-tumblr .td-social-but-icon { color: #3e5a70; } .td-ps-icon-color .td-social-telegram .td-social-but-icon { color: #179cde; } .td-ps-icon-color .td-social-stumbleupon .td-social-but-icon { color: #ee4813; } .td-ps-icon-color .td-social-vk .td-social-but-icon { color: #4c75a3; } .td-ps-icon-color .td-social-line .td-social-but-icon { color: #00b900; } .td-ps-icon-color .td-social-viber .td-social-but-icon { color: #5d54a4; } .td-ps-icon-color .td-social-naver .td-social-but-icon { color: #3ec729; } .td-ps-icon-color .td-social-flipboard .td-social-but-icon { color: #f42827; } .td-ps-text-color .td-social-but-text { font-weight: 700; } .td-ps-text-color .td-social-facebook .td-social-but-text { color: #516eab; } .td-ps-text-color .td-social-twitter .td-social-but-text { color: #29c5f6; } .td-ps-text-color .td-social-pinterest .td-social-but-text { color: #ca212a; } .td-ps-text-color .td-social-whatsapp .td-social-but-text { color: #7bbf6a; } .td-ps-text-color .td-social-reddit .td-social-but-text { color: #f54200; } .td-ps-text-color .td-social-mail .td-social-but-text, .td-ps-text-color .td-social-digg .td-social-but-text, .td-ps-text-color .td-social-copy_url .td-social-but-text { color: #000; } .td-ps-text-color .td-social-print .td-social-but-text { color: #333; } .td-ps-text-color .td-social-linkedin .td-social-but-text { color: #0266a0; } .td-ps-text-color .td-social-tumblr .td-social-but-text { color: #3e5a70; } .td-ps-text-color .td-social-telegram .td-social-but-text { color: #179cde; } .td-ps-text-color .td-social-stumbleupon .td-social-but-text { color: #ee4813; } .td-ps-text-color .td-social-vk .td-social-but-text { color: #4c75a3; } .td-ps-text-color .td-social-line .td-social-but-text { color: #00b900; } .td-ps-text-color .td-social-viber .td-social-but-text { color: #5d54a4; } .td-ps-text-color .td-social-naver .td-social-but-text { color: #3ec729; } .td-ps-text-color .td-social-flipboard .td-social-but-text { color: #f42827; } .td-ps-text-color .td-social-expand-tabs .td-social-but-text { color: #b1b1b1; } .td-ps-notext .td-social-but-icon { width: 40px; } .td-ps-notext .td-social-network .td-social-but-text { display: none; } .td-ps-padding .td-social-network .td-social-but-icon { padding-left: 17px; padding-right: 17px; } .td-ps-padding .td-social-handler .td-social-but-icon { width: 40px; } .td-ps-padding .td-social-reddit .td-social-but-icon, .td-ps-padding .td-social-telegram .td-social-but-icon { padding-right: 16px; } .td-ps-padding .td-social-stumbleupon .td-social-but-icon, .td-ps-padding .td-social-digg .td-social-but-icon, .td-ps-padding .td-social-expand-tabs .td-social-but-icon { padding-right: 13px; } .td-ps-padding .td-social-vk .td-social-but-icon { padding-right: 14px; } .td-ps-padding .td-social-expand-tabs .td-social-but-icon { padding-left: 13px; } .td-ps-rounded .td-social-network .td-social-but-icon { border-top-left-radius: 100px; border-bottom-left-radius: 100px; } .td-ps-rounded .td-social-network .td-social-but-text { border-top-right-radius: 100px; border-bottom-right-radius: 100px; } .td-ps-rounded.td-ps-notext .td-social-network .td-social-but-icon { border-top-right-radius: 100px; border-bottom-right-radius: 100px; } .td-ps-rounded .td-social-expand-tabs { border-radius: 100px; } .td-ps-bar .td-social-network .td-social-but-icon, .td-ps-bar .td-social-network .td-social-but-text { -webkit-box-shadow: inset 0px -3px 0px 0px rgba(0, 0, 0, 0.31); box-shadow: inset 0px -3px 0px 0px rgba(0, 0, 0, 0.31); } .td-ps-bar .td-social-mail .td-social-but-icon, .td-ps-bar .td-social-digg .td-social-but-icon, .td-ps-bar .td-social-copy_url .td-social-but-icon, .td-ps-bar .td-social-mail .td-social-but-text, .td-ps-bar .td-social-digg .td-social-but-text, .td-ps-bar .td-social-copy_url .td-social-but-text { -webkit-box-shadow: inset 0px -3px 0px 0px rgba(255, 255, 255, 0.28); box-shadow: inset 0px -3px 0px 0px rgba(255, 255, 255, 0.28); } .td-ps-bar .td-social-print .td-social-but-icon, .td-ps-bar .td-social-print .td-social-but-text { -webkit-box-shadow: inset 0px -3px 0px 0px rgba(255, 255, 255, 0.2); box-shadow: inset 0px -3px 0px 0px rgba(255, 255, 255, 0.2); } .td-ps-big .td-social-but-icon { display: block; line-height: 60px; } .td-ps-big .td-social-but-icon .td-icon-share { width: auto; } .td-ps-big .td-social-handler .td-social-but-text:before { display: none; } .td-ps-big .td-social-share-text .td-social-but-icon { width: 90px; } .td-ps-big .td-social-expand-tabs .td-social-but-icon { width: 60px; } @media (max-width: 767px) { .td-ps-big .td-social-share-text { display: none; } } .td-ps-big .td-social-facebook i, .td-ps-big .td-social-reddit i, .td-ps-big .td-social-mail i, .td-ps-big .td-social-linkedin i, .td-ps-big .td-social-tumblr i, .td-ps-big .td-social-stumbleupon i { margin-top: -2px; } .td-ps-big .td-social-facebook i, .td-ps-big .td-social-reddit i, .td-ps-big .td-social-linkedin i, .td-ps-big .td-social-tumblr i, .td-ps-big .td-social-stumbleupon i, .td-ps-big .td-social-vk i, .td-ps-big .td-social-viber i, .td-ps-big .td-social-fliboard i, .td-ps-big .td-social-share-text i { font-size: 22px; } .td-ps-big .td-social-telegram i { font-size: 24px; } .td-ps-big .td-social-mail i, .td-ps-big .td-social-line i, .td-ps-big .td-social-print i { font-size: 23px; } .td-ps-big .td-social-twitter i, .td-ps-big .td-social-expand-tabs i { font-size: 20px; } .td-ps-big .td-social-whatsapp i, .td-ps-big .td-social-naver i, .td-ps-big .td-social-flipboard i { font-size: 26px; } .td-ps-big .td-social-pinterest .td-icon-pinterest { font-size: 21px; } .td-ps-big .td-social-telegram .td-icon-telegram { left: 1px; } .td-ps-big .td-social-stumbleupon .td-icon-stumbleupon { left: -2px; } .td-ps-big .td-social-digg .td-icon-digg { left: -1px; font-size: 25px; } .td-ps-big .td-social-vk .td-icon-vk { left: -1px; } .td-ps-big .td-social-naver .td-icon-naver { left: 0; } .td-ps-big .td-social-copy_url .td-icon-copy_url { left: 0; font-size: 25px; } .td-ps-big .td-social-copy_url-check { font-size: 18px; } .td-ps-big .td-social-but-text { margin-left: 0; padding-top: 0; padding-left: 17px; } .td-ps-big.td-ps-notext .td-social-network, .td-ps-big.td-ps-notext .td-social-handler { height: 60px; } .td-ps-big.td-ps-notext .td-social-network { width: 60px; } .td-ps-big.td-ps-notext .td-social-network .td-social-but-icon { width: 60px; } .td-ps-big.td-ps-notext .td-social-share-text .td-social-but-icon { line-height: 40px; } .td-ps-big.td-ps-notext .td-social-share-text .td-social-but-text { display: block; line-height: 1; } .td-ps-big.td-ps-padding .td-social-network, .td-ps-big.td-ps-padding .td-social-handler { height: 90px; font-size: 13px; } .td-ps-big.td-ps-padding .td-social-network { min-width: 60px; } .td-ps-big.td-ps-padding .td-social-but-icon { border-bottom-left-radius: 0; border-top-right-radius: 2px; } .td-ps-big.td-ps-padding.td-ps-bar .td-social-but-icon { -webkit-box-shadow: none; box-shadow: none; } .td-ps-big.td-ps-padding .td-social-but-text { display: block; padding-bottom: 17px; line-height: 1; border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-left-radius: 2px; } .td-ps-big.td-ps-padding .td-social-but-text:before { display: none; } .td-ps-big.td-ps-padding .td-social-expand-tabs i { line-height: 90px; } .td-ps-nogap { margin-left: 0; margin-right: 0; } .td-ps-nogap .td-social-network, .td-ps-nogap .td-social-handler { margin-left: 0; margin-right: 0; border-radius: 0; } .td-ps-nogap .td-social-network .td-social-but-icon, .td-ps-nogap .td-social-network .td-social-but-text { border-radius: 0; } .td-ps-nogap .td-social-expand-tabs { border-radius: 0; } .td-post-sharing-style7 .td-social-network .td-social-but-icon { height: 100%; } .td-post-sharing-style7 .td-social-network .td-social-but-icon:before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.31); } .td-post-sharing-style7 .td-social-network .td-social-but-text { padding-left: 17px; } .td-post-sharing-style7 .td-social-network .td-social-but-text:before { display: none; } .td-post-sharing-style7 .td-social-mail .td-social-but-icon:before, .td-post-sharing-style7 .td-social-digg .td-social-but-icon:before, .td-post-sharing-style7 .td-social-copy_url .td-social-but-icon:before { background-color: rgba(255, 255, 255, 0.2); } .td-post-sharing-style7 .td-social-print .td-social-but-icon:before { background-color: rgba(255, 255, 255, 0.1); } @media (max-width: 767px) { .td-post-sharing-style1 .td-social-share-text .td-social-but-text, .td-post-sharing-style3 .td-social-share-text .td-social-but-text, .td-post-sharing-style5 .td-social-share-text .td-social-but-text, .td-post-sharing-style14 .td-social-share-text .td-social-but-text, .td-post-sharing-style16 .td-social-share-text .td-social-but-text { display: none !important; } } @media (max-width: 767px) { .td-post-sharing-style2 .td-social-share-text, .td-post-sharing-style4 .td-social-share-text, .td-post-sharing-style6 .td-social-share-text, .td-post-sharing-style7 .td-social-share-text, .td-post-sharing-style15 .td-social-share-text, .td-post-sharing-style17 .td-social-share-text, .td-post-sharing-style18 .td-social-share-text, .td-post-sharing-style19 .td-social-share-text, .td-post-sharing-style20 .td-social-share-text { display: none !important; } } </style> <div class="td-post-sharing-visible"><div class="td-social-sharing-button td-social-sharing-button-js td-social-handler td-social-share-text"> <div class="td-social-but-icon"><i class="td-icon-share"></i></div> <div class="td-social-but-text">Share</div> </div><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-facebook" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.developer.com%2Flanguages%2Fwriting-active-server-components-in-visual-basic%2F" title="Facebook" ><div class="td-social-but-icon"><i class="td-icon-facebook"></i></div><div class="td-social-but-text">Facebook</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-twitter" href="https://twitter.com/intent/tweet?text=Writing+Active+Server+components+in+Visual+Basic&url=https%3A%2F%2Fwww.developer.com%2Flanguages%2Fwriting-active-server-components-in-visual-basic%2F&via=Developer.com" title="Twitter" ><div class="td-social-but-icon"><i class="td-icon-twitter"></i></div><div class="td-social-but-text">Twitter</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.developer.com/languages/writing-active-server-components-in-visual-basic/&title=Writing+Active+Server+components+in+Visual+Basic" title="Linkedin" ><div class="td-social-but-icon"><i class="td-icon-linkedin"></i></div><div class="td-social-but-text">Linkedin</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-mail" href="mailto:?subject=Writing Active Server components in Visual Basic&body=https://www.developer.com/languages/writing-active-server-components-in-visual-basic/" title="Email" ><div class="td-social-but-icon"><i class="td-icon-mail"></i></div><div class="td-social-but-text">Email</div></a></div><div class="td-social-sharing-hidden"><ul class="td-pulldown-filter-list"></ul><a class="td-social-sharing-button td-social-handler td-social-expand-tabs" href="#" data-block-uid="tdi_69" title="More"> <div class="td-social-but-icon"><i class="td-icon-plus td-social-expand-tabs-icon"></i></div> </a></div></div></div></div></div><div class="vc_column tdi_71 wpb_column vc_column_container tdc-column td-pb-span4 td-is-sticky"> <style scoped> /* custom css */ .tdi_71{ vertical-align: baseline; }.tdi_71 > .wpb_wrapper, .tdi_71 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_71 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_71 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_71 > .wpb_wrapper{ width: auto; height: auto; } /* inline tdc_css att */ .tdi_71{ margin-top:46px !important; width:34% !important; } /* phone */ @media (max-width: 767px) { .tdi_71{ width:100% !important; } } </style><div class="wpb_wrapper"><div class="td_block_wrap td_flex_block_1 tdi_72 td-h-effect-up-shadow td-pb-border-top _ntv_latest_posts_widget td_block_template_10 td_flex_block" data-td-block-uid="tdi_72" > <style> .td_block_template_10.widget > ul > li { margin-left: 0 !important; } .td_block_template_10 .td-block-title { font-size: 17px; font-weight: 500; margin-top: -10px; margin-bottom: 24px; line-height: 37px; padding: 0; position: relative; text-align: left; } .td_block_template_10 .td-block-title:before { content: ''; width: 100%; height: 3px; position: absolute; top: 100%; left: 0; background-color: #f5f5f5; } .td_block_template_10 .td-block-title > * { color: #000; } .td_block_template_10 .td-subcat-filter { line-height: 37px; display: table; } .td_block_template_10 .td-subcat-dropdown { line-height: 1; position: static; } .td_block_template_10 .td-subcat-dropdown .td-subcat-more { margin-bottom: 0 !important; } .td_block_template_10 .td-subcat-dropdown ul:after { height: 3px !important; } .td_block_template_10 .td-related-title { margin-top: 0 !important; } .td_block_template_10 .td-related-title a { margin-right: 20px; } @media (max-width: 767px) { .td_block_template_10 .td-related-title a { font-size: 15px; } } .td_block_template_10 .td-related-title .td-cur-simple-item { color: #4db2ec; } .tdi_72 .td-block-title > * { color: #333b7e !important; } .tdi_72 .td-block-title:before { background-color: #929bc0 !important; } /* inline tdc_css att */ .tdi_72{ position:relative; } </style> <style> /* custom css */ .tdi_72 .td-image-wrap{ padding-bottom: 70%; }.tdi_72 .entry-thumb{ background-position: center 50%; }.tdi_72 .td-image-container{ flex: 0 0 28%; width: 28%; display: block; order: 0; }.ie10 .tdi_72 .td-image-container, .ie11 .tdi_72 .td-image-container{ flex: 0 0 auto; }.tdi_72 .td-module-container{ flex-direction: row; border-color: #eaeaea !important; }.ie10 .tdi_72 .td-module-meta-info, .ie11 .tdi_72 .td-module-meta-info{ flex: 1; }.tdi_72 .td-module-meta-info{ padding: 0px; display: flex; flex-direction: column; justify-content: center; border-color: #eaeaea; }.tdi_72 .td-category-pos-above .td-post-category{ align-self: flex-start; }.tdi_72 .td_module_wrap{ padding-left: 20px; padding-right: 20px; padding-bottom: 21px; margin-bottom: 21px; }.tdi_72 .td_block_inner{ margin-left: -20px; margin-right: -20px; }.tdi_72 .td-module-container:before{ bottom: -21px; border-width: 0 0 1px 0; border-style: solid; border-color: #eaeaea; border-color: #eaeaea; }.tdi_72 .entry-thumb, .tdi_72 .entry-thumb:before, .tdi_72 .entry-thumb:after{ border-radius: 8px; }.tdi_72 .td-post-vid-time{ display: block; }.tdi_72 .td-author-photo .avatar{ width: 20px; height: 20px; margin-right: 6px; border-radius: 50%; }.tdi_72 .td-excerpt{ display: none; column-count: 1; column-gap: 48px; }.tdi_72 .td-audio-player{ opacity: 1; visibility: visible; height: auto; font-size: 13px; }.tdi_72 .td-read-more{ display: none; }.tdi_72 .td-author-date{ display: none; }.tdi_72 .td-post-author-name{ display: none; }.tdi_72 .td-post-date, .tdi_72 .td-post-author-name span{ display: none; }.tdi_72 .entry-review-stars{ display: none; }.tdi_72 .td-icon-star, .tdi_72 .td-icon-star-empty, .tdi_72 .td-icon-star-half{ font-size: 15px; }.tdi_72 .td-module-comments{ display: none; }.tdi_72 .td_module_wrap:nth-last-child(1){ margin-bottom: 0; padding-bottom: 0; }.tdi_72 .td_module_wrap:nth-last-child(1) .td-module-container:before{ display: none; }.tdi_72 .td-post-category{ background-color: #ffffff; color: #d78521; border-width: 1px; border-style: solid; border-color: #aaa; border-color: #d78521; font-size:14px !important;font-weight:600 !important;text-transform:capitalize !important; }.tdi_72 .td-post-category:hover{ background-color: #ffffff !important; color: #929bc0; border-color: #929bc0; }.tdi_72 .td-module-title a{ color: #333b7e; }.tdi_72 .td_module_wrap:hover .td-module-title a{ color: #929bc0 !important; }.tdi_72 .entry-title{ margin: 0 0 12px; font-size:18px !important;line-height:1.2 !important;font-weight:600 !important; }.tdi_72 .td-block-title a, .tdi_72 .td-block-title span{ font-size:32px !important; }.tdi_72 .td-editor-date, .tdi_72 .td-editor-date .td-post-author-name a, .tdi_72 .td-editor-date .entry-date, .tdi_72 .td-module-comments a{ font-size:14px !important;font-weight:600 !important;text-transform:uppercase !important; }html:not([class*='ie']) .tdi_72 .td-module-container:hover .entry-thumb:before{ opacity: 0; } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ .tdi_72 .td_module_wrap{ padding-bottom: 17px; margin-bottom: 17px; padding-bottom: 17px !important; margin-bottom: 17px !important; }.tdi_72 .td-module-container:before{ bottom: -17px; }.tdi_72 .td_module_wrap:nth-last-child(1){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_72 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_72 .td_module_wrap:nth-last-child(1) .td-module-container:before{ display: none !important; }.tdi_72 .entry-title{ margin: 0 0 8px; font-size:16px !important;line-height:1.1 !important;font-weight:600 !important; }.tdi_72 .td-post-category{ font-size:10px !important;font-weight:600 !important;text-transform:capitalize !important; }.tdi_72 .td-editor-date, .tdi_72 .td-editor-date .td-post-author-name a, .tdi_72 .td-editor-date .entry-date, .tdi_72 .td-module-comments a{ font-size:10px !important;font-weight:600 !important;text-transform:uppercase !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_72 .td_module_wrap{ padding-bottom: 12px; margin-bottom: 12px; padding-bottom: 12px !important; margin-bottom: 12px !important; }.tdi_72 .td-module-container:before{ bottom: -12px; }.tdi_72 .td_module_wrap:nth-last-child(1){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_72 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_72 .td_module_wrap:nth-last-child(1) .td-module-container:before{ display: none !important; }.tdi_72 .entry-title{ margin: 0 0 6px; font-size:14px !important;line-height:1.1 !important;font-weight:600 !important; }.tdi_72 .td-post-category{ font-size:9px !important;font-weight:600 !important;text-transform:capitalize !important; }.tdi_72 .td-editor-date, .tdi_72 .td-editor-date .td-post-author-name a, .tdi_72 .td-editor-date .entry-date, .tdi_72 .td-module-comments a{ font-size:9px !important;font-weight:600 !important;text-transform:uppercase !important; } } /* phone */ @media (max-width: 767px){ .tdi_72 .td_module_wrap{ padding-bottom: 16px; margin-bottom: 16px; padding-bottom: 16px !important; margin-bottom: 16px !important; }.tdi_72 .td-module-container:before{ bottom: -16px; }.tdi_72 .td_module_wrap:nth-last-child(1){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_72 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_72 .td_module_wrap:nth-last-child(1) .td-module-container:before{ display: none !important; }.tdi_72 .entry-title{ margin: 0 0 8px; font-size:16px !important;line-height:1.1 !important;font-weight:600 !important; }.tdi_72 .td-post-category{ font-size:10px !important;font-weight:600 !important;text-transform:capitalize !important; }.tdi_72 .td-editor-date, .tdi_72 .td-editor-date .td-post-author-name a, .tdi_72 .td-editor-date .entry-date, .tdi_72 .td-module-comments a{ font-size:10px !important;font-weight:600 !important;text-transform:uppercase !important; } } </style> <div class="tdi_72_rand_style td-element-style"><style> .tdi_72_rand_style{ background-color:#ffffff !important; } </style></div><script>var block_tdi_72 = new tdBlock(); block_tdi_72.id = "tdi_72"; block_tdi_72.atts = '{"modules_on_row":"","modules_gap":"","image_width":"28","image_floated":"float_left","meta_padding":"0","image_radius":"8","image_height":"70","meta_info_horiz":"","modules_category":"","show_excerpt":"none","show_btn":"none","show_com":"none","show_author":"none","show_cat":"","image_size":"td_324x400","block_template_id":"td_block_template_10","f_title_font_line_height":"eyJhbGwiOiIxLjIiLCJwb3J0cmFpdCI6IjEuMSIsImxhbmRzY2FwZSI6IjEuMSIsInBob25lIjoiMS4xIn0=","f_title_font_family":"tk_1","f_title_font_size":"eyJhbGwiOiIxOCIsImxhbmRzY2FwZSI6IjE2IiwicG9ydHJhaXQiOiIxNCIsInBob25lIjoiMTYifQ==","f_title_font_weight":"eyJhbGwiOiI2MDAiLCJwb3J0cmFpdCI6IjYwMCJ9","f_cat_font_size":"eyJhbGwiOiIxNCIsImxhbmRzY2FwZSI6IjEwIiwicG9ydHJhaXQiOiI5IiwicGhvbmUiOiIxMCJ9","f_cat_font_weight":"600","f_cat_font_family":"tk_2","f_cat_font_transform":"capitalize","f_meta_font_size":"eyJhbGwiOiIxNCIsImxhbmRzY2FwZSI6IjEwIiwicG9ydHJhaXQiOiI5IiwicGhvbmUiOiIxMCJ9","f_meta_font_transform":"uppercase","f_meta_font_family":"tk_2","all_modules_space":"eyJhbGwiOiI0MiIsImxhbmRzY2FwZSI6IjM0IiwicG9ydHJhaXQiOiIyNCIsInBob25lIjoiMzIifQ==","meta_info_align":"center","art_title":"eyJhbGwiOiIwIDAgMTJweCIsImxhbmRzY2FwZSI6IjAgMCA4cHgiLCJwb3J0cmFpdCI6IjAgMCA2cHgiLCJwaG9uZSI6IjAgMCA4cHgifQ==","cat_txt":"#d78521","f_meta_font_weight":"600","tdc_css":"eyJhbGwiOnsiYmFja2dyb3VuZC1jb2xvciI6IiNmZmZmZmYiLCJkaXNwbGF5IjoiIn0sInBob25lIjp7ImRpc3BsYXkiOiIifSwicGhvbmVfbWF4X3dpZHRoIjo3Njd9","hide_image":"yes","modules_divider":"solid","title_txt":"#333b7e","custom_title":"Latest Posts","related_articles_posts_limit":"5","f_ex_font_family":"tk_2","f_btn_font_family":"tk_1","title_txt_hover":"#929bc0","cat_txt_hover":"#929bc0","header_text_color":"#333b7e","border_color":"#929bc0","f_header_font_size":"32","f_header_font_family":"tk_1","f_ajax_font_family":"tk_1","f_more_font_family":"tk_1","cat_border":"#d78521","cat_border_hover":"#929bc0","modules_cat_border":"1px","show_date":"none","show_review":"none","cat_bg":"#ffffff","cat_bg_hover":"#ffffff","h_effect":"up-shadow","el_class":"_ntv_latest_posts_widget","block_type":"td_flex_block_1","separator":"","custom_url":"","title_tag":"","mc1_tl":"","mc1_title_tag":"","mc1_el":"","post_ids":"-53142","category_id":"","category_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","sort":"","limit":"5","offset":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","td_ajax_filter_type":"","td_ajax_filter_ids":"","td_filter_default_txt":"All","td_ajax_preloading":"","container_width":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_border_radius":"","modules_divider_color":"#eaeaea","image_alignment":"50","video_icon":"","video_popup":"yes","video_rec":"","spot_header":"","video_rec_title":"","video_rec_color":"","video_rec_disable":"","autoplay_vid":"yes","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","video_title_color":"","video_title_color_h":"","video_bg":"","video_overlay":"","vid_t_color":"","vid_t_bg_color":"","f_vid_title_font_header":"","f_vid_title_font_title":"Video pop-up article title","f_vid_title_font_settings":"","f_vid_title_font_family":"","f_vid_title_font_size":"","f_vid_title_font_line_height":"","f_vid_title_font_style":"","f_vid_title_font_weight":"","f_vid_title_font_transform":"","f_vid_title_font_spacing":"","f_vid_title_":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","meta_width":"","meta_margin":"","meta_space":"","art_btn":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","meta_info_border_radius":"","modules_category_margin":"","modules_category_padding":"","modules_category_radius":"0","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","review_space":"","review_size":"2.5","review_distance":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","excerpt_inline":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1.5","btn_title":"","btn_margin":"","btn_padding":"","btn_border_width":"","btn_radius":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_transform":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_style":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","f_btn_font_title":"Article read more button","f_btn_font_settings":"","f_btn_font_size":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_font_weight":"","f_btn_font_transform":"","f_btn_font_spacing":"","f_btn_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","all_underline_height":"","all_underline_color":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","btn_bg":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border":"","btn_border_hover":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","ajax_pagination":"","ajax_pagination_infinite_stop":"","css":"","td_column_number":1,"header_color":"","color_preset":"","border_top":"","class":"tdi_72","tdc_css_class":"tdi_72","tdc_css_class_style":"tdi_72_rand_style"}'; block_tdi_72.td_column_number = "1"; block_tdi_72.block_type = "td_flex_block_1"; block_tdi_72.post_count = "5"; block_tdi_72.found_posts = "10191"; block_tdi_72.header_color = ""; block_tdi_72.ajax_pagination_infinite_stop = ""; block_tdi_72.max_num_pages = "2039"; tdBlocksArray.push(block_tdi_72); </script><div class="td-block-title-wrap"><h4 class="td-block-title"><span class="td-pulldown-size">Latest Posts</span></h4></div><div id=tdi_72 class="td_block_inner td-mc1-wrap"> <div class="td_module_flex td_module_flex_1 td_module_wrap td-animation-stack "> <div class="td-module-container td-category-pos-"> <div class="td-module-meta-info"> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/javascript/testing-function-arguments-jasmine-avascript/" rel="bookmark" title="Testing Function Arguments with Jasmine and JavaScript">Testing Function Arguments with Jasmine and JavaScript</a></h3> <div class="td-editor-date"> <a href="https://www.developer.com/languages/javascript/" class="td-post-category">JavaScript</a> <span class="td-author-date"> </span> </div> </div> </div> </div> <div class="td_module_flex td_module_flex_1 td_module_wrap td-animation-stack "> <div class="td-module-container td-category-pos-"> <div class="td-module-meta-info"> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/javascript/javascript-online-courses/" rel="bookmark" title="Best Online Courses to Learn JavaScript">Best Online Courses to Learn JavaScript</a></h3> <div class="td-editor-date"> <a href="https://www.developer.com/languages/javascript/" class="td-post-category">JavaScript</a> <span class="td-author-date"> </span> </div> </div> </div> </div> <div class="td_module_flex td_module_flex_1 td_module_wrap td-animation-stack "> <div class="td-module-container td-category-pos-"> <div class="td-module-meta-info"> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/viper-golang/" rel="bookmark" title="Introduction to Viper in Go and Golang">Introduction to Viper in Go and Golang</a></h3> <div class="td-editor-date"> <a href="https://www.developer.com/languages/" class="td-post-category">Languages</a> <span class="td-author-date"> </span> </div> </div> </div> </div> <div class="td_module_flex td_module_flex_1 td_module_wrap td-animation-stack "> <div class="td-module-container td-category-pos-"> <div class="td-module-meta-info"> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/mobile/tools-mobile-development/" rel="bookmark" title="Top Tools for Mobile Developers">Top Tools for Mobile Developers</a></h3> <div class="td-editor-date"> <a href="https://www.developer.com/mobile/" class="td-post-category">Mobile</a> <span class="td-author-date"> </span> </div> </div> </div> </div> <div class="td_module_flex td_module_flex_1 td_module_wrap td-animation-stack "> <div class="td-module-container td-category-pos-"> <div class="td-module-meta-info"> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/collaboration-tools-game-developers/" rel="bookmark" title="Collaboration Tools for Game Developers">Collaboration Tools for Game Developers</a></h3> <div class="td-editor-date"> <a href="https://www.developer.com/languages/" class="td-post-category">Languages</a> <span class="td-author-date"> </span> </div> </div> </div> </div> </div></div><div class="wpb_wrapper td_block_empty_space td_block_wrap vc_empty_space tdi_74 " style="height: 32px"></div><div class="td-block td-a-rec td-a-rec-id-custom-spot tdi_75 td_block_template_1"> <style> /* inline tdc_css att */ .tdi_75{ margin-bottom:0px !important; padding-bottom:0px !important; border-style:solid !important; border-color:#888888 !important; border-width: 0px 0px 0px 0px !important; } </style> <style> /* custom css */ .tdi_75.td-a-rec{ text-align: center; }.tdi_75 .td-element-style{ z-index: -1; } </style><div class="devco-sticky-rail devco-target" id="devco-2058747278" data-advadstrackid="58116" data-advadstrackbid="1"><!-- Start: GAM Ad Slot Render | Developer Sticky Rail --> <div id="sticky-rail" style="max-width: 300px; min-width: 160px; width: auto; text-align:center; min-height: 250px; max-height: 600px; height: auto; border:0px solid #efefef;"> <script> window.googletag = window.googletag || { cmd: [] }; window.googletag.cmd.push(function() { googletag.display("sticky-rail"); }); </script> </div> <!-- End: GAM Ad Slot Render | Developer Sticky Rail --></div></div><div class="wpb_wrapper td_block_empty_space td_block_wrap vc_empty_space tdi_77 " style="height: 32px"></div></div></div></div></div><div id="tdi_78" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_79 wpb_row td-pb-row tdc-element-style" > <style scoped> /* custom css */ .tdi_79, .tdi_79 .tdc-columns{ min-height: 0; }.tdi_79, .tdi_79 .tdc-columns{ display: block; }.tdi_79 .tdc-columns{ width: 100%; } /* inline tdc_css att */ .tdi_79{ margin-top:30px !important; margin-bottom:-116px !important; padding-top:50px !important; padding-bottom:135px !important; position:relative; } .tdi_79 .td_block_wrap{ text-align:left } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px) { .tdi_79{ margin-bottom:-109px !important; padding-top:85px !important; padding-bottom:120px !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_79{ margin-bottom:-90px !important; padding-top:65px !important; padding-bottom:90px !important; } } /* phone */ @media (max-width: 767px) { .tdi_79{ padding-top:60px !important; padding-bottom:124px !important; } } </style> <div class="tdi_78_rand_style td-element-style" ><style> .tdi_78_rand_style{ background-color:#333b7e !important; } </style></div><div class="vc_column tdi_81 wpb_column vc_column_container tdc-column td-pb-span12"> <style scoped> /* custom css */ .tdi_81{ vertical-align: baseline; }.tdi_81 > .wpb_wrapper, .tdi_81 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_81 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_81 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_81 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="tdm_block td_block_wrap tdm_block_column_title tdi_82 tdm-content-horiz-left td-pb-border-top td_block_template_1" data-td-block-uid="tdi_82" > <style> /* inline tdc_css att */ .tdi_82{ margin-bottom:0px !important; } </style> <style> /* custom css */ .tdm_block_column_title{ margin-bottom: 0; display: inline-block; width: 100%; } </style><div class="td-block-row"><div class="td-block-span12 tdm-col"> <style> body .tdi_83 .tdm-title{ color: #ffffff; }.tdi_83 .tdm-title{ font-family:Montserrat !important;font-size:36px !important;line-height:1 !important;font-weight:500 !important; } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ .tdi_83 .tdm-title{ font-family:Montserrat !important;font-size:32px !important;line-height:1 !important;font-weight:500 !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_83 .tdm-title{ font-family:Montserrat !important;font-size:28px !important;line-height:1 !important;font-weight:500 !important; } } /* phone */ @media (max-width: 767px){ .tdi_83 .tdm-title{ font-family:Montserrat !important;font-size:30px !important;line-height:1 !important;font-weight:500 !important; } } </style><div class="tds-title tds-title1 td-fix-index tdi_83"><h3 class="tdm-title tdm-title-md">Related Stories</h3></div></div></div></div></div></div></div></div><div id="tdi_84" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_85 wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_85, .tdi_85 .tdc-columns{ min-height: 0; }.tdi_85, .tdi_85 .tdc-columns{ display: block; }.tdi_85 .tdc-columns{ width: 100%; } /* inline tdc_css att */ .tdi_85{ margin-bottom:60px !important; } .tdi_85 .td_block_wrap{ text-align:left } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_85{ margin-bottom:90px !important; padding-right:14px !important; padding-left:14px !important; } } /* phone */ @media (max-width: 767px) { .tdi_85{ margin-bottom:80px !important; padding-right:0px !important; padding-left:0px !important; } } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px) { .tdi_85{ margin-bottom:100px !important; } } </style><div class="vc_column tdi_87 wpb_column vc_column_container tdc-column td-pb-span12"> <style scoped> /* custom css */ .tdi_87{ vertical-align: baseline; }.tdi_87 > .wpb_wrapper, .tdi_87 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_87 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_87 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_87 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="td_block_wrap tdb_single_related tdi_88 td-h-effect-up-shadow td_with_ajax_pagination td-pb-border-top td_block_template_1 tdb-single-related-posts" data-td-block-uid="tdi_88" > <style> /* inline tdc_css att */ .tdi_88{ margin-bottom:0px !important; } </style> <style> /* custom css */ .tdb-single-related-posts{ display: inline-block; width: 100%; padding-bottom: 0; overflow: visible; }.tdb-single-related-posts .tdb-block-inner:after, .tdb-single-related-posts .tdb-block-inner .td_module_wrap:after{ content: ''; display: table; clear: both; }.tdb-single-related-posts .td-module-container{ display: flex; flex-direction: column; position: relative; }.tdb-single-related-posts .td-module-container:before{ content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 1px; }.tdb-single-related-posts .td-image-wrap{ display: block; position: relative; padding-bottom: 70%; }.tdb-single-related-posts .td-image-container{ position: relative; flex: 0 0 100%; width: 100%; height: 100%; }.tdb-single-related-posts .td-module-thumb{ margin-bottom: 0; }.tdb-single-related-posts .td-module-meta-info{ padding: 7px 0 0 0; margin-bottom: 0; z-index: 1; border: 0 solid #eaeaea; }.tdb-single-related-posts .tdb-author-photo{ display: inline-block; }.tdb-single-related-posts .tdb-author-photo, .tdb-single-related-posts .tdb-author-photo img{ vertical-align: middle; }.tdb-single-related-posts .td-post-author-name, .tdb-single-related-posts .td-post-date, .tdb-single-related-posts .td-module-comments{ vertical-align: text-top; }.tdb-single-related-posts .entry-review-stars{ margin-left: 6px; vertical-align: text-bottom; }.tdb-single-related-posts .td-author-photo{ display: inline-block; vertical-align: middle; }.tdb-single-related-posts .td-thumb-css{ width: 100%; height: 100%; position: absolute; background-size: cover; background-position: center center; }.tdb-single-related-posts .td-category-pos-image .td-post-category, .tdb-single-related-posts .td-post-vid-time{ position: absolute; z-index: 2; bottom: 0; }.tdb-single-related-posts .td-category-pos-image .td-post-category{ left: 0; }.tdb-single-related-posts .td-post-vid-time{ right: 0; background-color: #000; padding: 3px 6px 4px; font-family: 'Open Sans', 'Open Sans Regular', sans-serif; font-size: 10px; font-weight: 600; line-height: 1; color: #fff; }.tdb-single-related-posts .td-module-title{ font-family: 'Roboto', sans-serif; font-weight: 500; font-size: 13px; line-height: 20px; margin: 0; }.tdb-single-related-posts .td-excerpt{ margin: 20px 0 0; line-height: 21px; }.tdb-single-related-posts .td-read-more, .tdb-single-related-posts .td-next-prev-wrap{ margin: 20px 0 0; }.tdb-single-related-posts div.tdb-block-inner:after{ content: '' !important; padding: 0; border: none; }.tdb-single-related-posts .td-next-prev-wrap a{ width: auto; height: auto; min-width: 25px; min-height: 25px; }.single-tdb_templates .tdb-single-related-posts .td-next-prev-wrap a:active{ pointer-events: none; }.tdb-dummy-data{ position: absolute; top: 50%; left: 50%; transform: translate(-50%); padding: 8px 40px 9px; background: rgba(0, 0, 0, 0.35); color: #fff; z-index: 100; opacity: 0; -webkit-transition: opacity 0.2s; transition: opacity 0.2s; }.tdc-element:hover .tdb-dummy-data{ opacity: 1; }.tdi_88 .td-image-wrap{ padding-bottom: 80%; }.tdi_88 .entry-thumb{ background-position: center 50%; }.tdi_88 .td-module-container{ flex-direction: column; padding: 0px 0px 24px 0px; border-width: 1px; border-style: solid; border-color: #000; border-color: #e6e6e6; background-color: #f6f6f6; flex-grow: 1; }.tdi_88 .td-image-container{ display: block; order: 0; flex: 0 0 0; }.tdi_88 .td-module-meta-info{ padding: 26px 22px; border-color: #eaeaea; }.tdi_88 .td_module_wrap{ width: 33.33333333%; float: left; padding-left: 12px; padding-right: 12px; padding-bottom: 12px; margin-bottom: 12px; display: flex; }.tdi_88 .tdb-block-inner{ margin-left: -12px; margin-right: -12px; }.tdi_88 .td-module-container:before{ bottom: -12px; border-color: #eaeaea; }.tdi_88 .td-post-vid-time{ display: block; }.tdi_88 .td-post-category{ margin: 0px 0px 24px 0px; display: inline-block; background-color: #f6f6f6; color: #d78521; border-width: 1px; border-color: #aaa; border-style: solid; border-color: #d78521; font-size:14px !important;font-weight:600 !important;text-transform:capitalize !important;letter-spacing:0.8px !important; }.tdi_88 .td-author-photo .avatar{ width: 20px; height: 20px; margin-right: 6px; border-radius: 50%; }.tdi_88 .td-excerpt{ display: none; column-count: 1; column-gap: 48px; }.tdi_88 .td-audio-player{ opacity: 0; visibility: hidden; height: 0; font-size: 13px; }.tdi_88 .td-read-more{ display: none; }.tdi_88 .td-post-date, .tdi_88 .td-post-author-name span{ display: inline-block; color: #969696; }.tdi_88 .td-module-comments{ display: none; }.tdi_88 .td_module_wrap:nth-child(3n+1){ clear: both; }.tdi_88 .td_module_wrap:nth-last-child(-n+3){ margin-bottom: 0; padding-bottom: 0; }.tdi_88 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{ display: none; }.tdi_88 .td-post-category:hover{ background-color: #f6f6f6 !important; color: #929bc0; border-color: #929bc0; }.tdi_88 .td-module-title a{ color: #333b7e; }.tdi_88 .td_module_wrap:hover .td-module-title a{ color: #929bc0 !important; }.tdi_88 .td-post-author-name a{ color: #969696; }.tdi_88 .td-post-author-name:hover a{ color: #333b7e; }.tdi_88.td_with_ajax_pagination .td-next-prev-wrap a{ color: #9c0004; background-color: #9c0004; border-color: #9c0004; border-color: #9c0004; font-size: 20px; }.tdi_88.td_with_ajax_pagination .td-next-prev-wrap .td-next-prev-icon-svg svg, .tdi_88.td_with_ajax_pagination .td-next-prev-wrap .td-next-prev-icon-svg svg *{ fill: #9c0004; }.tdi_88.td_with_ajax_pagination .td-next-prev-wrap a:hover{ color: rgba(33,29,29,0.58); background-color: rgba(33,29,29,0.58); border-color: rgba(33,29,29,0.58); border-color: rgba(33,29,29,0.58); }.tdi_88.td_with_ajax_pagination .td-next-prev-wrap a:hover .td-next-prev-icon-svg svg, .tdi_88.td_with_ajax_pagination .td-next-prev-wrap a:hover .td-next-prev-icon-svg svg *{ fill: rgba(33,29,29,0.58); }.tdi_88 .entry-title{ margin: 0 0 11px; font-size:18px !important;line-height:1.2 !important;font-weight:800 !important; }.tdi_88.td_with_ajax_pagination .td-next-prev-wrap .td-next-prev-icon-svg svg{ width: 20px; height: calc( 20px + 1px ); }.tdi_88 .td-editor-date, .tdi_88 .td-editor-date .entry-date, .tdi_88 .td-post-author-name a, .tdi_88 .td-module-comments a{ font-size:14px !important;font-weight:400 !important; }.tdi_88 .td-post-author-name{ font-weight: 400; }.tdi_88 .td_block_inner{ display: flex; flex-wrap: wrap; }html:not([class*='ie']) .tdi_88 .td-module-container:hover .entry-thumb:before{ opacity: 0; }@media (max-width: 767px) { .tdb-single-related-posts .td-module-title { font-size: 17px; line-height: 23px; } } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ .tdi_88 .td-image-wrap{ padding-bottom: 70%; }.tdi_88 .td-module-meta-info{ padding: 22px 18px; }.tdi_88 .td_module_wrap{ padding-left: 11px; padding-right: 11px; padding-bottom: 12px; margin-bottom: 12px; clear: none !important; padding-bottom: 12px !important; margin-bottom: 12px !important; }.tdi_88 .tdb-block-inner{ margin-left: -11px; margin-right: -11px; }.tdi_88 .td-module-container:before{ bottom: -12px; }.tdi_88 .td_module_wrap:nth-child(3n+1){ clear: both !important; }.tdi_88 .td_module_wrap:nth-last-child(-n+3){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_88 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_88 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{ display: none !important; }.tdi_88 .entry-title{ margin: 0 0 10px; font-size:17px !important;line-height:1.2 !important;font-weight:800 !important; }.tdi_88 .td-post-category{ font-size:10px !important;font-weight:600 !important;text-transform:capitalize !important;letter-spacing:0.8px !important; }.tdi_88 .td-editor-date, .tdi_88 .td-editor-date .entry-date, .tdi_88 .td-post-author-name a, .tdi_88 .td-module-comments a{ font-size:11px !important;font-weight:400 !important; }.tdi_88 .td-excerpt{ font-size:1px !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_88 .td-image-wrap{ padding-bottom: 70%; }.tdi_88 .td-module-meta-info{ padding: 22px 18px; }.tdi_88 .td_module_wrap{ padding-left: 10px; padding-right: 10px; padding-bottom: 12px; margin-bottom: 12px; clear: none !important; padding-bottom: 12px !important; margin-bottom: 12px !important; }.tdi_88 .tdb-block-inner{ margin-left: -10px; margin-right: -10px; }.tdi_88 .td-module-container:before{ bottom: -12px; }.tdi_88 .td_module_wrap:nth-child(3n+1){ clear: both !important; }.tdi_88 .td_module_wrap:nth-last-child(-n+3){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_88 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_88 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{ display: none !important; }.tdi_88 .entry-title{ margin: 0 0 10px; font-size:17px !important;line-height:1.2 !important;font-weight:600 !important; }.tdi_88 .td-post-category{ font-size:10px !important;font-weight:600 !important;text-transform:capitalize !important;letter-spacing:0.8px !important; }.tdi_88 .td-editor-date, .tdi_88 .td-editor-date .entry-date, .tdi_88 .td-post-author-name a, .tdi_88 .td-module-comments a{ font-size:11px !important;font-weight:400 !important; } } /* phone */ @media (max-width: 767px){ .tdi_88 .td-module-meta-info{ padding: 22px 18px; }.tdi_88 .td_module_wrap{ width: 100%; float: left; padding-left: 0px; padding-right: 0px; padding-bottom: 12px; margin-bottom: 12px; padding-bottom: 12px !important; margin-bottom: 12px !important; }.tdi_88 .tdb-block-inner{ margin-left: -0px; margin-right: -0px; }.tdi_88 .td-module-container:before{ bottom: -12px; }.tdi_88 .td_module_wrap:nth-last-child(1){ margin-bottom: 0 !important; padding-bottom: 0 !important; }.tdi_88 .td_module_wrap .td-module-container:before{ display: block !important; }.tdi_88 .td_module_wrap:nth-last-child(1) .td-module-container:before{ display: none !important; }.tdi_88 .entry-title{ margin: 0 0 10px; font-size:18px !important;line-height:1.1 !important;font-weight:800 !important; }.tdi_88 .td-post-category{ font-size:10px !important;font-weight:600 !important;text-transform:capitalize !important;letter-spacing:0.8px !important; }.tdi_88 .td-editor-date, .tdi_88 .td-editor-date .entry-date, .tdi_88 .td-post-author-name a, .tdi_88 .td-module-comments a{ font-size:11px !important;font-weight:400 !important; } } </style><script>var block_tdi_88 = new tdBlock(); block_tdi_88.id = "tdi_88"; block_tdi_88.atts = '{"show_author":"","show_com":"none","image_size":"td_485x360","meta_padding":"eyJhbGwiOiIyNnB4IDIycHgiLCJsYW5kc2NhcGUiOiIyMnB4IDE4cHgiLCJwb3J0cmFpdCI6IjIycHggMThweCIsInBob25lIjoiMjJweCAxOHB4In0=","tdc_css":"eyJhbGwiOnsibWFyZ2luLWJvdHRvbSI6IjAiLCJkaXNwbGF5IjoiIn19","image_height":"eyJhbGwiOiI4MCIsInBvcnRyYWl0IjoiNzAiLCJsYW5kc2NhcGUiOiI3MCJ9","show_btn":"none","show_excerpt":"none","modules_category":"above","cat_bg":"#f6f6f6","cat_txt":"#d78521","f_cat_font_family":"tk_1","f_cat_font_size":"eyJsYW5kc2NhcGUiOiIxMCIsInBvcnRyYWl0IjoiMTAiLCJwaG9uZSI6IjEwIiwiYWxsIjoiMTQifQ==","f_cat_font_transform":"capitalize","f_cat_font_weight":"600","f_cat_font_spacing":"0.8","f_title_font_size":"eyJhbGwiOiIxOCIsInBvcnRyYWl0IjoiMTciLCJsYW5kc2NhcGUiOiIxNyJ9","f_title_font_family":"tk_1","f_title_font_weight":"eyJhbGwiOiI4MDAiLCJwb3J0cmFpdCI6IjYwMCJ9","f_meta_font_weight":"400","author_txt":"#969696","f_meta_font_size":"eyJhbGwiOiIxNCIsImxhbmRzY2FwZSI6IjExIiwicG9ydHJhaXQiOiIxMSIsInBob25lIjoiMTEifQ==","date_txt":"#969696","f_meta_font_family":"tk_1","modules_category_margin":"eyJhbGwiOiIwIDAgN3B4IiwibGFuZHNjYXBlIjoiMCAwIDZweCIsInBvcnRyYWl0IjoiMCAwIDZweCIsInBob25lIjoiMCAwIDZweCJ9","art_title":"eyJhbGwiOiIwIDAgMTFweCIsImxhbmRzY2FwZSI6IjAgMCAxMHB4IiwicG9ydHJhaXQiOiIwIDAgMTBweCIsInBob25lIjoiMCAwIDEwcHgifQ==","author_txt_hover":"#333b7e","modules_border_style":"eyJsYW5kc2NhcGUiOiIifQ==","modules_border_size":"eyJhbGwiOiIxIiwicGhvbmUiOiIxIn0=","m_bg":"#f6f6f6","modules_border_color":"#e6e6e6","f_title_font_line_height":"eyJsYW5kc2NhcGUiOiIxLjIiLCJwb3J0cmFpdCI6IjEuMiIsInBob25lIjoiMS4xIiwiYWxsIjoiMS4yIn0=","f_ex_font_size":"eyJsYW5kc2NhcGUiOiIxIn0=","all_modules_space":"24","modules_on_row":"eyJhbGwiOiIzMy4zMzMzMzMzMyUiLCJwaG9uZSI6IjEwMCUiLCJsYW5kc2NhcGUiOiIzMy4zMzMzMzMzMyUiLCJwb3J0cmFpdCI6IjMzLjMzMzMzMzMzJSJ9","modules_gap":"eyJhbGwiOiIyNCIsImxhbmRzY2FwZSI6IjIyIiwicG9ydHJhaXQiOiIyMCIsInBob25lIjoiMCJ9","limit":"3","title_txt":"#333b7e","category_id":"","custom_title":"","related_articles_posts_limit":"3","f_header_font_family":"tk_1","f_ajax_font_family":"tk_1","f_more_font_family":"tk_1","f_ex_font_family":"tk_2","f_btn_font_family":"tk_1","prev_tdicon":"tdc-font-fa tdc-font-fa-chevron-left","next_tdicon":"tdc-font-fa tdc-font-fa-chevron-right","pag_icons_size":"20","hide_image":"yes","m_padding":"0px 0px 24px 0px","show_audio":"none","related_articles_type":"","cat_txt_hover":"#929bc0","title_txt_hover":"#929bc0","nextprev_icon":"#9c0004","nextprev_icon_h":"rgba(33,29,29,0.58)","nextprev_bg":"#9c0004","nextprev_bg_h":"rgba(33,29,29,0.58)","nextprev_border":"#9c0004","nextprev_border_h":"rgba(33,29,29,0.58)","all_underline_color":"#929bc0","cat_bg_hover":"#f6f6f6","cat_border":"#d78521","cat_border_hover":"#929bc0","modules_category_spacing":"0px 0px 24px 0px","modules_cat_border":"1","h_effect":"up-shadow","offset":"","live_filter":"cur_post_same_categories","ajax_pagination":"next_prev","td_ajax_filter_type":"td_custom_related","live_filter_cur_post_id":53142,"sample_posts_data":false,"block_type":"tdb_single_related","separator":"","block_template_id":"","title_tag":"","mc1_tl":"","mc1_title_tag":"","mc1_el":"","related_articles_posts_offset":"","nextprev":"","container_width":"","modules_divider":"","divider_on":"","modules_divider_color":"#eaeaea","shadow_shadow_header":"","shadow_shadow_title":"Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","image_alignment":"50","image_width":"","image_floated":"no_float","image_radius":"","video_icon":"","video_popup":"yes","video_rec":"","spot_header":"","video_rec_title":"- Advertisement -","video_rec_color":"","video_rec_disable":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","video_title_color":"","video_title_color_h":"","video_bg":"","video_overlay":"","vid_t_color":"","vid_t_bg_color":"","f_vid_title_font_header":"","f_vid_title_font_title":"Video pop-up article title","f_vid_title_font_settings":"","f_vid_title_font_family":"","f_vid_title_font_size":"","f_vid_title_font_line_height":"","f_vid_title_font_style":"","f_vid_title_font_weight":"","f_vid_title_font_transform":"","f_vid_title_font_spacing":"","f_vid_title_":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","meta_info_align":"","meta_info_horiz":"content-horiz-left","meta_width":"","meta_margin":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","art_audio":"","art_audio_size":"1.5","art_btn":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","modules_category_padding":"","modules_category_radius":"0","show_cat":"inline-block","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_date":"inline-block","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","excerpt_middle":"","excerpt_inline":"","hide_audio":"","meta_space":"","btn_title":"","btn_margin":"","btn_padding":"","btn_border_width":"","btn_radius":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_size":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_transform":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_style":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","f_btn_font_title":"Article read more button","f_btn_font_settings":"","f_btn_font_size":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_font_weight":"","f_btn_font_transform":"","f_btn_font_spacing":"","f_btn_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","color_overlay":"","all_underline_height":"","meta_bg":"","ex_txt":"","com_bg":"","com_txt":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","btn_bg":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border":"","btn_border_hover":"","el_class":"","live_filter_cur_post_author":"888","td_column_number":3,"header_color":"","ajax_pagination_infinite_stop":"","td_ajax_preloading":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","border_top":"","css":"","class":"tdi_88","tdc_css_class":"tdi_88","tdc_css_class_style":"tdi_88_rand_style"}'; block_tdi_88.td_column_number = "3"; block_tdi_88.block_type = "tdb_single_related"; block_tdi_88.post_count = "3"; block_tdi_88.found_posts = "928"; block_tdi_88.header_color = ""; block_tdi_88.ajax_pagination_infinite_stop = ""; block_tdi_88.max_num_pages = "310"; tdBlocksArray.push(block_tdi_88); </script><div id=tdi_88 class="td_block_inner tdb-block-inner td-fix-index"> <div class="tdb_module_related td_module_wrap td-animation-stack"> <div class="td-module-container td-category-pos-above"> <div class="td-module-meta-info"> <a href="https://www.developer.com/languages/" class="td-post-category">Languages</a> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/viper-golang/" rel="bookmark" title="Introduction to Viper in Go and Golang">Introduction to Viper in Go and Golang</a></h3> <div class="td-editor-date"> <span class="td-author-date"> <span class="td-post-author-name"><a href="https://www.developer.com/author/manoj-debnath/">Manoj Debnath</a> <span>-</span> </span> <span class="td-post-date"><time class="entry-date updated td-module-date" datetime="2022-09-22T20:48:03+00:00" >September 22, 2022</time></span> </span> </div> </div> </div> </div> <div class="tdb_module_related td_module_wrap td-animation-stack"> <div class="td-module-container td-category-pos-above"> <div class="td-module-meta-info"> <a href="https://www.developer.com/languages/" class="td-post-category">Languages</a> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/collaboration-tools-game-developers/" rel="bookmark" title="Collaboration Tools for Game Developers">Collaboration Tools for Game Developers</a></h3> <div class="td-editor-date"> <span class="td-author-date"> <span class="td-post-author-name"><a href="https://www.developer.com/author/enrique-corrales/">Enrique Corrales</a> <span>-</span> </span> <span class="td-post-date"><time class="entry-date updated td-module-date" datetime="2022-09-22T16:38:00+00:00" >September 22, 2022</time></span> </span> </div> </div> </div> </div> <div class="tdb_module_related td_module_wrap td-animation-stack"> <div class="td-module-container td-category-pos-above"> <div class="td-module-meta-info"> <a href="https://www.developer.com/languages/" class="td-post-category">Languages</a> <h3 class="entry-title td-module-title"><a href="https://www.developer.com/languages/game-development-courses/" rel="bookmark" title="Online Courses to Learn Game Development">Online Courses to Learn Game Development</a></h3> <div class="td-editor-date"> <span class="td-author-date"> <span class="td-post-author-name"><a href="https://www.developer.com/author/rpayne/">Ronnie Payne</a> <span>-</span> </span> <span class="td-post-date"><time class="entry-date updated td-module-date" datetime="2022-09-13T17:03:55+00:00" >September 13, 2022</time></span> </span> </div> </div> </div> </div> </div></div></div></div></div></div></div></div> <span class="td-page-meta" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Thornton Rose"><meta itemprop="url" content="https://www.developer.com/author/thornton-rose/"></span><meta itemprop="datePublished" content="1998-04-30T07:04:00+00:00"><meta itemprop="dateModified" content="2021-03-25T15:32:10+00:00"><meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://www.developer.com/languages/writing-active-server-components-in-visual-basic/"/><span class="td-page-meta" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span class="td-page-meta" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://devcomprd.wpengine.com/wp-content/uploads/2021/01/Dev_logo_MainLogo-300x68.png"></span><meta itemprop="name" content="Developer.com"></span><meta itemprop="headline" content="Writing Active Server components in Visual Basic"><span class="td-page-meta" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://www.developer.com/wp-content/plugins/td-cloud-library/assets/images/td_meta_replacement.png"><meta itemprop="width" content="1068"><meta itemprop="height" content="580"></span> </article> </div> </div> </div> <!-- #tdb-autoload-article --> <!-- Instagram --> <div class="td-footer-template-wrap" style="position: relative"> <div class="td-footer-wrap "> <div id="tdi_89" class="tdc-zone"><div class="tdc_zone tdi_90 wpb_row td-pb-row tdc-element-style" > <style scoped> /* custom css */ .tdi_90{ min-height: 0; }.tdi_90 > .td-element-style:after{ content: '' !important; width: 100% !important; height: 100% !important; position: absolute !important; top: 0 !important; left: 0 !important; z-index: 0 !important; display: block !important; background-color: #333b7e !important; } </style> <div class="tdi_89_rand_style td-element-style" ></div><div id="tdi_91" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_92 _ntv_footer wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_92, .tdi_92 .tdc-columns{ min-height: 0; }.tdi_92, .tdi_92 .tdc-columns{ display: block; }.tdi_92 .tdc-columns{ width: 100%; }@media (min-width: 768px) { .tdi_92 { margin-left: -15px; margin-right: -15px; } .tdi_92 .tdc-row-video-background-error, .tdi_92 .vc_column { padding-left: 15px; padding-right: 15px; } } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ @media (min-width: 768px) { .tdi_92 { margin-left: -10px; margin-right: -10px; } .tdi_92 .tdc-row-video-background-error, .tdi_92 .vc_column { padding-left: 10px; padding-right: 10px; } } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ @media (min-width: 768px) { .tdi_92 { margin-left: -10px; margin-right: -10px; } .tdi_92 .tdc-row-video-background-error, .tdi_92 .vc_column { padding-left: 10px; padding-right: 10px; } } } /* inline tdc_css att */ .tdi_92{ padding-top:60px !important; } .tdi_92 .td_block_wrap{ text-align:left } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_92{ padding-top:30px !important; padding-bottom:10px !important; } } /* phone */ @media (max-width: 767px) { .tdi_92{ padding-top:60px !important; } } </style><div class="vc_column tdi_94 wpb_column vc_column_container tdc-column td-pb-span6"> <style scoped> /* custom css */ .tdi_94{ vertical-align: baseline; }.tdi_94 > .wpb_wrapper, .tdi_94 > .wpb_wrapper > .tdc-elements{ display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: flex-start; align-items: flex-start; }.tdi_94 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_94 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_94 > .wpb_wrapper{ width: 100%; height: 100%; } /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_94{ justify-content:center !important; text-align:center !important; } } </style><div class="wpb_wrapper"><div class="td_block_wrap tdb_header_logo tdi_95 td-pb-border-top td_block_template_1 tdb-header-align" data-td-block-uid="tdi_95" > <style> /* inline tdc_css att */ .tdi_95{ margin-top:10px !important; margin-bottom:10px !important; } /* phone */ @media (max-width: 767px) { .tdi_95{ margin-left:50px !important; display:inline-block !important; } } </style> <style> /* custom css */ .tdi_95{ display: inline-block; }.tdi_95 .tdb-logo-a, .tdi_95 h1{ flex-direction: row; align-items: center; justify-content: center; }.tdi_95 .tdb-logo-svg-wrap{ display: block; }.tdi_95 .tdb-logo-svg-wrap + .tdb-logo-img-wrap{ display: none; }.tdi_95 .tdb-logo-img{ max-width: 50%; }.tdi_95 .tdb-logo-img-wrap{ display: block; }.tdi_95 .tdb-logo-text-tagline{ margin-top: 2px; margin-left: 0; display: block; }.tdi_95 .tdb-logo-text-title{ display: block; color: #ffffff; font-size:34px !important;font-weight:500 !important;text-transform:uppercase !important;; }.tdi_95 .tdb-logo-text-wrap{ flex-direction: column; align-items: center; }.tdi_95 .tdb-logo-icon{ top: 0px; display: block; } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ .tdi_95 .tdb-logo-text-title{ font-size:32px !important;font-weight:500 !important;text-transform:uppercase !important;; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_95 .tdb-logo-text-title{ font-size:22px !important;font-weight:500 !important;text-transform:uppercase !important;; } } /* phone */ @media (max-width: 767px){ .tdi_95 .tdb-logo-img{ max-width: 80%; } } </style><div class="tdb-block-inner td-fix-index"><a class="tdb-logo-a" href="https://www.developer.com/"><span class="tdb-logo-img-wrap"><img class="tdb-logo-img td-retina-data" data-retina="https://www.developer.com/wp-content/uploads/2021/01/Dev_logo_White_RetinaMobile-Logo-copy.png" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20568%20127'%3E%3C/svg%3E" alt="Developer.com" title="" width="568" height="127" data-lazy-src="https://www.developer.com/wp-content/uploads/2021/01/Dev_logo_White_MainLogo-copy.png" /><noscript><img class="tdb-logo-img td-retina-data" data-retina="https://www.developer.com/wp-content/uploads/2021/01/Dev_logo_White_RetinaMobile-Logo-copy.png" src="https://www.developer.com/wp-content/uploads/2021/01/Dev_logo_White_MainLogo-copy.png" alt="Developer.com" title="" width="568" height="127" /></noscript></span></a></div></div> <!-- ./block --><div class="tdm_block td_block_wrap tdm_block_inline_text tdi_96 tdm-inline-block td-pb-border-top td_block_template_1" data-td-block-uid="tdi_96" > <style> /* inline tdc_css att */ .tdi_96{ width:90% !important; } /* phone */ @media (max-width: 767px) { .tdi_96{ width:100% !important; justify-content:center !important; text-align:center !important; } } </style> <style> /* custom css */ .tdm_block.tdm_block_inline_text{ margin-bottom: 0; vertical-align: top; }.tdm_block.tdm_block_inline_text .tdm-descr{ margin-bottom: 0; -webkit-transform: translateZ(0); transform: translateZ(0); }.tdc-row-content-vert-center .tdm-inline-text-yes{ vertical-align: middle; }.tdc-row-content-vert-bottom .tdm-inline-text-yes{ vertical-align: bottom; }.tdi_96{ text-align: left !important; }.tdi_96 .tdm-descr{ color: #ffffff; font-family:Montserrat !important;font-size:16px !important;line-height:1.4 !important; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_96 .tdm-descr{ font-family:Montserrat !important;font-size:12px !important;line-height:1.4 !important; } } /* phone */ @media (max-width: 767px){ .tdi_96{ text-align: center !important; margin-right: auto; margin-left: auto; } } </style><p class="tdm-descr">Developer.com features tutorials, news, and how-tos focused on topics relevant to software engineers, web developers, programmers, and product managers of development teams. In addition to covering the most popular programming languages today, we publish reviews and round-ups of developer tools that help devs reduce the time and money spent developing, maintaining, and debugging their applications. This includes coverage of software management systems and project management (PM) software - all aimed at helping to shorten the software development lifecycle (SDL).</p></div><div class="tdm_block td_block_wrap tdm_block_socials tdi_97 tdm-inline-block tdm-content-horiz-left td-pb-border-top td_block_template_1" data-td-block-uid="tdi_97" > <style> /* inline tdc_css att */ .tdi_97{ margin-top:10px !important; margin-bottom:20px !important; width:100% !important; } /* phone */ @media (max-width: 767px) { .tdi_97{ margin-right:auto !important; margin-left:auto !important; width:auto !important; } } </style> <style> .tdi_98 .tdm-social-item i{ font-size: 20px; vertical-align: middle; line-height: 36px; }.tdi_98 .tdm-social-item i.td-icon-twitter, .tdi_98 .tdm-social-item i.td-icon-linkedin, .tdi_98 .tdm-social-item i.td-icon-pinterest, .tdi_98 .tdm-social-item i.td-icon-blogger, .tdi_98 .tdm-social-item i.td-icon-vimeo{ font-size: 16px; }.tdi_98 .tdm-social-item{ width: 36px; height: 36px; margin: 5px 10px 5px 0; }.tdi_98 .tdm-social-item-wrap:last-child .tdm-social-item{ margin-right: 0 !important; }.tdi_98 .tdm-social-item i, .tds-team-member2 .tdi_98.tds-social1 .tdm-social-item i{ color: #ffffff; }.tdi_98 .tdm-social-item-wrap:hover i, .tds-team-member2 .tdi_98.tds-social1 .tdm-social-item:hover i{ color: #929bc0; }.tdi_98 .tdm-social-text{ display: none; margin-left: 2px; margin-right: 18px; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_98 .tdm-social-item i{ font-size: 12px; vertical-align: middle; line-height: 21.6px; }.tdi_98 .tdm-social-item i.td-icon-twitter, .tdi_98 .tdm-social-item i.td-icon-linkedin, .tdi_98 .tdm-social-item i.td-icon-pinterest, .tdi_98 .tdm-social-item i.td-icon-blogger, .tdi_98 .tdm-social-item i.td-icon-vimeo{ font-size: 9.6px; }.tdi_98 .tdm-social-item{ width: 21.6px; height: 21.6px; } } </style><div class="tdm-social-wrapper tds-social1 tdi_98"><div class="tdm-social-item-wrap"><a href="https://www.facebook.com/developercomwebsite" title="Facebook" class="tdm-social-item"><i class="td-icon-font td-icon-facebook"></i></a><a href="https://www.facebook.com/developercomwebsite" class="tdm-social-text" >Facebook</a></div><div class="tdm-social-item-wrap"><a href="https://www.linkedin.com/company/developer-com/" title="Linkedin" class="tdm-social-item"><i class="td-icon-font td-icon-linkedin"></i></a><a href="https://www.linkedin.com/company/developer-com/" class="tdm-social-text" >Linkedin</a></div><div class="tdm-social-item-wrap"><a href="https://twitter.com/DeveloperCom" title="Twitter" class="tdm-social-item"><i class="td-icon-font td-icon-twitter"></i></a><a href="https://twitter.com/DeveloperCom" class="tdm-social-text" >Twitter</a></div></div></div></div></div><div class="vc_column tdi_100 wpb_column vc_column_container tdc-column td-pb-span6"> <style scoped> /* custom css */ .tdi_100{ vertical-align: baseline; }.tdi_100 > .wpb_wrapper, .tdi_100 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_100 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_100 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_100 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="vc_row_inner tdi_102 vc_row vc_inner wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_102{ position: relative !important; top: 0; transform: none; -webkit-transform: none; }.tdi_102, .tdi_102 .tdc-inner-columns{ display: block; }.tdi_102 .tdc-inner-columns{ width: 100%; } </style><div class="vc_column_inner tdi_104 wpb_column vc_column_container tdc-inner-column td-pb-span8"> <style scoped> /* custom css */ .tdi_104{ vertical-align: baseline; }.tdi_104 .vc_column-inner > .wpb_wrapper, .tdi_104 .vc_column-inner > .wpb_wrapper .tdc-elements{ display: block; }.tdi_104 .vc_column-inner > .wpb_wrapper .tdc-elements{ width: 100%; } /* phone */ @media (max-width: 767px){ div.tdi_104{ width: 100% !important; } } /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_104{ margin-bottom:0px !important; padding-bottom:0px !important; } } </style><div class="vc_column-inner"><div class="wpb_wrapper"><div class="td_block_wrap td_block_title tdi_105 td-pb-border-top td_block_template_2 td-fix-index" data-td-block-uid="tdi_105" > <style> .td_block_template_2.widget > ul > li { margin-left: 0 !important; } .td_block_template_2 .td-block-title { font-size: 17px; font-weight: 500; margin-top: 0; margin-bottom: 16px; line-height: 31px; text-align: left; } .td_block_template_2 .td-block-title > * { color: #000; } .td_block_template_2 .td-related-title a { padding: 0 20px 0 0; } @media (max-width: 767px) { .td_block_template_2 .td-related-title a { font-size: 15px; } } .td_block_template_2 .td-related-title .td-cur-simple-item { color: #4db2ec; } .td-theme-wrap .tdi_105 .td-block-title > *, .td-theme-wrap .tdi_105 .td-pulldown-filter-link:hover, .td-theme-wrap .tdi_105 .td-subcat-item a:hover, .td-theme-wrap .tdi_105 .td-subcat-item .td-cur-simple-item, .td-theme-wrap .tdi_105 .td-subcat-dropdown:hover .td-subcat-more span, .td-theme-wrap .tdi_105 .td-subcat-dropdown:hover .td-subcat-more i { color: #929bc0; } .td-theme-wrap .tdi_105 .td-subcat-dropdown ul:after { background-color: #929bc0; } .td-theme-wrap .tdi_105 .td_module_wrap:hover .entry-title a, .td-theme-wrap .tdi_105 .td_quote_on_blocks, .td-theme-wrap .tdi_105 .td-opacity-cat .td-post-category:hover, .td-theme-wrap .tdi_105 .td-opacity-read .td-read-more a:hover, .td-theme-wrap .tdi_105 .td-opacity-author .td-post-author-name a:hover, .td-theme-wrap .tdi_105 .td-instagram-user a { color: #929bc0; } .td-theme-wrap .tdi_105 .td-next-prev-wrap a:hover, .td-theme-wrap .tdi_105 .td-load-more-wrap a:hover { background-color: #929bc0; border-color: #929bc0; } .td-theme-wrap .tdi_105 .td-read-more a, .td-theme-wrap .tdi_105 .td-weather-information:before, .td-theme-wrap .tdi_105 .td-weather-week:before, .td-theme-wrap .tdi_105 .td-exchange-header:before, .td-theme-wrap .td-footer-wrapper .tdi_105 .td-post-category, .td-theme-wrap .tdi_105 .td-post-category:hover { background-color: #929bc0; } /* inline tdc_css att */ .tdi_105{ margin-bottom:-5px !important; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_105{ margin-bottom:-15px !important; } } /* phone */ @media (max-width: 767px) { .tdi_105{ width:100% !important; display:inline-block !important; } } </style> <style> /* custom css */ body .tdi_105 .td-block-title a, body .tdi_105 .td-block-title span{ font-family:Montserrat !important;font-size:24px !important;font-weight:600 !important;letter-spacing:1px !important; } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ body .tdi_105 .td-block-title a, body .tdi_105 .td-block-title span{ font-family:Montserrat !important;font-size:19px !important;font-weight:600 !important;letter-spacing:1px !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ body .tdi_105 .td-block-title a, body .tdi_105 .td-block-title span{ font-family:Montserrat !important;font-size:18px !important;font-weight:600 !important;letter-spacing:1px !important; } } /* phone */ @media (max-width: 767px){ body .tdi_105 .td-block-title{ text-align: center; }body .tdi_105.td_block_template_4 .td-block-title > *:before, body .tdi_105.td_block_template_17 .td-block-title:after, body .tdi_105.td_block_template_13 .td-block-subtitle, body .tdi_105.td_block_template_9 .td-block-title:after{ right: 0; left: 0; }body .tdi_105.td_block_template_5 .td-block-title > *{ border-width: 0 0 0 4px; }body .tdi_105.td_block_template_8 .td-block-title > *{ padding-left: 20px; padding-right: 20px; } } </style><div class="td-block-title-wrap"><h4 class="td-block-title"><span class="td-pulldown-size">Advertisers</span></h4></div></div><div class="tdm_block td_block_wrap tdm_block_inline_text tdi_106 tdm-inline-block td-pb-border-top td_block_template_1" data-td-block-uid="tdi_106" > <style> /* inline tdc_css att */ .tdi_106{ margin-bottom:30px !important; width:90% !important; } /* phone */ @media (max-width: 767px) { .tdi_106{ width:100% !important; justify-content:center !important; text-align:center !important; } } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px) { .tdi_106{ width:100% !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_106{ width:100% !important; } } </style> <style> /* custom css */ .tdi_106{ text-align: left !important; }.tdi_106 .tdm-descr{ color: #ffffff; font-family:Montserrat !important;font-size:16px !important;line-height:1.4 !important; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_106 .tdm-descr{ font-family:Montserrat !important;font-size:12px !important;line-height:1.4 !important; } } /* phone */ @media (max-width: 767px){ .tdi_106{ text-align: center !important; margin-right: auto; margin-left: auto; } } </style><p class="tdm-descr">Advertise with TechnologyAdvice on Developer.com and our other developer-focused platforms.</p></div><div class="tdm_block td_block_wrap tdm_block_button tdi_107 tdm-block-button-inline tdm-content-horiz-center td-pb-border-top td_block_template_1" data-td-block-uid="tdi_107" > <style> /* inline tdc_css att */ .tdi_107{ border-color:#cbdd00 !important; border-style:solid !important; border-width:0 !important; } /* phone */ @media (max-width: 767px) { .tdi_107{ width:100% !important; } } </style> <style> /* custom css */ .tdm_block.tdm_block_button{ margin-bottom: 0; }.tdm_block.tdm_block_button .tds-button{ line-height: 0; }.tdm_block.tdm_block_button.tdm-block-button-inline{ display: inline-block; }.tdm_block.tdm_block_button.tdm-block-button-full, .tdm_block.tdm_block_button.tdm-block-button-full .tdm-btn{ display: block; }.tdi_107 .tdm-btn{ height: auto; padding: 10px; } /* phone */ @media (max-width: 767px){ .tdi_107 .tdm-btn{ height: auto; padding: 15px 30px; } } </style> <style> body .tdi_108{ background-color: #929bc0; }.tdi_108 .tdm-btn-text, .tdi_108 i{ color: #ffffff; }.tdi_108 svg{ fill: #ffffff; }.tdi_108 svg *{ fill: inherit; }.tdi_108{ padding: 10px; height: auto; line-height: 1; font-weight:500 !important; }.tdi_108 .tdm-btn-icon:last-child{ margin-left: 10px; }.tdi_108, .tdi_108:before{ border-radius: 15px; } /* phone */ @media (max-width: 767px){ .tdi_108{ padding: 15px 30px; height: auto; line-height: 1; }.tdi_108, .tdi_108:before{ border-radius: 25px; } } </style><div class="tds-button td-fix-index"><a href="https://solutions.technologyadvice.com/advertise-on-developer/?utm_source=developer&amp;utm_medium=portfolio_footer&amp;utm_campaign=advertise_button" class="tds-button1 tdm-btn tdm-btn-lg tdi_108" ><span class="tdm-btn-text">Advertise with Us</span><i class="tdm-btn-icon tdc-font-fa tdc-font-fa-angle-right"></i></a></div></div></div></div></div><div class="vc_column_inner tdi_110 wpb_column vc_column_container tdc-inner-column td-pb-span4"> <style scoped> /* custom css */ .tdi_110{ vertical-align: baseline; }.tdi_110 .vc_column-inner > .wpb_wrapper, .tdi_110 .vc_column-inner > .wpb_wrapper .tdc-elements{ display: block; }.tdi_110 .vc_column-inner > .wpb_wrapper .tdc-elements{ width: 100%; } /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_110{ display:none !important; } } </style><div class="vc_column-inner"><div class="wpb_wrapper"><div class="td_block_wrap td_block_title tdi_111 td-pb-border-top td_block_template_2 td-fix-index" data-td-block-uid="tdi_111" > <style> .td-theme-wrap .tdi_111 .td-block-title > *, .td-theme-wrap .tdi_111 .td-pulldown-filter-link:hover, .td-theme-wrap .tdi_111 .td-subcat-item a:hover, .td-theme-wrap .tdi_111 .td-subcat-item .td-cur-simple-item, .td-theme-wrap .tdi_111 .td-subcat-dropdown:hover .td-subcat-more span, .td-theme-wrap .tdi_111 .td-subcat-dropdown:hover .td-subcat-more i { color: #929bc0; } .td-theme-wrap .tdi_111 .td-subcat-dropdown ul:after { background-color: #929bc0; } .td-theme-wrap .tdi_111 .td_module_wrap:hover .entry-title a, .td-theme-wrap .tdi_111 .td_quote_on_blocks, .td-theme-wrap .tdi_111 .td-opacity-cat .td-post-category:hover, .td-theme-wrap .tdi_111 .td-opacity-read .td-read-more a:hover, .td-theme-wrap .tdi_111 .td-opacity-author .td-post-author-name a:hover, .td-theme-wrap .tdi_111 .td-instagram-user a { color: #929bc0; } .td-theme-wrap .tdi_111 .td-next-prev-wrap a:hover, .td-theme-wrap .tdi_111 .td-load-more-wrap a:hover { background-color: #929bc0; border-color: #929bc0; } .td-theme-wrap .tdi_111 .td-read-more a, .td-theme-wrap .tdi_111 .td-weather-information:before, .td-theme-wrap .tdi_111 .td-weather-week:before, .td-theme-wrap .tdi_111 .td-exchange-header:before, .td-theme-wrap .td-footer-wrapper .tdi_111 .td-post-category, .td-theme-wrap .tdi_111 .td-post-category:hover { background-color: #929bc0; } /* inline tdc_css att */ .tdi_111{ margin-bottom:-5px !important; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px) { .tdi_111{ margin-bottom:-15px !important; } } /* phone */ @media (max-width: 767px) { .tdi_111{ display:inline-block !important; } } </style> <style> /* custom css */ body .tdi_111 .td-block-title a, body .tdi_111 .td-block-title span{ font-family:Montserrat !important;font-size:24px !important;font-weight:600 !important;letter-spacing:1px !important; } /* landscape */ @media (min-width: 1019px) and (max-width: 1140px){ body .tdi_111 .td-block-title a, body .tdi_111 .td-block-title span{ font-family:Montserrat !important;font-size:19px !important;font-weight:600 !important;letter-spacing:1px !important; } } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ body .tdi_111 .td-block-title a, body .tdi_111 .td-block-title span{ font-family:Montserrat !important;font-size:18px !important;font-weight:600 !important;letter-spacing:1px !important; } } </style><div class="td-block-title-wrap"><h4 class="td-block-title"><span class="td-pulldown-size">Menu</span></h4></div></div><div class="td_block_wrap td_block_list_menu tdi_112 td-pb-border-top td_block_template_1 widget" data-td-block-uid="tdi_112" > <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_112{ justify-content:center !important; text-align:center !important; } } </style> <style> /* custom css */ .td_block_list_menu ul{ flex-wrap: wrap; margin-left: 12px; }.td_block_list_menu ul li{ margin-left: 0; }.td_block_list_menu .sub-menu{ padding-left: 22px; }.td_block_list_menu .sub-menu li{ font-size: 13px; }.tdi_112 ul{ margin: 0px; text-align: left; justify-content: flex-start; }.tdi_112 a{ color: #ffffff; }.tdi_112 a:hover{ color: #929bc0; }.tdi_112 .td-block-title a, .tdi_112 .td-block-title span{ font-size:14px !important;font-weight:500 !important; }.tdi_112 li{ font-family:Montserrat !important;font-size:14px !important;line-height:24px !important;font-weight:600 !important;letter-spacing:1px !important; } /* portrait */ @media (min-width: 768px) and (max-width: 1018px){ .tdi_112 li{ font-family:Montserrat !important;font-size:14px !important;line-height:20px !important;font-weight:600 !important;letter-spacing:1px !important; } } </style><div class="td-block-title-wrap"></div><div id=tdi_112 class="td_block_inner td-fix-index"><div class="menu-footer-terms-nav-container"><ul id="menu-footer-terms-nav" class="menu"><li id="menu-item-325" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-325"><a href="https://www.developer.com/privacy-policy/">Privacy Policy</a></li> <li id="menu-item-320" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-320"><a href="https://technologyadvice.com/terms-conditions/">Terms</a></li> <li id="menu-item-321" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-321"><a href="https://technologyadvice.com/about-us/">About</a></li> <li id="menu-item-322" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-322"><a href="https://technologyadvice.com/contact-us/">Contact</a></li> <li id="menu-item-323" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-323"><a href="https://solutions.technologyadvice.com/advertise-on-developer/?utm_source=developer&#038;utm_medium=portfolio_footer&#038;utm_campaign=advertise_contact-us">Advertise</a></li> <li id="menu-item-324" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-324"><a href="https://technologyadvice.com/privacy-policy/ccpa-opt-out-form/">California &#8211; Do Not Sell My Information</a></li> </ul></div></div></div></div></div></div></div></div></div></div></div><div id="tdi_113" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_114 wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_114, .tdi_114 .tdc-columns{ min-height: 0; }.tdi_114, .tdi_114 .tdc-columns{ display: block; }.tdi_114 .tdc-columns{ width: 100%; } </style><div class="vc_column tdi_116 wpb_column vc_column_container tdc-column td-pb-span12"> <style scoped> /* custom css */ .tdi_116{ vertical-align: baseline; }.tdi_116 > .wpb_wrapper, .tdi_116 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_116 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_116 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_116 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_separator td_block_wrap vc_separator tdi_118 td_separator_solid td_separator_center"><span style="border-color:#EBEBEB;border-width:1px;width:100%;"></span> <style scoped> /* custom css */ .td_block_separator{ width: 100%; align-items: center; margin-bottom: 38px; padding-bottom: 10px; }.td_block_separator span{ position: relative; display: block; margin: 0 auto; width: 100%; height: 1px; border-top: 1px solid #EBEBEB; }.td_separator_align_left span{ margin-left: 0; }.td_separator_align_right span{ margin-right: 0; }.td_separator_dashed span{ border-top-style: dashed; }.td_separator_dotted span{ border-top-style: dotted; }.td_separator_double span{ height: 3px; border-bottom: 1px solid #EBEBEB; }.td_separator_shadow > span{ position: relative; height: 20px; overflow: hidden; border: 0; color: #EBEBEB; }.td_separator_shadow > span > span{ position: absolute; top: -30px; left: 0; right: 0; margin: 0 auto; height: 13px; width: 98%; border-radius: 100%; } /* inline tdc_css att */ .tdi_118{ margin-top:15px !important; } /* phone */ @media (max-width: 767px) { .tdi_118{ margin-top:50px !important; } } </style></div><div class="tdm_block td_block_wrap tdm_block_column_title tdi_119 tdm-content-horiz-center td-pb-border-top td_block_template_1" data-td-block-uid="tdi_119" ><div class="td-block-row"><div class="td-block-span12 tdm-col"> <style> body .tdi_120 .tdm-title{ color: #ffffff; }body .tdi_119:hover .tdi_120 .tdm-title{ color: #ffffff; -webkit-text-fill-color: unset; background: transparent; transition: none; }.tdi_119:hover .tdi_120 .tdm-title{ cursor: default; }.tdi_120 .tdm-title{ font-family:Montserrat !important;font-weight:600 !important; } </style><div class="tds-title tds-title1 td-fix-index tdi_120"><h3 class="tdm-title tdm-title-md">Our Brands</h3></div></div></div></div></div></div></div></div><div id="tdi_121" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_122 wpb_row td-pb-row tdc-row-content-vert-center" > <style scoped> /* custom css */ .tdi_122, .tdi_122 .tdc-columns{ min-height: 0; }.tdi_122, .tdi_122 .tdc-columns{ display: block; }.tdi_122 .tdc-columns{ width: 100%; }@media (min-width: 768px) { .tdi_122 { margin-left: -2px; margin-right: -2px; } .tdi_122 .tdc-row-video-background-error, .tdi_122 .vc_column { padding-left: 2px; padding-right: 2px; } }@media (min-width: 767px) { .tdi_122.tdc-row-content-vert-center, .tdi_122.tdc-row-content-vert-center .tdc-columns { display: flex; align-items: center; flex: 1; } .tdi_122.tdc-row-content-vert-bottom, .tdi_122.tdc-row-content-vert-bottom .tdc-columns { display: flex; align-items: flex-end; flex: 1; } .tdi_122.tdc-row-content-vert-center .td_block_wrap { vertical-align: middle; } .tdi_122.tdc-row-content-vert-bottom .td_block_wrap { vertical-align: bottom; } } </style><div class="vc_column tdi_124 wpb_column vc_column_container tdc-column td-pb-span3"> <style scoped> /* custom css */ .tdi_124{ vertical-align: baseline; }.tdi_124 > .wpb_wrapper, .tdi_124 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_124 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_124 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_124 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_125 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_125"><a data-bg="https://www.developer.com/wp-content/uploads/2020/08/whitecompanylogos-04.png" class="td_single_image_bg rocket-lazyload" style="" href="https://technologyadvice.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_125{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .td_block_single_image.td-image-video-modal{ cursor: pointer; }.td_block_single_image a{ display: block; }.td_block_single_image.td-no-img-custom-url a{ pointer-events: none; cursor: default; }.vc_single_image a{ position: relative; width: 100%; display: block; background-size: cover; }.td-single-image-style-rounded a, .td-single-image-style-rounded a:before, .td-single-image-style-rounded a:after{ border-radius: 4px; }.td-single-image-style-border, .td-single-image-style-round-border, .td-single-image-style-circle-border, .td-single-image-style-outline, .td-single-image-style-bordered-shadow, .td-single-image-style-round-outline, .td-single-image-style-round-border-shadow, .td-single-image-style-circle-outline, .td-single-image-style-circle-border-shadow{ margin-bottom: 22px; background-color: #EBEBEB; }.td-single-image-style-border, .td-single-image-style-round-border, .td-single-image-style-circle-border{ padding: 6px; }.td-single-image-style-outline, .td-single-image-style-bordered-shadow, .td-single-image-style-round-outline, .td-single-image-style-round-border-shadow, .td-single-image-style-circle-outline, .td-single-image-style-circle-border-shadow{ padding: 1px; }.td-single-image-style-outline a:before, .td-single-image-style-bordered-shadow a:before, .td-single-image-style-round-outline a:before, .td-single-image-style-round-border-shadow a:before, .td-single-image-style-circle-outline a:before, .td-single-image-style-circle-border-shadow a:before, .td-single-image-style-outline a:after, .td-single-image-style-bordered-shadow a:after, .td-single-image-style-round-outline a:after, .td-single-image-style-round-border-shadow a:after, .td-single-image-style-circle-outline a:after, .td-single-image-style-circle-border-shadow a:after{ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; }.td-single-image-style-outline a:after, .td-single-image-style-bordered-shadow a:after, .td-single-image-style-round-outline a:after, .td-single-image-style-round-border-shadow a:after, .td-single-image-style-circle-outline a:after, .td-single-image-style-circle-border-shadow a:after{ color: #fff; -webkit-box-shadow: inset 0px 0px 0px 6px; box-shadow: inset 0px 0px 0px 6px; }.td-single-image-style-outline a:before, .td-single-image-style-bordered-shadow a:before, .td-single-image-style-round-outline a:before, .td-single-image-style-round-border-shadow a:before, .td-single-image-style-circle-outline a:before, .td-single-image-style-circle-border-shadow a:before{ color: #EBEBEB; -webkit-box-shadow: inset 0px 0px 0px 7px; box-shadow: inset 0px 0px 0px 7px; }.td-single-image-style-shadow a, .td-single-image-style-bordered-shadow a, .td-single-image-style-round-shadow a, .td-single-image-style-round-border-shadow a, .td-single-image-style-circle-shadow a, .td-single-image-style-circle-border-shadow a{ -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.1); box-shadow: 0 0 6px rgba(0, 0, 0, 0.1); }.td-single-image-style-3d-shadow{ position: relative; }.td-single-image-style-3d-shadow:before, .td-single-image-style-3d-shadow:after{ content: ''; position: absolute; bottom: 0; height: 30%; -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.6); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.6); z-index: 0; }.td-single-image-style-3d-shadow:before{ left: 5px; right: 50%; -webkit-transform: skewY(-6deg); transform: skewY(-6deg); -webkit-transform-origin: 0 0; transform-origin: 0 0; }.td-single-image-style-3d-shadow:after{ left: 50%; right: 5px; -webkit-transform: skewY(6deg); transform: skewY(6deg); -webkit-transform-origin: 100% 0; transform-origin: 100% 0; }.td-single-image-style-3d-shadow a{ z-index: 1; }.td-single-image-style-round, .td-single-image-style-round-border, .td-single-image-style-round-outline, .td-single-image-style-round-shadow, .td-single-image-style-round-border-shadow, .td-single-image-style-circle, .td-single-image-style-circle-border, .td-single-image-style-circle-outline, .td-single-image-style-circle-shadow, .td-single-image-style-circle-border-shadow{ border-radius: 50%; }.td-single-image-style-round a, .td-single-image-style-round-border a, .td-single-image-style-round-outline a, .td-single-image-style-round-shadow a, .td-single-image-style-round-border-shadow a, .td-single-image-style-circle a, .td-single-image-style-circle-border a, .td-single-image-style-circle-outline a, .td-single-image-style-circle-shadow a, .td-single-image-style-circle-border-shadow a, .td-single-image-style-round a:before, .td-single-image-style-round-border a:before, .td-single-image-style-round-outline a:before, .td-single-image-style-round-shadow a:before, .td-single-image-style-round-border-shadow a:before, .td-single-image-style-circle a:before, .td-single-image-style-circle-border a:before, .td-single-image-style-circle-outline a:before, .td-single-image-style-circle-shadow a:before, .td-single-image-style-circle-border-shadow a:before, .td-single-image-style-round a:after, .td-single-image-style-round-border a:after, .td-single-image-style-round-outline a:after, .td-single-image-style-round-shadow a:after, .td-single-image-style-round-border-shadow a:after, .td-single-image-style-circle a:after, .td-single-image-style-circle-border a:after, .td-single-image-style-circle-outline a:after, .td-single-image-style-circle-shadow a:after, .td-single-image-style-circle-border-shadow a:after{ border-radius: 50%; }.td-single-image-style-round-outline a:before, .td-single-image-style-round-border-shadow a:before, .td-single-image-style-circle-outline a:before, .td-single-image-style-circle-border-shadow a:before, .td-single-image-style-round-outline a:before:before, .td-single-image-style-round-border-shadow a:before:before, .td-single-image-style-circle-outline a:before:before, .td-single-image-style-circle-border-shadow a:before:before, .td-single-image-style-round-outline a:after:before, .td-single-image-style-round-border-shadow a:after:before, .td-single-image-style-circle-outline a:after:before, .td-single-image-style-circle-border-shadow a:after:before, .td-single-image-style-round-outline a:after, .td-single-image-style-round-border-shadow a:after, .td-single-image-style-circle-outline a:after, .td-single-image-style-circle-border-shadow a:after, .td-single-image-style-round-outline a:before:after, .td-single-image-style-round-border-shadow a:before:after, .td-single-image-style-circle-outline a:before:after, .td-single-image-style-circle-border-shadow a:before:after, .td-single-image-style-round-outline a:after:after, .td-single-image-style-round-border-shadow a:after:after, .td-single-image-style-circle-outline a:after:after, .td-single-image-style-circle-border-shadow a:after:after{ border-radius: 50%; }.td-single-image-style-circle a, .td-single-image-style-circle-border a, .td-single-image-style-circle-outline a, .td-single-image-style-circle-shadow a, .td-single-image-style-circle-border-shadow a{ height: 0; padding-bottom: 100%; }.tdi_125 .td_single_image_bg{ height: 40px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_125{ width: 100%; }.tdi_125:hover .td_single_image_bg:before{ opacity: 0; }@media (max-width: 767px) { .td-stretch-content .td_block_single_image { margin-right: -20px; margin-left: -20px; } }@media (max-width: 767px) { .td-single-image-style-border, .td-single-image-style-round-border, .td-single-image-style-circle-border, .td-single-image-style-outline, .td-single-image-style-bordered-shadow, .td-single-image-style-round-outline, .td-single-image-style-round-border-shadow, .td-single-image-style-circle-outline, .td-single-image-style-circle-border-shadow { margin-bottom: 32px; } } </style></div><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_126 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_126"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/eweekfooter_smaller.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.eweek.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_126{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_126 .td_single_image_bg{ height: 40px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_126{ width: 100%; }.tdi_126:hover .td_single_image_bg:before{ opacity: 0; } </style></div></div></div><div class="vc_column tdi_128 wpb_column vc_column_container tdc-column td-pb-span3"> <style scoped> /* custom css */ .tdi_128{ vertical-align: baseline; }.tdi_128 > .wpb_wrapper, .tdi_128 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_128 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_128 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_128 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_129 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_129"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/datamationwhitefooter.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.datamation.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_129{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_129 .td_single_image_bg{ height: 40px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_129{ width: 100%; }.tdi_129:hover .td_single_image_bg:before{ opacity: 0; } </style></div><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_130 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_130"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/PMcomwhitefooter-09.png" class="td_single_image_bg rocket-lazyload" style="" href="https://project-management.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_130{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_130 .td_single_image_bg{ height: 45px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_130{ width: 100%; }.tdi_130:hover .td_single_image_bg:before{ opacity: 0; } </style></div></div></div><div class="vc_column tdi_132 wpb_column vc_column_container tdc-column td-pb-span3"> <style scoped> /* custom css */ .tdi_132{ vertical-align: baseline; }.tdi_132 > .wpb_wrapper, .tdi_132 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_132 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_132 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_132 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_133 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_133"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/webowhitefooter.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.webopedia.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_133{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_133 .td_single_image_bg{ height: 40px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_133{ width: 100%; }.tdi_133:hover .td_single_image_bg:before{ opacity: 0; } </style></div><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_134 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_134"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/esecuritywhitefooter.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.esecurityplanet.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_134{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_134 .td_single_image_bg{ height: 45px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_134{ width: 100%; }.tdi_134:hover .td_single_image_bg:before{ opacity: 0; } </style></div></div></div><div class="vc_column tdi_136 wpb_column vc_column_container tdc-column td-pb-span3"> <style scoped> /* custom css */ .tdi_136{ vertical-align: baseline; }.tdi_136 > .wpb_wrapper, .tdi_136 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_136 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_136 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_136 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_137 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_137"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/ENP_whitefooter_stack.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.enterprisenetworkingplanet.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_137{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_137 .td_single_image_bg{ height: 45px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_137{ width: 100%; }.tdi_137:hover .td_single_image_bg:before{ opacity: 0; } </style></div><div class="wpb_wrapper td_block_single_image td_block_wrap td_block_wrap vc_single_image tdi_138 td-single-image- td-pb-border-top td_block_template_1 " data-td-block-uid="tdi_138"><a data-bg="https://www.developer.com/wp-content/uploads/2021/02/serverwatchwhitefooter-10.png" class="td_single_image_bg rocket-lazyload" style="" href="https://www.serverwatch.com/" target="_blank" ></a> <style> /* inline tdc_css att */ /* phone */ @media (max-width: 767px) { .tdi_138{ margin-right:auto !important; margin-left:auto !important; } } </style> <style> /* custom css */ .tdi_138 .td_single_image_bg{ height: 45px; padding-bottom: 0; background-size: contain; background-repeat: no-repeat; background-position: center top; }.tdi_138{ width: 100%; }.tdi_138:hover .td_single_image_bg:before{ opacity: 0; } </style></div></div></div></div></div><div id="tdi_139" class="tdc-row stretch_row_1400 td-stretch-content"><div class="vc_row tdi_140 wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_140, .tdi_140 .tdc-columns{ min-height: 0; }.tdi_140, .tdi_140 .tdc-columns{ display: block; }.tdi_140 .tdc-columns{ width: 100%; } </style><div class="vc_column tdi_142 wpb_column vc_column_container tdc-column td-pb-span12"> <style scoped> /* custom css */ .tdi_142{ vertical-align: baseline; }.tdi_142 > .wpb_wrapper, .tdi_142 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_142 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_142 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_142 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"><div class="wpb_wrapper td_block_separator td_block_wrap vc_separator tdi_144 td_separator_solid td_separator_center"><span style="border-color:#EBEBEB;border-width:1px;width:100%;"></span> <style scoped> /* inline tdc_css att */ .tdi_144{ margin-top:15px !important; } </style></div><div class="vc_row_inner tdi_146 vc_row vc_inner wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_146{ position: relative !important; top: 0; transform: none; -webkit-transform: none; }.tdi_146, .tdi_146 .tdc-inner-columns{ display: block; }.tdi_146 .tdc-inner-columns{ width: 100%; } </style><div class="vc_column_inner tdi_148 wpb_column vc_column_container tdc-inner-column td-pb-span12"> <style scoped> /* custom css */ .tdi_148{ vertical-align: baseline; }.tdi_148 .vc_column-inner > .wpb_wrapper, .tdi_148 .vc_column-inner > .wpb_wrapper .tdc-elements{ display: block; }.tdi_148 .vc_column-inner > .wpb_wrapper .tdc-elements{ width: 100%; } </style><div class="vc_column-inner"><div class="wpb_wrapper"><div class="td_block_wrap tdb_header_menu tdi_149 tds_menu_active1 tds_menu_sub_active1 td-pb-border-top td_block_template_1 tdb-header-align" data-td-block-uid="tdi_149" style=" z-index: 999;"> <style> /* custom css */ .tdi_149 .td_block_inner{ text-align: center; }.tdi_149 .tdb-menu > li .tdb-menu-sep, .tdi_149 .tdb-menu-items-dropdown .tdb-menu-sep{ top: -1px; }.tdi_149 .tdb-menu > li > a .tdb-sub-menu-icon, .tdi_149 .td-subcat-more .tdb-menu-more-subicon{ top: -1px; }.tdi_149 .td-subcat-more .tdb-menu-more-icon{ top: 0px; }.tdi_149 .tdb-menu > li > a, .tdi_149 .td-subcat-more{ color: #ffffff; }.tdi_149 .tdb-menu > li > a .tdb-sub-menu-icon-svg svg, .tdi_149 .tdb-menu > li > a .tdb-sub-menu-icon-svg svg *, .tdi_149 .td-subcat-more .tdb-menu-more-subicon-svg svg, .tdi_149 .td-subcat-more .tdb-menu-more-subicon-svg svg *, .tdi_149 .td-subcat-more .tdb-menu-more-icon-svg, .tdi_149 .td-subcat-more .tdb-menu-more-icon-svg *{ fill: #ffffff; }.tdi_149 .tdb-menu > li > a, .tdi_149 .td-subcat-more, .tdi_149 .td-subcat-more > .tdb-menu-item-text{ font-family:Montserrat !important;font-size:14px !important; }.tdi_149 .tdb-normal-menu ul .tdb-menu-item > a .tdb-sub-menu-icon, .tdi_149 .td-pulldown-filter-list .tdb-menu-item > a .tdb-sub-menu-icon{ right: 0; margin-top: 1px; }.tdi_149 .tdb-menu .tdb-normal-menu ul, .tdi_149 .td-pulldown-filter-list, .tdi_149 .td-pulldown-filter-list .sub-menu{ box-shadow: 1px 1px 4px 0px rgba(0, 0, 0, 0.15); }.tdi_149 .tdb-menu .tdb-mega-menu .sub-menu > li{ box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1); } /* phone */ @media (max-width: 767px){ .tdi_149 .tdb-menu > li > a, .tdi_149 .td-subcat-more, .tdi_149 .td-subcat-more > .tdb-menu-item-text{ font-family:Montserrat !important;font-size:10px !important; } } </style> <style> .tdi_149 .tdb-menu > li > a:after, .tdi_149 .tdb-menu-items-dropdown .td-subcat-more:after{ background-color: #929bc0; bottom: 0px; } </style> <style> </style><div id=tdi_149 class="td_block_inner td-fix-index"><div class="tdb-main-sub-icon-fake"><i class="tdb-sub-menu-icon td-icon-down tdb-main-sub-menu-icon"></i></div><div class="tdb-sub-icon-fake"><i class="tdb-sub-menu-icon td-icon-right-arrow"></i></div><ul id="menu-footer-terms-nav-1" class="tdb-block-menu tdb-menu tdb-menu-items-visible"><li class="menu-item menu-item-type-post_type menu-item-object-page tdb-cur-menu-item menu-item-first tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-325"><a href="https://www.developer.com/privacy-policy/"><div class="tdb-menu-item-text">Privacy Policy</div></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-320"><a href="https://technologyadvice.com/terms-conditions/"><div class="tdb-menu-item-text">Terms</div></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-321"><a href="https://technologyadvice.com/about-us/"><div class="tdb-menu-item-text">About</div></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-322"><a href="https://technologyadvice.com/contact-us/"><div class="tdb-menu-item-text">Contact</div></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-323"><a href="https://solutions.technologyadvice.com/advertise-on-developer/?utm_source=developer&#038;utm_medium=portfolio_footer&#038;utm_campaign=advertise_contact-us"><div class="tdb-menu-item-text">Advertise</div></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom tdb-menu-item-button tdb-menu-item tdb-normal-menu menu-item-324"><a href="https://technologyadvice.com/privacy-policy/ccpa-opt-out-form/"><div class="tdb-menu-item-text">California &#8211; Do Not Sell My Information</div></a></li> </ul></div></div></div></div></div></div><div class="tdm_block td_block_wrap tdm_block_column_content tdi_152 tdm-content-horiz-center td-pb-border-top td_block_template_1" data-td-block-uid="tdi_152" > <style> /* inline tdc_css att */ .tdi_152{ margin-top:20px !important; } </style> <style> /* custom css */ .tdm_block_column_content .tdm-image-holder{ position: relative; display: block; height: 0; margin-bottom: 24px; padding-bottom: 70%; }.tdm_block_column_content .tdm-image-holder:hover .tdm-hover-img{ opacity: 1; }.tdm_block_column_content .tdm-image-holder > div{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-repeat: no-repeat; background-position: center center; background-size: cover; }.tdm_block_column_content .tdm-hover-img{ opacity: 0; -webkit-transition: all 0.4s ease-in-out; transition: all 0.4s ease-in-out; }.tdm_block_column_content:hover .tdm-col-content-title-url .tdm-title{ color: #4db2ec; }.tdm_block_column_content .tdm-title-xxsm, .tdm_block_column_content .tdm-title-xsm{ margin-bottom: 20px; }.tdm_block_column_content .tdm-title-md{ margin-bottom: 14px; }.tdm_block_column_content .tdm-title-bg{ margin-bottom: 16px; }.tdm_block_column_content .tdm-descr{ margin-bottom: 0; }.tdm_block_column_content .tds-button{ margin-top: 25px; }.tdi_152 .tdm-descr{ color: #ffffff; font-size:11px !important;line-height:1.2 !important; }@media (max-width: 767px) { .tdm_block_column_content .tdm-image-holder { margin-bottom: 14px; } } </style><div class="tdm-col-content-info"><a href="#" target="_blank" class="tdm-col-content-title-url"></a><p class="tdm-descr td-fix-index">Property of TechnologyAdvice.<br> &copy; 2022 TechnologyAdvice. All Rights Reserved<br><br> Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.</p></div></div><div class="wpb_wrapper td_block_empty_space td_block_wrap vc_empty_space tdi_154 " style="height: 80px"></div><div class="wpb_wrapper td_block_wrap vc_raw_html tdi_156 choice-footer-msg"> <style scoped> /* inline tdc_css att */ .tdi_156{ margin-top:0px !important; margin-bottom:10px !important; padding-top:0px !important; border-style:solid !important; border-color:#888888 !important; border-width: 0px 0px 0px 0px !important; } </style><div class="td-fix-index"><div id="choice-footer-msg" style="color:#ffffff;"> </div></div></div></div></div></div></div><div id="tdi_157" class="tdc-row"><div class="vc_row tdi_158 wpb_row td-pb-row" > <style scoped> /* custom css */ .tdi_158, .tdi_158 .tdc-columns{ min-height: 0; }.tdi_158, .tdi_158 .tdc-columns{ display: block; }.tdi_158 .tdc-columns{ width: 100%; } </style><div class="vc_column tdi_160 wpb_column vc_column_container tdc-column td-pb-span12"> <style scoped> /* custom css */ .tdi_160{ vertical-align: baseline; }.tdi_160 > .wpb_wrapper, .tdi_160 > .wpb_wrapper > .tdc-elements{ display: block; }.tdi_160 > .wpb_wrapper > .tdc-elements{ width: 100%; }.tdi_160 > .wpb_wrapper > .vc_row_inner{ width: auto; }.tdi_160 > .wpb_wrapper{ width: auto; height: auto; } </style><div class="wpb_wrapper"></div></div></div></div></div></div> </div> </div> </div><!--close td-outer-wrap--> <script>(function(){var advanced_ads_ga_UID="UA-48212700-1",advanced_ads_ga_anonymIP=!!1;function AdvAdsAdBlockCounterGA(t){this.UID=t,this.analyticsObject="function"==typeof gtag;var n=this;return this.count=function(){gtag("event","AdBlock",{event_category:"Advanced Ads",event_label:"Yes",non_interaction:!0,send_to:n.UID})},function(){if(!n.analyticsObject){var e=document.createElement("script");e.src="https://www.googletagmanager.com/gtag/js?id="+t,e.async=!0,document.body.appendChild(e),window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},n.analyticsObject=!0,gtag("js",new Date)}var a={send_page_view:!1,transport_type:"beacon"};window.advanced_ads_ga_anonymIP&&(a.anonymize_ip=!0),gtag("config",t,a)}(),this}window.advanced_ads_check_adblocker=function(t){var n=[],e=null;function a(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return setTimeout(t,16)}).call(window,t)}return a((function(){var t=document.createElement("div");t.innerHTML="&nbsp;",t.setAttribute("class","ad_unit ad-unit text-ad text_ad pub_300x250"),t.setAttribute("style","width: 1px !important; height: 1px !important; position: absolute !important; left: 0px !important; top: 0px !important; overflow: hidden !important;"),document.body.appendChild(t),a((function(){var a=window.getComputedStyle&&window.getComputedStyle(t),o=a&&a.getPropertyValue("-moz-binding");e=a&&"none"===a.getPropertyValue("display")||"string"==typeof o&&-1!==o.indexOf("about:");for(var i=0,d=n.length;i<d;i++)n[i](e);n=[]}))})),function(t){null!==e?t(e):n.push(t)}}(),advanced_ads_check_adblocker((function(t){t&&new AdvAdsAdBlockCounterGA(advanced_ads_ga_UID).count()}));})();</script><div class="devco-native-ads devco-sticky devco-target" id="devco-607549093" style="position: fixed; bottom: 0; z-index: 10000; " data-advadstrackid="59349" data-advadstrackbid="1"><!-- Start: GAM Ad Slot Render | Developer Native Ads --> <style> #native-boap { position: relative; } #native-rr-article iframe, #native-rr-article > div, #native-main-well iframe, #native-study-guide iframe { width: 100%; height: 100%; } #native-rr-article iframe, #native-study-guide iframe { margin-bottom: -25px; } #native-boap iframe { width: 100%; height: 36rem; } #native-rr-article { position: relative; } #native-rr-article:before { position: absolute; left: 0; bottom: -18px; width: 100%; height: 1px; border-width: 0 0 1px 0; border-style: solid; border-color: #e6e6e6; content: ""; } @media screen and (min-width: 500px) { #native-boap iframe { height: 25rem; } } @media screen and (min-width: 1100px) { #native-boap iframe { height: 24.5rem; } } </style> <div id="native-rr-article" style="width:0px; height:0px"> <script> window.googletag = window.googletag || { cmd: [] }; window.googletag.cmd.push(function() { googletag.display("native-rr-article"); }); </script> </div> <div id="native-boap" style="display:none;"> <script> window.googletag = window.googletag || { cmd: [] }; window.googletag.cmd.push(function() { googletag.display("native-boap"); }); (function() { var rightRailReplacedPost = document.querySelector('._ntv_latest_posts_widget .td_block_inner .td_module_flex:nth-child(3) .td-module-container'); var rightRailContent = document.getElementById('native-rr-article'); rightRailReplacedPost.parentNode.replaceChild(rightRailContent, rightRailReplacedPost); rightRailContent.style.height = '100%'; rightRailContent.style.width = '100%'; var boapAfterContent = document.querySelector("article.post .tdb_single_post_share"); var boapContent = document.getElementById('native-boap'); boapAfterContent.parentNode.append(boapContent); boapContent.style.height = 'auto'; boapContent.style.width = '100%'; })(); </script> </div> <!-- End: GAM Ad Slot Render | Developer Native Ads --></div><script>( window.advanced_ads_ready || jQuery( document ).ready ).call( null, function() {var wrapper_id = "#devco-607549093"; var $wrapper = jQuery( wrapper_id );advads.move( wrapper_id, "", { });window.advanced_ads_sticky_items = window.advanced_ads_sticky_items || {};advanced_ads_sticky_items[ "devco-607549093" ] = { "can_convert_to_abs": "1", "initial_css": $wrapper.attr( "style" ), "modifying_func": function() { $wrapper.css({ "-webkit-transform": "translateX(-50%)", "-moz-transform": "translateX(-50%)", "transform": "translateX(-50%)", "left": "50%", "margin-right": "-50%" });}}; if ( advads.wait_for_images ) { var sticky_wait_for_images_time = new Date().getTime(); $wrapper.data( "sticky_wait_for_images_time", sticky_wait_for_images_time ); advads.wait_for_images( $wrapper, function() { // At the moment when this function is called, it is possible that // the placement has been updated using "Reload ads on resize" feature of Responsive add-on if ( $wrapper.data( "sticky_wait_for_images_time" ) === sticky_wait_for_images_time ) { advanced_ads_sticky_items[ "devco-607549093" ]["modifying_func"](); } } ); } else { advanced_ads_sticky_items[ "devco-607549093" ]["modifying_func"](); }; });</script><div class="devco-sticky-footer devco-sticky devco-target" id="devco-388144974" style="position: fixed; bottom: 0; z-index: 10000; " data-advadstrackid="58115" data-advadstrackbid="1"><span class="devco-close-button" onclick="void(0)" title="close" style="width: 15px; height: 15px; background: #fff; position: relative; line-height: 15px; text-align: center; cursor: pointer; z-index: 10000;right:-15px;float: right; margin-left: -15px;">×</span><!-- Start: GAM Ad Slot Render | Developer Sticky Bottom --> <div id="sticky-bottom" style="max-width: 1020px; min-width: 300px; width: auto; text-align:center; min-height: 50px; max-height: 90px; height: auto; border:1px solid #efefef;"> <script> window.googletag = window.googletag || { cmd: [] }; window.googletag.cmd.push(function() { googletag.display("sticky-bottom"); }); </script> </div> <!-- End: GAM Ad Slot Render | Developer Sticky Bottom --></div><script>( window.advanced_ads_ready || jQuery( document ).ready ).call( null, function() {var wrapper_id = "#devco-388144974"; var $wrapper = jQuery( wrapper_id );advads.move( wrapper_id, "", { });window.advanced_ads_sticky_items = window.advanced_ads_sticky_items || {};advanced_ads_sticky_items[ "devco-388144974" ] = { "can_convert_to_abs": "1", "initial_css": $wrapper.attr( "style" ), "modifying_func": function() { $wrapper.css({ "-webkit-transform": "translateX(-50%)", "-moz-transform": "translateX(-50%)", "transform": "translateX(-50%)", "left": "50%", "margin-right": "-50%" });jQuery( "#devco-388144974" ).on( "click", "span", function() { advads.close( "#devco-388144974" ); });}}; if ( advads.wait_for_images ) { var sticky_wait_for_images_time = new Date().getTime(); $wrapper.data( "sticky_wait_for_images_time", sticky_wait_for_images_time ); advads.wait_for_images( $wrapper, function() { // At the moment when this function is called, it is possible that // the placement has been updated using "Reload ads on resize" feature of Responsive add-on if ( $wrapper.data( "sticky_wait_for_images_time" ) === sticky_wait_for_images_time ) { advanced_ads_sticky_items[ "devco-388144974" ]["modifying_func"](); } } ); } else { advanced_ads_sticky_items[ "devco-388144974" ]["modifying_func"](); }; });</script> <!-- Theme: Newspaper by tagDiv.com 2022 Version: 11.4.3 (rara) Deploy mode: deploy uid: 63371a20ef068 --> <!-- Google Tag Manager (noscript) snippet added by Site Kit --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WLCCQ9V" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) snippet added by Site Kit --> <script type='text/javascript' id='ap-frontend-js-js-extra'> /* <![CDATA[ */ var ap_form_required_message = ["This field is required","accesspress-anonymous-post"]; var ap_captcha_error_message = ["Sum is not correct.","accesspress-anonymous-post"]; /* ]]> */ </script> <script data-minify="1" type='text/javascript' src='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/accesspress-anonymous-post/js/frontend.js?ver=1652128638' id='ap-frontend-js-js' defer></script> <script type='text/javascript' id='icp_js-js-extra'> /* <![CDATA[ */ var intentclicks_ajax = {"url":"https:\/\/www.developer.com\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script data-minify="1" type='text/javascript' src='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/ta-intentclicks-master/includes/js/scripts.js?ver=1664218511' id='icp_js-js' defer></script> <script type='text/javascript' id='ppress-frontend-script-js-extra'> /* <![CDATA[ */ var pp_ajax_form = {"ajaxurl":"https:\/\/www.developer.com\/wp-admin\/admin-ajax.php","confirm_delete":"Are you sure?","deleting_text":"Deleting...","deleting_error":"An error occurred. Please try again.","nonce":"6c24bedaae","disable_ajax_form":"false"}; /* ]]> */ </script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/wp-user-avatar/assets/js/frontend.min.js?ver=3.2.11' id='ppress-frontend-script-js' defer></script> <script type='text/javascript' id='advanced-ads-layer-footer-js-js-extra'> /* <![CDATA[ */ var advanced_ads_layer_settings = {"layer_class":"devco-layer","placements":[]}; /* ]]> */ </script> <script data-minify="1" type='text/javascript' src='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/advanced-ads-layer/public/assets/js/layer.js?ver=1652128638' id='advanced-ads-layer-footer-js-js' defer></script> <script type='text/javascript' id='advanced-ads-responsive-js-extra'> /* <![CDATA[ */ var advanced_ads_responsive = {"reload_on_resize":"0"}; /* ]]> */ </script> <script data-minify="1" type='text/javascript' src='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/advanced-ads-responsive/public/assets/js/script.js?ver=1652128638' id='advanced-ads-responsive-js' defer></script> <script type='text/javascript' id='advanced-ads-sticky-footer-js-js-extra'> /* <![CDATA[ */ var advanced_ads_sticky_settings = {"check_position_fixed":"","sticky_class":"devco-sticky","placements":["native-ads","sticky-footer"]}; /* ]]> */ </script> <script data-minify="1" type='text/javascript' src='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/advanced-ads-sticky-ads/public/assets/js/sticky.js?ver=1652128638' id='advanced-ads-sticky-footer-js-js' defer></script> <script type='text/javascript' id='rocket-browser-checker-js-after'> "use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); </script> <script type='text/javascript' id='rocket-preload-links-js-extra'> /* <![CDATA[ */ var RocketPreloadLinksConfig = {"excludeUris":"\/(?:.+\/)?feed(?:\/(?:.+\/?)?)?$|\/(?:.+\/)?embed\/|\/(index\\.php\/)?wp\\-json(\/.*|$)|\/wp-admin\/|\/logout\/|\/wp-login.php|\/refer\/|\/go\/|\/recommend\/|\/recommends\/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https:\/\/www.developer.com","onHoverDelay":"100","rateThrottle":"3"}; /* ]]> */ </script> <script type='text/javascript' id='rocket-preload-links-js-after'> (function() { "use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); }()); </script> <script type='text/javascript' src='https://www.developer.com/wp-includes/js/underscore.min.js?ver=1.13.3' id='underscore-js' defer></script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/td-cloud-library/assets/js/js_posts_autoload.min.js?ver=b2e02a383c117d2c27b181e37c1c9e0e' id='tdb_js_posts_autoload-js' defer></script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tagdiv_theme.min.js?ver=11.4.3' id='td-site-min-js' defer></script> <script type='text/javascript' src='https://www.developer.com/wp-includes/js/comment-reply.min.js?ver=6.0.2' id='comment-reply-js' defer></script> <script type='text/javascript' id='advadsTrackingScript-js-extra'> /* <![CDATA[ */ var advadsTracking = {"impressionActionName":"aatrack-records","clickActionName":"aatrack-click","targetClass":"devco-target","blogId":"1"}; /* ]]> */ </script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/advanced-ads-tracking/public/assets/js/dist/tracking.min.js?ver=2.3.1' id='advadsTrackingScript-js' defer></script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/advanced-ads-tracking/public/assets/js/dist/delayed.min.js?ver=2.3.1' id='advadsTrackingDelayed-js' defer></script> <script type='text/javascript' src='https://www.developer.com/wp-content/plugins/td-cloud-library/assets/js/js_files_for_front.min.js?ver=b2e02a383c117d2c27b181e37c1c9e0e' id='tdb_js_files_for_front-js' defer></script> <!--noptimize--><script>window.advads_has_ads = [["58112","ad",null],["59348","ad",null],["58114","ad",null],["58116","ad",null],["59349","ad",null],["58115","ad",null]]; ( window.advanced_ads_ready || jQuery( document ).ready ).call( null, function() {if ( !window.advanced_ads_pro ) {console.log("Advanced Ads Pro: cache-busting can not be initialized");} });</script><!--/noptimize--><!--noptimize--><script>!function(){window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[],advanced_ads_ready_queue.push=window.advanced_ads_ready;for(var d=0,a=advanced_ads_ready_queue.length;d<a;d++)advanced_ads_ready(advanced_ads_ready_queue[d])}();</script><!--/noptimize--> <!-- JS generated by theme --> <script> /* global jQuery:{} */ jQuery().ready(function () { var tdbMenuItem = new tdbMenu.item(); tdbMenuItem.blockUid = 'tdi_39'; tdbMenuItem.jqueryObj = jQuery('.tdi_39'); tdbMenuItem.isMegaMenuFull = true; tdbMenu.addItem(tdbMenuItem); }); jQuery().ready(function () { var tdbSearchItem = new tdbSearch.item(); //block unique ID tdbSearchItem.blockUid = 'tdi_42'; tdbSearchItem.blockAtts = '{"toggle_txt_pos":"after","form_align":"content-horiz-center","results_msg_align":"content-horiz-center","image_floated":"float_left","image_width":"32","image_size":"td_324x400","show_cat":"","show_btn":"none","show_date":"","show_review":"none","show_com":"none","show_excerpt":"none","show_author":"none","meta_padding":"0 0 0 18px","art_title":"0 0 10px","all_modules_space":"24","tdc_css":"eyJhbGwiOnsiYmFja2dyb3VuZC1jb2xvciI6IiM5MjliYzAiLCJkaXNwbGF5IjoiIn0sImxhbmRzY2FwZSI6eyJtYXJnaW4tcmlnaHQiOiIyMCIsImRpc3BsYXkiOiIifSwibGFuZHNjYXBlX21heF93aWR0aCI6MTE0MCwibGFuZHNjYXBlX21pbl93aWR0aCI6MTAxOSwicG9ydHJhaXQiOnsibWFyZ2luLXJpZ2h0IjoiMjAiLCJkaXNwbGF5IjoiIn0sInBvcnRyYWl0X21heF93aWR0aCI6MTAxOCwicG9ydHJhaXRfbWluX3dpZHRoIjo3Njh9","icon_color":"#ffffff","icon_padding":"2.2","toggle_horiz_align":"content-horiz-right","inline":"yes","icon_size":"eyJhbGwiOjIwLCJsYW5kc2NhcGUiOiIxOCIsInBob25lIjoiMTgifQ==","form_border_color":"#f7f7f7","arrow_color":"rgba(0,0,0,0)","form_shadow_shadow_size":"40","form_shadow_shadow_offset_vertical":"44","form_shadow_shadow_color":"rgba(0,0,0,0.12)","results_border_color":"rgba(0,0,0,0.03)","form_width":"eyJhbGwiOiIxMjAwIiwibGFuZHNjYXBlIjoiY2FsYygxMDAlIC0gNDBweCkifQ==","modules_on_row":"33.33333333%","results_limit":"6","image_radius":"8","modules_category":"","f_title_font_family":"406","f_title_font_weight":"800","f_title_font_size":"16","modules_category_padding":"3px 0 4px","cat_bg":"rgba(0,0,0,0)","cat_txt":"#929bc0","f_cat_font_family":"406","f_cat_font_size":"11","f_cat_font_transform":"uppercase","f_meta_font_family":"406","f_meta_font_transform":"uppercase","f_meta_font_size":"11","f_cat_font_weight":"800","f_meta_font_weight":"800","meta_info_align":"center","f_title_font_line_height":"1.4","title_txt_hover":"#bd0008","modules_category_margin":"0 10px 0 0","modules_gap":"24","results_border":"2px 0","form_border":"2px 0 0","input_border":"2","input_radius":"5","btn_radius":"0 5px 5px 0","f_input_font_family":"","f_input_font_line_height":"2.8","f_btn_font_family":"","f_btn_font_weight":"800","f_btn_font_transform":"uppercase","f_btn_font_size":"12","f_btn_font_spacing":"1","btn_bg_h":"#000000","results_msg_color_h":"#bd0008","results_msg_padding":"5px 0 7px","btn_bg":"#e1e1e1","btn_color":"#888888","btn_color_h":"#ffffff","form_align_screen":"yes","form_offset":"6","hide_image":"yes","toggle_txt_color":"#ffffff","toggle_txt_color_h":"#929bc0","float_block":"yes","show_form":"yes","block_type":"tdb_header_search","disable_trigger":"","show_results":"yes","separator":"","disable_live_search":"","exclude_pages":"","exclude_posts":"","tdicon":"","toggle_txt":"","toggle_txt_align":"0","toggle_txt_space":"","form_offset_left":"","form_content_width":"","form_padding":"","input_placeholder":"","placeholder_travel":"0","input_padding":"","btn_text":"Search","btn_tdicon":"","btn_icon_pos":"","btn_icon_size":"","btn_icon_space":"","btn_icon_align":"0","btn_margin":"","btn_padding":"","btn_border":"","results_padding":"","results_msg_border":"","mc1_tl":"","mc1_title_tag":"","mc1_el":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_height":"","video_icon":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","vid_t_color":"","vid_t_bg_color":"","f_vid_time_font_header":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","meta_info_horiz":"content-horiz-left","meta_width":"","meta_margin":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","art_btn":"","modules_cat_border":"","modules_category_radius":"0","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_space":"","review_size":"2.5","review_distance":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","btn_title":"","btn_border_width":"","form_general_bg":"","icon_color_h":"","f_toggle_txt_font_header":"","f_toggle_txt_font_title":"Text","f_toggle_txt_font_settings":"","f_toggle_txt_font_family":"","f_toggle_txt_font_size":"","f_toggle_txt_font_line_height":"","f_toggle_txt_font_style":"","f_toggle_txt_font_weight":"","f_toggle_txt_font_transform":"","f_toggle_txt_font_spacing":"","f_toggle_txt_":"","form_bg":"","form_shadow_shadow_header":"","form_shadow_shadow_title":"Shadow","form_shadow_shadow_offset_horizontal":"","form_shadow_shadow_spread":"","input_color":"","placeholder_color":"","placeholder_opacity":"0","input_bg":"","input_border_color":"","input_shadow_shadow_header":"","input_shadow_shadow_title":"Input shadow","input_shadow_shadow_size":"","input_shadow_shadow_offset_horizontal":"","input_shadow_shadow_offset_vertical":"","input_shadow_shadow_spread":"","input_shadow_shadow_color":"","btn_icon_color":"","btn_icon_color_h":"","btn_border_color":"","btn_border_color_h":"","btn_shadow_shadow_header":"","btn_shadow_shadow_title":"Button shadow","btn_shadow_shadow_size":"","btn_shadow_shadow_offset_horizontal":"","btn_shadow_shadow_offset_vertical":"","btn_shadow_shadow_spread":"","btn_shadow_shadow_color":"","f_input_font_header":"","f_input_font_title":"Input text","f_input_font_settings":"","f_input_font_size":"","f_input_font_style":"","f_input_font_weight":"","f_input_font_transform":"","f_input_font_spacing":"","f_input_":"","f_placeholder_font_title":"Placeholder text","f_placeholder_font_settings":"","f_placeholder_font_family":"","f_placeholder_font_size":"","f_placeholder_font_line_height":"","f_placeholder_font_style":"","f_placeholder_font_weight":"","f_placeholder_font_transform":"","f_placeholder_font_spacing":"","f_placeholder_":"","f_btn_font_title":"Button text","f_btn_font_settings":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_":"","results_bg":"","results_msg_color":"","results_msg_bg":"","results_msg_border_color":"","f_results_msg_font_header":"","f_results_msg_font_title":"Text","f_results_msg_font_settings":"","f_results_msg_font_family":"","f_results_msg_font_size":"","f_results_msg_font_line_height":"","f_results_msg_font_style":"","f_results_msg_font_weight":"","f_results_msg_font_transform":"","f_results_msg_font_spacing":"","f_results_msg_":"","m_bg":"","color_overlay":"","shadow_module_shadow_header":"","shadow_module_shadow_title":"Module Shadow","shadow_module_shadow_size":"","shadow_module_shadow_offset_horizontal":"","shadow_module_shadow_offset_vertical":"","shadow_module_shadow_spread":"","shadow_module_shadow_color":"","title_txt":"","all_underline_height":"","all_underline_color":"#000","cat_bg_hover":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","shadow_meta_shadow_header":"","shadow_meta_shadow_title":"Meta info shadow","shadow_meta_shadow_size":"","shadow_meta_shadow_offset_horizontal":"","shadow_meta_shadow_offset_vertical":"","shadow_meta_shadow_spread":"","shadow_meta_shadow_color":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border_hover":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_style":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","el_class":"","block_template_id":"","td_column_number":3,"header_color":"","ajax_pagination_infinite_stop":"","offset":"","limit":"5","td_ajax_preloading":"","td_ajax_filter_type":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","ajax_pagination":"","border_top":"","css":"","class":"tdi_42","tdc_css_class":"tdi_42","tdc_css_class_style":"tdi_42_rand_style"}'; tdbSearchItem.jqueryObj = jQuery('.tdi_42'); tdbSearchItem._openSearchFormClass = 'tdb-drop-down-search-open'; tdbSearchItem._resultsLimit = '6'; tdbSearchItem.isSearchFormFull = true; tdbSearch.addItem( tdbSearchItem ); }); /* global jQuery:{} */ jQuery().ready(function () { var tdbMenuItem = new tdbMenu.item(); tdbMenuItem.blockUid = 'tdi_149'; tdbMenuItem.jqueryObj = jQuery('.tdi_149'); tdbMenuItem.isMegaMenuParentPos = true; tdbMenu.addItem(tdbMenuItem); }); </script> <script id="devco-tracking">var advads_tracking_ads = {"1":[58112,59348,58114,58116,59349,58115]};var advads_tracking_urls = {"1":"https:\/\/www.developer.com\/wp-content\/ajax-handler.php"};var advads_tracking_methods = {"1":"onrequest"};var advads_tracking_parallel = {"1":false};var advads_tracking_linkbases = {"1":"https:\/\/www.developer.com\/linkout\/"};</script><script>window.lazyLoadOptions={elements_selector:"img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}};window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue} if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue} images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1} if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script><script data-no-minify="1" async src="https://www.developer.com/wp-content/plugins/wp-rocket/assets/js/lazyload/17.5/lazyload.min.js"></script><script>function lazyLoadThumb(e){var t='<img data-lazy-src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"><noscript><img src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"></noscript>',a='<button class="play" aria-label="play Youtube video"></button>';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="ID?autoplay=1";t+=0===this.parentNode.dataset.query.length?'':'&'+this.parentNode.dataset.query;e.setAttribute("src",t.replace("ID",this.parentNode.dataset.src)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),e.setAttribute("allow", "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),this.parentNode.parentNode.replaceChild(e,this.parentNode)}document.addEventListener("DOMContentLoaded",function(){var e,t,p,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t<a.length;t++)e=document.createElement("div"),e.setAttribute("data-id",a[t].dataset.id),e.setAttribute("data-query", a[t].dataset.query),e.setAttribute("data-src", a[t].dataset.src),e.innerHTML=lazyLoadThumb(a[t].dataset.id),a[t].appendChild(e),p=e.querySelector('.play'),p.onclick=lazyLoadYoutubeIframe});</script> <noscript><link rel='stylesheet' id='wp-block-library-css' href='https://www.developer.com/wp-includes/css/dist/block-library/style.min.css?ver=6.0.2' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='ap-front-styles-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/accesspress-anonymous-post/css/frontend-style.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='ppress-frontend-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/wp-user-avatar/assets/css/frontend.min.css?ver=1652128638' type='text/css' media='all' /><link rel='stylesheet' id='ppress-flatpickr-css' href='https://www.developer.com/wp-content/plugins/wp-user-avatar/assets/flatpickr/flatpickr.min.css?ver=3.2.11' type='text/css' media='all' /><link rel='stylesheet' id='ppress-select2-css' href='https://www.developer.com/wp-content/plugins/wp-user-avatar/assets/select2/select2.min.css?ver=6.0.2' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='parent-style-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/themes/Newspaper/style.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='td-plugin-multi-purpose-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/td-composer/td-multi-purpose/style.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='td-multipurpose-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/td-composer/assets/fonts/td-multipurpose/td-multipurpose.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='font_awesome-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/td-composer/assets/fonts/font-awesome/font-awesome.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='td-theme-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/themes/Newspaper-child-developer/style.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='td-legacy-framework-front-style-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/td-composer/legacy/Newspaper/assets/css/td_legacy_main.css?ver=1652128638' type='text/css' media='all' /><link data-minify="1" rel='stylesheet' id='td-standard-pack-framework-front-style-css' href='https://www.developer.com/wp-content/cache/min/1/wp-content/plugins/td-standard-pack/Newspaper/assets/css/td_standard_pack_main.css?ver=1652128638' type='text/css' media='all' /></noscript></body> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me --><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>