
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Mon, 13 Apr 2026 15:03:14 GMT</lastBuildDate>
        <item>
            <title><![CDATA[RDP without the risk: Cloudflare's browser-based solution for secure third-party access]]></title>
            <link>https://blog.cloudflare.com/browser-based-rdp/</link>
            <pubDate>Fri, 21 Mar 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare now provides clientless, browser-based support for the Remote Desktop Protocol (RDP). It enables secure, remote Windows server access without VPNs or RDP clients. ]]></description>
            <content:encoded><![CDATA[ <p><a href="https://blog.cloudflare.com/intro-access-for-infrastructure-ssh/"><u>Short-lived SSH access</u></a> made its debut on Cloudflare’s <a href="https://www.cloudflare.com/learning/access-management/what-is-sase"><u>SASE</u></a> platform in October 2024. Leveraging the knowledge gained through the <a href="https://blog.cloudflare.com/cloudflare-acquires-bastionzero/"><u>BastionZero acquisition</u></a>, short-lived SSH access enables organizations to apply <a href="https://www.cloudflare.com/learning/security/glossary/what-is-zero-trust/">Zero Trust</a> controls in front of their Linux servers. That was just the beginning, however, as we are thrilled to announce the release of a long-requested feature: clientless, browser-based support for the <a href="https://www.cloudflare.com/learning/access-management/what-is-the-remote-desktop-protocol/"><u>Remote Desktop Protocol</u></a> (RDP). Built on top of Cloudflare’s modern proxy architecture, our RDP proxy offers a secure and performant solution that, critically, is also easy to set up, maintain, and use.</p>
    <div>
      <h3>Security challenges of RDP </h3>
      <a href="#security-challenges-of-rdp">
        
      </a>
    </div>
    <p><a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/use-cases/rdp/"><u>Remote Desktop Protocol (RDP)</u></a> was born in 1998 with <a href="https://news.microsoft.com/1998/06/16/microsoft-releases-windows-nt-server-4-0-terminal-server-edition/"><u>Windows NT 4.0 Terminal Server Edition</u></a>. If you have never heard of that Windows version, it’s because, well, there’s been 16 major Windows releases since then. Regardless, RDP is still used across thousands of organizations to enable remote access to Windows servers. It’s a bit of a strange protocol that relies on a graphical user interface to display screen captures taken in very close succession in order to emulate the interactions on the remote Windows server. (There’s more happening here beyond the screen captures, including drawing commands, bitmap updates, and even video streams. Like we said — it’s a bit strange.) Because of this complexity, RDP can be computationally demanding and poses a challenge for running at high performance over traditional <a href="https://www.cloudflare.com/learning/access-management/what-is-a-vpn/">VPNs</a>.</p><p>Beyond its quirks, RDP has also had a rather <a href="https://www.cloudflare.com/learning/access-management/rdp-security-risks/"><u>unsavory reputation</u></a> in the security industry due to early vulnerabilities with the protocol. The two main offenders are weak user sign-in credentials and unrestricted port access. Windows servers are commonly protected by passwords, which often have inadequate security to start, and worse still, may be shared across multiple accounts. This leaves these RDP servers open to brute force or credential stuffing attacks. </p><p>Bad actors have abused RDP’s default port, 3389, to carry out on-path attacks. One of the most severe RDP vulnerabilities discovered is called BlueKeep. Officially known as <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-0708"><i>CVE-2019-0708</i></a>, BlueKeep is a vulnerability that allows <a href="https://www.cloudflare.com/learning/security/what-is-remote-code-execution/">remote code execution (RCE) </a>without authentication, as long as the request adheres to a specific format and is sent to a port running RDP. Worse still, it is wormable, meaning that BlueKeep can spread to other machines within the network with no user action. Because bad actors can compromise RDP to gain unauthorized access, attackers can then <a href="https://www.cloudflare.com/learning/security/glossary/what-is-lateral-movement/">move laterally</a> within the network, escalating privileges, and installing <a href="https://www.cloudflare.com/learning/ddos/glossary/malware/">malware</a>. RDP has also been used to deploy <a href="https://www.cloudflare.com/learning/security/ransomware/what-is-ransomware/">ransomware</a> such as Ryuk, Conti, and DoppelPaymer, earning it the nickname “Ransomware Delivery Protocol.” </p><p>This is a subset of vulnerabilities in RDP’s history, but we don’t mean to be discouraging. Thankfully, due to newer versions of Windows, CVE patches, improved password hygiene, and better awareness of privileged access, many organizations have reduced their <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">attack surface</a>. However, for as many secured Windows servers that exist, there are still countless unpatched or poorly configured systems online, making them easy targets for ransomware and botnets. </p>
    <div>
      <h3>The need for a browser-based RDP solution</h3>
      <a href="#the-need-for-a-browser-based-rdp-solution">
        
      </a>
    </div>
    <p>Despite its <a href="https://www.cloudflare.com/learning/access-management/rdp-security-risks/">security risks</a>, RDP remains essential for many organizations, particularly those with distributed workforces and third-party contractors. It provides value for compute-intensive tasks that require high-powered Windows servers with CPU/GPU resources greater than users’ machines can offer. For security-focused organizations, RDP grants better visibility into who is accessing Windows servers and what actions are taken during those sessions. </p><p>Because issuing corporate devices to contractors is costly and cumbersome, many organizations adopt a bring-your-own-device (BYOD) policy. This decision instead requires organizations to provide contractors with a means to RDP to a Windows server with the necessary corporate resources to fulfill their role.</p><p>Traditional RDP requires client software on user devices, so this is not an appropriate solution for contractors (or any employees) using personal machines or unmanaged devices. Previously, Cloudflare customers had to rely on self-hosted third-party tools like <a href="https://guacamole.apache.org/"><u>Apache Guacamole</u></a> or <a href="https://devolutions.net/gateway/"><u>Devolutions Gateway</u></a> to enable browser-based RDP access. This created several operational pain points:</p><ul><li><p><b>Infrastructure complexity:</b> Deploying and maintaining RDP gateways increases operational overhead.</p></li><li><p><b>Maintenance burden:</b> Commercial and open-source tools may require frequent updates and patches, sometimes even necessitating custom forks.</p></li><li><p><b>Compliance challenges:</b> Third-party software requires additional security audits and risk management assessments, particularly for regulated industries.</p></li><li><p><b>Redundancy, but not the good kind</b> - Customers come to Cloudflare to reduce the complexity of maintaining their infrastructure, <i>not add to it</i>.</p></li></ul><p>We’ve been listening. Cloudflare has architectured a high-performance RDP proxy that leverages the modern security controls already part of our <a href="https://www.cloudflare.com/learning/access-management/what-is-ztna/"><u>Zero Trust Network Access (ZTNA)</u></a> service. We feel that the “security/performance tradeoff” the industry commonly touts is a dated mindset. With the right underlying network architecture, we can help mitigate RDP’s most infamous challenges.</p>
    <div>
      <h3>Introducing browser-based RDP with Access</h3>
      <a href="#introducing-browser-based-rdp-with-access">
        
      </a>
    </div>
    <p>Cloudflare's browser-based RDP solution is the newest addition to <a href="https://www.cloudflare.com/zero-trust/products/access/"><u>Cloudflare Access</u></a> alongside existing <a href="https://developers.cloudflare.com/cloudflare-one/applications/non-http/browser-rendering/"><u>clientless SSH and VNC offerings</u></a>, enabling secure, remote Windows server access without VPNs or RDP clients. Built natively within Cloudflare’s global network, it requires no additional infrastructure.</p><p>Our browser-based RDP access combines the power of self-hosted Access applications with the additional flexibility of <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/use-cases/ssh/ssh-infrastructure-access/#4-add-a-target">targets</a>, introduced with <a href="https://developers.cloudflare.com/cloudflare-one/applications/non-http/infrastructure-apps/"><u>Access for Infrastructure</u></a>. Administrators can enforce:</p><ul><li><p><b>Authentication</b>: Control how users authenticate to your internal RDP resources with <a href="https://www.cloudflare.com/learning/access-management/what-is-sso/">SSO</a>, <a href="https://www.cloudflare.com/learning/access-management/what-is-multi-factor-authentication/">MFA</a>, and device posture.</p></li><li><p><b>Authorization:</b> Use <a href="https://www.cloudflare.com/learning/access-management/what-is-access-control/">policy-based access control </a>to determine who can access what target and when. </p></li><li><p><b>Auditing:</b> Provide Access logs to support regulatory compliance and visibility in the event of a security breach.</p></li></ul><p>Users only need a web browser — no native RDP client is necessary! RDP servers are accessed through our app connector, <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/"><u>Cloudflare Tunnel</u></a>, using a common deployment model of existing Access customers. There is no need to provision user devices to access particular RDP servers, making for minimal setup to adopt this new functionality.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6vAxzxVY1RXc0batsTEdfn/23322d79ac68cfa0da698bdb2113db2c/unnamed__4_.png" />
          </figure>
    <div>
      <h4>How it works</h4>
      <a href="#how-it-works">
        
      </a>
    </div>
    
    <div>
      <h5>The client</h5>
      <a href="#the-client">
        
      </a>
    </div>
    <p>Cloudflare’s implementation leverages <a href="https://github.com/Devolutions/IronRDP"><u>IronRDP</u></a>, a high-performance RDP client that runs in the browser. It was selected because it is a modern, well-maintained, RDP client implementation that offers an efficient and responsive experience. Unlike Java-based Apache Guacamole, another popular RDP client implementation, IronRDP is built with Rust and integrates very well with Cloudflare’s development ecosystem.</p><p>While selecting the right tools can make all the difference, using a browser to facilitate an RDP session faces some challenges. From a practical perspective, browsers just can't send RDP messages. RDP relies directly on the Layer 4 Transmission Control Protocol (TCP) for communication, and while browsers can use TCP as the underlying protocol, they do not expose APIs that would let apps build protocol support directly on raw TCP sockets.</p><p>Another challenge is rooted in a security consideration: the username and password authentication mechanism that is native to RDP leaves a lot to be desired in the modern world of Zero Trust.</p><p>In order to tackle both of these challenges, the IronRDP client encapsulates the RDP session in a WebSocket connection. Wrapping the Layer 4 TCP traffic in HTTPS enables the client to use native browser APIs to communicate with Cloudflare’s RDP proxy. Additionally, it enables Cloudflare Access to secure the entire session using identity-aware policies. By attaching a Cloudflare Access authorization JSON Web Token (JWT) via cookie to the WebSocket connection, every inter-service hop of the RDP session is verified to be coming from the authenticated user.  </p><p>A brief aside into how security and performance is optimized: in conventional client-based RDP traffic, the client and server negotiate a <a href="https://www.cloudflare.com/learning/ssl/transport-layer-security-tls/">TLS</a> connection to secure and verify the session. However, because the browser WebSocket connection is already secured with TLS to Cloudflare, we employ IronRDP’s RDCleanPath protocol extension to eliminate this second encapsulation of traffic. Removing this redundancy avoids unnecessary performance degradation and increased complexity during session handshakes.</p>
    <div>
      <h5>The server</h5>
      <a href="#the-server">
        
      </a>
    </div>
    <p>The IronRDP client initiates a WebSocket connection to a dedicated WebSocket proxy, which is responsible for authenticating the client, terminating the WebSocket connection, and proxying tunneled RDP traffic deeper into Cloudflare’s infrastructure to facilitate connectivity. The seemingly simple task of determining how this WebSocket proxy should be built turned out to be the most challenging<b> </b>decision in the development process. </p><p>Our initial proposal was to develop a new service that would run on every server within our network. While this was feasible, operating a new service would introduce a non-trivial maintenance burden, which ultimately turned out to be more overhead than value-add in this case. The next proposal was to build it into <a href="https://blog.cloudflare.com/upgrading-one-of-the-oldest-components-in-cloudflare-software-stack/"><u>Front Line</u></a> (FL), one of Cloudflare’s oldest services that is responsible for handling tens of millions of HTTP requests per second. This approach would have sidestepped the need to expose new IP addresses and benefitted from the existing scaffolding to let the team move quickly. Despite being promising at first, this approach was decided against because FL is undergoing significant investment, and the team didn't want to build on shifting sands.</p><p>Finally, we identified a solution that implements the proxy service using <a href="https://workers.cloudflare.com/"><u>Cloudflare Workers</u></a>! Fortunately, Workers automatically scales to massive request rates, which eliminates some of the groundwork we’d lay if we had chosen to build a new service. Candidly, this approach was not initially preferred due to some ambiguities around how Workers communicates with internal Cloudflare services, but with support from the Workers team, we found a path forward. </p><p>From the WebSocket proxy Worker, the tunneled RDP connection is sent to the Apollo service, which is responsible for routing traffic between on-ramps and off-ramps for <a href="https://www.cloudflare.com/zero-trust/">Cloudflare Zero Trust</a>. Apollo centralizes and abstracts these complexities to let other services focus on application-specific functionality. Apollo determines which Cloudflare colo is closest to the target Cloudflare Tunnel and establishes a connection to an identical Apollo instance running in that colo. The egressing Apollo instance can then facilitate the final connection to the Cloudflare Tunnel. By using Cloudflare's global network to traverse the distance between the ingress colo and the target Cloudflare Tunnel, network disruptions and congestion is managed.</p><p>Apollo connects to the RDP server and passes the ingress and egress connections to <a href="https://blog.cloudflare.com/from-ip-packets-to-http-the-many-faces-of-our-oxy-framework/"><u>Oxy</u></a>-teams, the service responsible for inspecting and proxying the RDP traffic. It functions as a pass-through (strictly enabling traffic connectivity) as the web client authenticates to the RDP server. Our initial release makes use of <a href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/ntlm-overview"><u>NT Lan Manager (NTLM)</u></a> authentication, a challenge-response authentication protocol requiring username and password entry. Once the client has authenticated with the server, Oxy-teams is able to proxy all subsequent RDP traffic!</p><p>This may sound like a lot of hops, but every server in our network runs every service. So believe it or not, this complex dance takes place on a single server and by using UNIX domain sockets for communication, we also minimize any performance impact. If any of these servers become overloaded, experience a network fault, or have a hardware problem, the load is automatically shifted to a neighboring server with the help of <a href="https://blog.cloudflare.com/unimog-cloudflares-edge-load-balancer/"><u>Unimog</u></a>, Cloudflare’s L4 load balancer.</p>
    <div>
      <h4>Putting it all together</h4>
      <a href="#putting-it-all-together">
        
      </a>
    </div>
    <ol><li><p><b>User initiation:</b> The user selects an RDP server from Cloudflare’s <a href="https://developers.cloudflare.com/cloudflare-one/applications/app-launcher/"><u>App Launcher</u></a> (or accesses it via a direct URL). Each RDP server is associated with a public hostname secured by Cloudflare. </p></li><li><p><b>Ingress:</b> This request is received by the closest data center within <a href="https://www.cloudflare.com/network/"><u>Cloudflare’s network</u></a>. </p></li><li><p><b>Authentication:</b> Cloudflare Access authenticates the session by validating that the request contains a valid JWT. This token certifies that the user is authorized to access the selected RDP server through the specified domain.</p></li><li><p><b>Web client delivery:</b> <a href="https://developers.cloudflare.com/workers/"><u>Cloudflare Workers</u></a> serves the IronRDP web client to the user’s browser.</p></li><li><p><b>Secure tunneling:</b> The client tunnels RDP traffic from the user’s browser over a TLS-secured WebSocket to another Cloudflare Worker. </p></li><li><p><b>Traffic routing:</b> The Worker that receives the IronRDP connection terminates the WebSocket and initiates a connection to <a href="https://blog.cloudflare.com/extending-local-traffic-management-load-balancing-to-layer-4-with-spectrum/#how-we-enabled-spectrum-to-support-private-networks"><u>Apollo</u></a>. From there, Apollo creates a connection to the RDP server.</p></li><li><p><b>Authentication relay:</b> With a connection established, Apollo relays RDP authentication messages between the web client and the RDP server. </p></li><li><p><b>Connection establishment:</b> Upon successful authentication, Cloudflare serves as an RDP proxy between the web browser and the RDP server, connecting the user to the RDP server with free-flowing traffic. </p></li><li><p><b>Policy enforcement:</b> Cloudflare's secure web gateway, <a href="https://blog.cloudflare.com/from-ip-packets-to-http-the-many-faces-of-our-oxy-framework/"><u>Oxy</u></a>-teams, applies Layer 4 policy enforcement and logging of the RDP traffic. </p></li></ol>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2wWryOYY69cHw5cDmQHAqi/cb40a492b1e194cd572018eb4a5792ba/3.png" />
          </figure><p>Key benefits of this architecture:</p><ul><li><p><b>No additional software:</b> Access Windows servers directly from a browser.</p></li><li><p><b>Low latency:</b> Cloudflare’s global network minimizes performance overhead.</p></li><li><p><b>Enhanced security:</b> RDP access is protected by Access policies, preventing lateral movement.</p></li><li><p><b>Integrated logging and monitoring:</b> Administrators can observe and control RDP traffic.</p></li></ul><p>To learn more about Cloudflare's proxy capabilities, take a look at our <a href="https://blog.cloudflare.com/introducing-oxy/"><u>related blog post</u></a> explaining our proxy framework.</p>
    <div>
      <h3>Selective, modern RDP authentication</h3>
      <a href="#selective-modern-rdp-authentication">
        
      </a>
    </div>
    <p>Cloudflare’s browser-based RDP solution exclusively supports modern RDP authentication mechanisms, enforcing best practices for secure access. Our architecture ensures that RDP traffic using outdated or weak legacy security features from older versions of the RDP standard, such as unsecured password-based authentication or RC4 encryption, are never allowed to reach customer endpoints.</p><p>Cloudflare supports secure session negotiation using the following principles:</p><ol><li><p>TLS-based WebSocket connection for transport security.</p></li><li><p>Fine-grained policies that enforce single sign on (SSO), multi-factor authentication (MFA), and dynamic authorization.</p></li><li><p>Integration with enterprise identity providers via SAML (Security Assertion Markup Language) and OIDC (OpenID Connect).</p></li></ol><p>Every RDP session that passes through Cloudflare’s network is encrypted and authenticated.</p>
    <div>
      <h4>What’s next? </h4>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>This is only the beginning for our browser-based RDP solution! We have already identified a few areas for continued focus:</p><ul><li><p><b>Enhanced visibility and control for administrators:</b> Because RDP traffic passes through Cloudflare Workers and proxy services, browser-based RDP will expand to include session monitoring. We are also evaluating <a href="https://www.cloudflare.com/learning/access-management/what-is-dlp/">data loss prevention (DLP) </a>support, such as restricting actions like file transfers and clipboard use, to prevent unauthorized <a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">data exfiltration</a> without compromising performance. </p></li><li><p><b>Advanced authentication:</b> Long-lived credentials are a thing of the past. Future iterations of browser-based RDP will include <a href="https://www.cloudflare.com/learning/security/threats/what-is-passwordless-authentication/">passwordless</a> functionality, eliminating the need for end users to remember passwords and administrators from having to manage them. To that end, we are evaluating methods such as client certificate authentication, passkeys and smart cards, and integration with third-party authentication providers via Access.</p></li></ul>
    <div>
      <h5>Compliance and FedRAMP High certification</h5>
      <a href="#compliance-and-fedramp-high-certification">
        
      </a>
    </div>
    <p>We plan to include browser-based RDP in our <a href="https://www.cloudflare.com/learning/privacy/what-is-fedramp/">FedRAMP</a> High offering for enterprise and government organizations, a high-priority initiative <a href="https://blog.cloudflare.com/cloudflares-commitment-to-advancing-public-sector-security-worldwide/"><u>we announced in early February</u></a>. This certification will validate that our solution meets the highest standards for:</p><ul><li><p><b>Data protection</b></p></li><li><p><b>Identity and access management</b></p></li><li><p><b>Continuous monitoring</b></p></li><li><p><b>Incident response</b></p></li></ul><p>Seeking FedRAMP High compliance demonstrates Cloudflare’s commitment to securing sensitive environments, such as those in the <a href="https://www.cloudflare.com/public-sector/">federal government</a>, <a href="https://www.cloudflare.com/healthcare/">healthcare</a>, and <a href="https://www.cloudflare.com/banking-and-financial-services/">financial</a> sectors.</p><p>By enforcing a modern, opinionated, and secure implementation of RDP, Cloudflare provides a secure, scalable, and compliant solution tailored to the needs of organizations with critical security and compliance mandates.</p>
    <div>
      <h3>Get started today</h3>
      <a href="#get-started-today">
        
      </a>
    </div>
    <p>At Cloudflare, we are committed to providing the most comprehensive solution for ZTNA, which now also includes privileged access to sensitive infrastructure like Windows servers over browser-based RDP. Cloudflare’s browser-based RDP solution is in closed beta with new customers being onboarded each week. You can <a href="http://www.cloudflare.com/lp/browser-based-rdp-beta"><u>request access here</u></a> to try out this exciting new feature.</p><p>In the meantime, check out our<a href="https://developers.cloudflare.com/cloudflare-one/applications/non-http/infrastructure-apps/"> <u>Access for Infrastructure</u></a> documentation to learn more about how Cloudflare protects privileged access to sensitive infrastructure. Access for Infrastructure is currently <a href="https://dash.cloudflare.com/sign-up/teams"><u>available free</u></a> to teams of under 50 users, and at no extra cost to existing pay-as-you-go and Contract plan customers through an Access or Zero Trust subscription. Stay tuned as we continue to natively rebuild BastionZero’s technology into Cloudflare’s Access for Infrastructure service!</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Acquisitions]]></category>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Cloudflare One]]></category>
            <category><![CDATA[Clientless]]></category>
            <category><![CDATA[Remote Work]]></category>
            <category><![CDATA[VDI]]></category>
            <category><![CDATA[Remote Desktop Protocol ]]></category>
            <guid isPermaLink="false">2P5rqqGRcQQFywmNmp85oM</guid>
            <dc:creator>Ann Ming Samborski</dc:creator>
            <dc:creator>Gabriel Bauman</dc:creator>
            <dc:creator>Athanasios Filippidis</dc:creator>
            <dc:creator>Mike Borkenstein</dc:creator>
        </item>
        <item>
            <title><![CDATA[A Virtual Product Management Internship Experience]]></title>
            <link>https://blog.cloudflare.com/a-virtual-product-management-internship-experience/</link>
            <pubDate>Thu, 22 Oct 2020 13:14:13 GMT</pubDate>
            <description><![CDATA[ In July 2020, I joined Cloudflare as a Product Management Intern on the DDoS (Distributed Denial of Service) team to enhance the benefits that Network Analytics brings to our customers. This is my experience. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4OZCmdrIc4ErHopxf2lYxe/ae37e9a13146ee4f946377f9868bd241/image3-23.png" />
            
            </figure><p>In July 2020, I joined Cloudflare as a Product Management Intern on the DDoS (Distributed Denial of Service) team to enhance the benefits that <a href="https://support.cloudflare.com/hc/en-us/articles/360038696631-Understanding-Cloudflare-Network-Analytics">Network Analytics</a> brings to our customers. In the following, I am excited to share with you my experience with remote working as an intern, and how I acclimatized into Cloudflare. I also give details about what my work entailed and how we approached the process of Product Management.</p>
    <div>
      <h3>Onboarding to Cloudflare during COVID19</h3>
      <a href="#onboarding-to-cloudflare-during-covid19">
        
      </a>
    </div>
    <p>As a long-time user of Cloudflare’s <a href="https://www.cloudflare.com/application-services/products/cdn/">Free CDN plan</a> myself, I was thrilled to join the company and learn what was happening behind the scenes while making its products. The entering internship class consisted of students and recent graduates from various backgrounds around the world - all with a mutual passion in helping build a better Internet.</p><p>The catch here was that 2020 would make the experience of being an intern very different. As it was the case with many other fellow interns, it was the first time I had taken up work remotely from scratch. The initial challenge was to integrate into the working environment without ever meeting colleagues in a physical office. Because everything took place online, it was much harder to pick up non-verbal cues that play a key role in communication, such as eye contact and body language.</p><p>To face this challenge, Cloudflare introduced creative and active ways in which we could better interact with one another. From the very first day, I was welcomed to an abundance of knowledge sharing talks and coffee chats with new and existing colleagues in different offices across the world. Whether it was data protection from the Legal team or going serverless with <a href="/introducing-cloudflare-workers/">Workers</a>, we were welcomed to afternoon seminars every week on a new area that was being pursued within Cloudflare.</p><p>Cloudflare not only retained the summer internship scheme, but in fact <a href="/cloudflare-doubling-size-of-2020-summer-intern-class/">doubled the size of the class</a>; this reinforced an optimistic mood within the entering class and a sense of personal responsibility. I was paired up with a mentor, a buddy, and a manager who helped me find my way quickly within Cloudflare, and without which my experience would not have been the same. Thanks to Omer, Pat, Val and countless others for all your incredible support!</p><p>Social interactions took various forms and were scheduled for all global time zones. I was invited to weekly virtual yoga sessions and intern meetups to network and discover what other interns across the world were working on. We got to virtually mingle at an “Intern Mixer” where we shared answers to philosophical prompts – what’s more, this was accompanied by an UberEats coupon for us to enjoy refreshments in our work-from-home setting. We also had Pub Quizzes with colleagues in the EMEA region to brush up on our trivia skills. At this uncertain time of the year, part of which I spent in complete self-isolation, these gatherings helped create a sense of belonging within the community, as well as an affinity towards the colleagues I interacted with.</p>
    <div>
      <h3>Product Management at Cloudflare</h3>
      <a href="#product-management-at-cloudflare">
        
      </a>
    </div>
    <p>My internship also offered a unique learning experience from the Product Management perspective. I took on the task of increasing the value of Network Analytics by giving customers and internal stakeholders improved  transparency in the traffic patterns and attacks taking place. Network Analytics is Cloudflare’s packet- and bit-oriented dashboard that provides visibility into network- and transport-layer attacks which are mitigated across the world. Among various updates I led in visibility features is the new trends insights. During this time the dashboard was also extended to Enterprise customers on the Spectrum service, Cloudflare's L4 reverse-proxy that provides DDoS protection against attacks and facilitates network performance.</p><p>I was at the intersection of multiple teams that contributed to Network Analytics from different angles, including user interface, UX research, product design, product content and backend engineering, among many others. The key to a successful delivery of Network Analytics as a product, given its interdisciplinary nature, meant that I actively facilitated communication and collaboration across experts in these teams as well as reflected the needs of the users.</p><p>I spent the first month of the internship approaching internal stakeholders, namely Customer Support engineers, Solutions Engineers, Customer Success Managers, and Product Managers, to better understand the common pain points. Given their past experience with customers, their insights revealed how Network Analytics could both leverage the existing visibility features to reduce overhead costs on the internal support side and empower users with actionable insights. This process also helped ensure that I didn’t reinvent wheels that had already been explored by existing Product Managers.</p><p>I then approached customers to enquire about desired areas for improvements. An example of such a desired improvement was that the display of data in the dashboard was not helping users infer any meaning regarding next steps. It did not answer questions like: <i>What do these numbers represent in retrospect, and should I be concerned?</i> Discussing these aspects helped validate the needs, and we subsequently came up with rough solutions to address them, such as dynamic trends view. Over the calls, we confirmed that - especially from those who rarely accessed the dashboard - having an overview of these numbers in the form of a trends card would incentivize users to log in more often and get more value from the product.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/qtBZ848J955Zun2u6bOlk/beed9aafb05567aef5291444200d0a8e/image2-22.png" />
            
            </figure><p><i>Trends Insights</i></p><p>The 1:1 dialogues were incredibly helpful in understanding how Network Analytics could be more effectively utilized, and guided ways for us to better surface the performance of our DDoS mitigation tools to our customers. In the first few weeks of the internship, I shadowed customer calls of other products; this helped me gain the confidence, knowledge, and language appropriate in Cloudflare’s user research. I did a run-through of the interview questions with a UX Researcher, and was informed on the procedure for getting in touch with appropriate customers. We even had bilingual calls where the Customer Success Manager helped translate the dialogues real-time.</p><p>In the following weeks, I synthesized these findings into a Product Requirements Document and lined up the features according to quarterly goals that could now be addressed in collaboration with other teams. After a formal review and discussion with Product Managers, engineers, and designers, we developed and rolled out each feature to the customers on a bi-weekly basis. We always welcomed feedback before and after the feature releases, as the goal wasn’t to have an ultimate final product, but to deliver incremental enhancements to meet the evolving needs of our customers.</p><p>Of course, all my interactions, including customer and internal stakeholder calls, were all held remotely. We all embraced video conferencing and instant chat messengers to make it feel as though we were physically close. I had weekly check-ins with various colleagues including my managers, Network Analytics team, DDoS engineering team, and DDoS reports team, to ensure that things were on track. For me, the key to working remotely was the instant chat function, which was not as intrusive as a fully fledged meeting, but a quick and considerate way to communicate in a tightly-knit team.</p>
    <div>
      <h3>Looking Back</h3>
      <a href="#looking-back">
        
      </a>
    </div>
    <p>Product Management is a growth process - both for the corresponding individual and the product. As an individual, you grow fast through creative thinking, problem solving and incessant curiosity to better understand a product in the shoes of a customer. At the same time, the product continues to evolve and grow as a result of synergy between experts from diverse fields and customer feedback. Products are used and experienced by people, so it is a no-brainer that maintaining constant and direct feedback from our customers and internal stakeholders are what bolsters their quality.</p><p>It was an incredible opportunity to have been a part of an organization that represents one of the largest networks. Network Analytics is a window into the efforts led by Cloudflare engineers and technicians to help secure the Internet, and we are ambitious to scale the transparency across further mitigation systems in the future.</p><p>The internship was a successful immersive experience into the world of Network Analytics and Product Management, even in the face of a pandemic. Owing to Cloudflare’s flexibility and ready access to resources for remote work, I was able to adapt to the work environment from the first day onwards and gain an authentic learning experience into how products work. As I now return to university, I look back on an internship that significantly added to my personal and professional growth. I am happy to leave behind the latest evolution of Network Analytics dashboard with hopefully many more to come. Thanks to Cloudflare and all my colleagues for making this possible!</p> ]]></content:encoded>
            <category><![CDATA[DDoS]]></category>
            <category><![CDATA[Internship Experience]]></category>
            <category><![CDATA[COVID-19]]></category>
            <category><![CDATA[Life at Cloudflare]]></category>
            <category><![CDATA[Remote Work]]></category>
            <guid isPermaLink="false">5nI50COzf0WeYTIbvVUhax</guid>
            <dc:creator>Selina Cho</dc:creator>
        </item>
        <item>
            <title><![CDATA[How Argo Tunnel engineering uses Argo Tunnel]]></title>
            <link>https://blog.cloudflare.com/how-argo-tunnel-engineering-uses-argo-tunnel/</link>
            <pubDate>Thu, 27 Aug 2020 11:00:00 GMT</pubDate>
            <description><![CDATA[ Argo Tunnel provides remote access to development environments by creating secure outbound-only connections to Cloudflare’s edge network from a resource exposing it to the Internet. That model helps protect servers and resources from being vulnerable to attack by an exposed IP address.  ]]></description>
            <content:encoded><![CDATA[ <p>Whether you are managing a fleet of machines or sharing a private site from your localhost, Argo Tunnel is here to help. On the Argo Tunnel team we help make origins accessible from the Internet in a secure and seamless manner. We also care deeply about productivity and developer experience for the team, so naturally we want to make sure we have a development environment that is reliable, easy to set up and fast to iterate on.</p>
    <div>
      <h2>A brief history of our development environment (dev-stack)</h2>
      <a href="#a-brief-history-of-our-development-environment-dev-stack">
        
      </a>
    </div>
    
    <div>
      <h3>Docker compose</h3>
      <a href="#docker-compose">
        
      </a>
    </div>
    <p>When our development team was still small, we used a docker-compose file to orchestrate the services needed to develop Argo Tunnel. There was no native support for hot reload, so every time an engineer made a change, they had to restart their dev-stack.</p><p>We could hack around it to hot reload with docker-compose, but when that failed, we had to waste time debugging the internals of Docker. As the team grew, we realized we needed to invest in improving our dev stack.</p><p>At the same time Cloudflare was in the process of migrating from Marathon to kubernetes (k8s). We set out to find a tool that could detect changes in source code and automatically upgrade pods with new images.</p>
    <div>
      <h3>Skaffold + Minikube</h3>
      <a href="#skaffold-minikube">
        
      </a>
    </div>
    <p>Initially <a href="https://skaffold.dev/docs/quickstart/">Skaffold</a> seemed to match the criteria. It watches for change in source code, builds new images and deploys applications onto any k8s. Following Skaffold’s tutorial, we picked minikube as the local k8s, but together they didn’t meet our expectations. Port forwarding wasn’t stable, we got frequent connections refused or timeout.</p><p>In addition, iteration time didn’t improve, because spinning up minikube takes a long time and it doesn’t use the host's docker registry and so it can’t take advantage of caching. At this point we considered reverting back to using docker compose, but the k8s ecosystem is booming, so we did some more research.</p>
    <div>
      <h3>Tilt + Docker for mac k8s</h3>
      <a href="#tilt-docker-for-mac-k8s">
        
      </a>
    </div>
    <p>Eventually we found a great <a href="https://docs.tilt.dev/choosing_clusters.html">blog post</a> from Tilt comparing different options for local k8s, and they seem to be solving the exact problem we are having. Tilt is a tool that makes local development on k8s easier. It detects changes in local sources and updates your deployment accordingly.</p><p>In addition, it supports live updates without having to rebuild containers, a process that used to take around 20 minutes. With live updates, we can copy the newest source into the container, run <code>cargo build</code> within the container, and restart the service without building a new image. Following Tilt’s blog post, we switched to Docker for Mac’s built-in k8s. Combining Tilt and Docker for Mac k8s, we finally have a development environment that meets our needs.</p><p>Rust services that could take 20 minutes to rebuild now take less than a minute.</p>
    <div>
      <h2>Collaborating with a distributed team</h2>
      <a href="#collaborating-with-a-distributed-team">
        
      </a>
    </div>
    <p>We reached a much happier state with our dev-stack, but one problem remained: we needed a way to share it. As our teams became distributed with people in Austin, Lisbon and Seattle, we needed better ways to help each other.</p><p>One day, I was helping our newest member understand an error observed in <code>cloudflared</code>, Argo Tunnel’s command line interface (CLI) client. I knew the error could either originate from the backend service or a mock API gateway service, but I couldn’t tell for sure without looking at logs.</p><p>To get them, I had to ask our new teammate to manually send me the logs of the two services. By the time I discovered the source of the error, reviewed the deployment manifest, and determined the error was caused by a secret set as an empty string, two full hours had elapsed!</p><p>I could have solved this in minutes if I had remote access to her development environment. That’s exactly what Argo Tunnel can do! Argo Tunnel provides remote access to development environments by creating secure outbound-only connections to Cloudflare’s edge network from a resource exposing it to the Internet. That model helps protect servers and resources from being vulnerable to attack by an exposed IP address.</p><p>I can use Argo Tunnel to expose a remote dev environment, but the information stored is sensitive. Once exposed, we needed a way to prevent users from reaching it unless they are an authenticated member of my team. Cloudflare Access solves that challenge. Access sits in front of the hostname powered by Argo Tunnel and checks for identity on every request. I can combine both services to share the dev-stack details with the rest of the team in a secure deployment.</p><p>The built-in k8s dashboard gives a great overview of the dev-stack, with the list of pods, deployments, services, config maps, secrets, etc. It also allows us to inspect pod logs and exec into a container. By default, it is secured by a token that changes every time the service restarts. To avoid the hassle of distributing the service token to everyone on the team, we wrote a simple reverse proxy that injects the service token in the authorization header before forwarding requests to the dashboard service.</p><p>Then we run Argo Tunnel as a sidecar to this reverse proxy, so it is accessible from the Internet. Finally, to make sure no random person can see our dashboard, we put an Access policy that only allows team members to access the hostname.</p><p>The request flow is eyeball -&gt; Access -&gt; Argo Tunnel -&gt; reverse proxy -&gt; dashboard service</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5WXj2BDFGXX2TzlcH5b5y0/6ec84bb848e272a0619d39eb468988dc/image5-3.png" />
            
            </figure>
    <div>
      <h2>Working example</h2>
      <a href="#working-example">
        
      </a>
    </div>
    <p>Your team can use the same model to develop remotely. Here’s how to get started.</p><ol><li><p>Start a local k8s cluster. <a href="https://docs.tilt.dev/choosing_clusters.html">https://docs.tilt.dev/choosing_clusters.html</a> offers great advice in choosing a local cluster based on your OS and experience with k8s</p></li></ol>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3MAKtp7Q2gNCiC4o60KyaX/1455eca1f8f75c44a040632988503f5a/image3-7.png" />
            
            </figure><p>2. Enable dashboard service:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1aiXLesCpLni724ZNznPkp/411535dcd0afab9a76ce5563ee63ac3d/image2-8.png" />
            
            </figure><p>3. Create a reverse proxy that will inject the service token of the kubernetes-dashboard service account in the Authorization header before forwarding requests to kubernetes dashboard service</p>
            <pre><code>package main
 
import (
   "crypto/tls"
   "fmt"
   "net/http"
   "net/http/httputil"
   "net/url"
   "os"
)
 
func main() {
   config, err := loadConfigFromEnv()
   if err != nil {
       panic(err)
   }
   reverseProxy := httputil.NewSingleHostReverseProxy(config.proxyURL)
   // The default Director builds the request URL. We want our custom Director to add Authorization, in
   // addition to building the URL
   singleHostDirector := reverseProxy.Director
   reverseProxy.Director = func(r *http.Request) {
       singleHostDirector(r)
       r.Header.Add("Authorization", fmt.Sprintf("Bearer %s", config.token))
       fmt.Println("request header", r.Header)
       fmt.Println("request host", r.Host)
       fmt.Println("request ULR", r.URL)
   }
   reverseProxy.Transport = &amp;http.Transport{
       TLSClientConfig: &amp;tls.Config{
           InsecureSkipVerify: true,
       },
   }
   server := http.Server{
       Addr:    config.listenAddr,
       Handler: reverseProxy,
   }
   server.ListenAndServe()
}
 
type config struct {
   listenAddr string
   proxyURL   *url.URL
   token      string
}
 
func loadConfigFromEnv() (*config, error) {
   listenAddr, err := requireEnv("LISTEN_ADDRESS")
   if err != nil {
       return nil, err
   }
   proxyURLStr, err := requireEnv("DASHBOARD_PROXY_URL")
   if err != nil {
       return nil, err
   }
   proxyURL, err := url.Parse(proxyURLStr)
   if err != nil {
       return nil, err
   }
   token, err := requireEnv("DASHBOARD_TOKEN")
   if err != nil {
       return nil, err
   }
   return &amp;config{
       listenAddr: listenAddr,
       proxyURL:   proxyURL,
       token:      token,
   }, nil
}
 
func requireEnv(key string) (string, error) {
   result := os.Getenv(key)
   if result == "" {
       return "", fmt.Errorf("%v not provided", key)
   }
   return result, nil
}
</code></pre>
            <p>4. Create an Argo Tunnel sidecar to expose this reverse proxy</p>
            <pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
 name: dashboard-auth-proxy
 namespace: kubernetes-dashboard
 labels:
   app: dashboard-auth-proxy
spec:
 replicas: 1
 selector:
   matchLabels:
     app: dashboard-auth-proxy
 template:
   metadata:
     labels:
       app: dashboard-auth-proxy
   spec:
     containers:
       - name: dashboard-tunnel
         # Image from https://hub.docker.com/r/cloudflare/cloudflared
         image: cloudflare/cloudflared:2020.8.0
         command: ["cloudflared", "tunnel"]
         ports:
           - containerPort: 5000
         env:
           - name: TUNNEL_URL
             value: "http://localhost:8000"
           - name: NO_AUTOUPDATE
             value: "true"
           - name: TUNNEL_METRICS
             value: "localhost:5000"
       # dashboard-proxy is a proxy that injects the dashboard token into Authorization header before forwarding
       # the request to dashboard_proxy service
       - name: dashboard-auth-proxy
         image: dashboard-auth-proxy
         ports:
           - containerPort: 8000
         env:
           - name: LISTEN_ADDRESS
             value: localhost:8000
           - name: DASHBOARD_PROXY_URL
             value: https://kubernetes-dashboard
           - name: DASHBOARD_TOKEN
             valueFrom:
               secretKeyRef:
                 name: ${TOKEN_NAME}
                 key: token</code></pre>
            <p>5. Find out the URL to access your dashboard from Tilt’s UI</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3aubLRXDHG7YRQDWir8wYd/216a31d185d112b6997b4a0c59ec4359/image1-17.png" />
            
            </figure><p>6. Share the URL with your collaborators so they can access your dashboard anywhere they are through the tunnel!</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/61Z1uIFPgr41mOw524Z0tC/ac3cf2116f14d74394b173061f834808/image4-7.png" />
            
            </figure><p>You can find the source code for the example in <a href="https://github.com/cloudflare/argo-tunnel-examples/tree/master/sharing-k8s-dashboard">https://github.com/cloudflare/argo-tunnel-examples/tree/master/sharing-k8s-dashboard</a></p><p>If this sounds like a team you want to be on, we are <a href="https://www.cloudflare.com/careers/">hiring</a>!</p> ]]></content:encoded>
            <category><![CDATA[Cloudflare Access]]></category>
            <category><![CDATA[Remote Work]]></category>
            <category><![CDATA[Cloudflare Zero Trust]]></category>
            <category><![CDATA[Cloudflare Tunnel]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <guid isPermaLink="false">2Qn6wupi9o8CewrHpyEz6</guid>
            <dc:creator>Chung-Ting Huang</dc:creator>
        </item>
        <item>
            <title><![CDATA[Virtual Interning Offers Unique Challenges and Opportunities]]></title>
            <link>https://blog.cloudflare.com/virtual-interning-offers-unique-challenges-and-opportunities/</link>
            <pubDate>Wed, 17 Jun 2020 07:44:16 GMT</pubDate>
            <description><![CDATA[ The working world has drastically changed in the past few months. Navigating this new reality as an intern can bring some unique challenges to light. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>I am in my third year at Northeastern University, pursuing an undergraduate degree in Marketing and Psychology. Five months ago I joined Cloudflare as an intern on the APAC Marketing team in the beautiful Singapore office. When searching for internships Cloudflare stood out as a place I could gain skills in marketing, learn from amazing mentors, and have space to take ownership in projects. As a young, but well-established company, Cloudflare provides the resources for their interns to work cross functionally and creatively and truly be a part of the exponential growth of the company.</p>
    <div>
      <h3>My experience at Cloudflare</h3>
      <a href="#my-experience-at-cloudflare">
        
      </a>
    </div>
    <p>Earlier this week, I hopped on a virtual meeting with a few coworkers, thinking everything was set to record a webinar. As I shared my screen to explain how to navigate the platform I realised the set up was incorrect and we couldn’t start on time. Due to the virtual nature of the meeting, my coworkers didn’t see the panic on my face and had no idea what was going on. I corrected the issue and set up an additional trial run session, issuing apologies to both coworkers. They both took it in stride and expressed that it happens to the best of us. At Cloudflare, everyone is understanding of hiccups and encourages me to find a solution. This understanding attitude has allowed me to reach out of my comfort zone and work on new skills. Still, there is no doubt that working remotely can lead to additional stressors for employees. For interns, who are prone to making mistakes since it is often our first exposure to the workplace, having limited access to coworkers increases our challenges.</p><p>Though there have been some challenges, virtual interning still provides many opportunities. Over my time here, I have worked with my team to develop the trust and autonomy to lead projects and learn new systems and softwares. I had the opportunity to create and run campaigns, including setup, execution, and promotion. I took charge of our recent APAC-wide webinars. I promoted the webinars on social platforms and worked with vendors. Through this process, I learned to analyse the quality of leads from different sources which gave me the ability to develop post-quarter analyses looking at webinar performance and discerning lessons we can take into future quarters</p><p>I also conducted various data analysis projects, beginning with data extraction and leading to the analysis of the holistic business impact. For instance, I led a detailed data analysis project looking into the performance of events and how they may be improved. I learned new software, such as Salesforce and how to tell a story with data. Through analysis of the sales cycle and conversion rates, we were able to pinpoint key improvement areas to the execution of events.</p><p>Among these many exciting projects, I have also learned from my experienced teammates about how to work smart and I have been lucky to be part of a great company. As I come up on my final month as an intern at Cloudflare, I am excited to take the lessons I have learned over the past five months into my final years in school and to whatever I end up doing after.</p>
    <div>
      <h3>A guide for those beginning their virtual intern experience</h3>
      <a href="#a-guide-for-those-beginning-their-virtual-intern-experience">
        
      </a>
    </div>
    <p>Cloudflare has provided a seamless transition to remote work for full-time employees, interns, and new hires. They have provided resources, such as virtual fitness classes and fireside chats, for us to stay healthy mentally, physically, and professionally. Even so, during these tumultuous times, it can be stressful to start an internship (possibly your first) in a remote setting.</p><p>With one month left and seeing many of my fellow college students begin their own summer internship, I’m reflecting on the multitude of lessons I have learned at Cloudflare. While I was lucky to have three months working with the team in the office, I know many interns are worried about starting internships that are now fully remote. As I have been working from home for the past two months, I hope to provide incoming interns with some guidance how to excel during a remote internship.</p>
    <div>
      <h3>Set up a LOT of meetings and expand your network</h3>
      <a href="#set-up-a-lot-of-meetings-and-expand-your-network">
        
      </a>
    </div>
    <p>Recently, I was curious to learn more about what the different teams were doing without being able to make in-person sales calls. I asked my manager if I could listen in to a few more meetings and he quickly agreed. I have since created a better picture of the different teams’ activities and initiated conversations with my manager that led to a deeper understanding of the sales cycle. Being engaged, interested, and forward with my request to attend more meetings provided me with additional learning experiences.</p><p>Don’t wait around for people to set up meetings with you or give you tasks. Your co-workers still have a full time job to do so finding time to train you might slip their mind, especially since they can’t see you. When I first started my internship, my manager encouraged me to reach out to my team (and other teams) and come prepared with lots of questions. I started filling my calendar with short 15-30 minute meetings to get to know the different teams in the office.</p><p>This is even more crucial for those working remotely. You may not have the opportunity to speak with co-workers in the elevator or the All Hands room. Make up for this by setting up introductory meetings in your first few weeks and don’t be afraid to ask to be part of meetings. You will be able to learn more about your organisation and what interests you.</p>
    <div>
      <h3>Speak up and don’t stay on mute</h3>
      <a href="#speak-up-and-dont-stay-on-mute">
        
      </a>
    </div>
    <p>As an intern, I am usually the most inexperienced individual in the meeting, which can make it nerve-wracking to unmute myself and speak up. With all meetings now in a video conference format, it can be easy to say “hi,” mute yourself, and spend the rest of the time listening to everyone else speak. I have learned that I won’t get the most out of my experience unless I offer my opinion and ask questions. Often, I am wrong, but my teammates explain why. For example, I came prepared with a draft of an email to a meeting with my manager. He was able to help me edit it and make it even more effective. He then provided me with extra reading materials and templates to help me improve in the future. Because of the questions or opinions I share during these meetings, I now have a greater understanding of branding and how to position a company in the market.</p><p>As an intern starting out in a virtual environment, be fully engaged in meetings so your team can learn from your opinions and vice versa. Work to overcome the intimidation you may be feeling and take initiative to show your team what you have to offer. Making sure your video is on during every meeting can help you stay present and focused.</p>
    <div>
      <h3>Everyone is dealing with unique circumstances; use this to get to know your coworkers</h3>
      <a href="#everyone-is-dealing-with-unique-circumstances-use-this-to-get-to-know-your-coworkers">
        
      </a>
    </div>
    <p>In many companies, almost all employees are working from home providing a unique commonality. It is an easy talking point to start with in any meeting and helps you get to know your coworkers. Use this as an opportunity to get to know them on a deeper level and share something about yourself. You can discuss interesting books you have read or TV shows you love. It is also a great opportunity to set up fun virtual activities. My manager recently set up a “Fancy Dress Happy Hour” where we all dressed up as our favourite fictional characters and chatted about life stuck at home. Don’t be afraid to set activities like this up. Chances are, the rest of your team is just as tired of being stuck at home as you are.</p>
    <div>
      <h3>Recognising this could be the new working reality (for a while more)</h3>
      <a href="#recognising-this-could-be-the-new-working-reality-for-a-while-more">
        
      </a>
    </div>
    <p>The events of 2020 have led to drastic changes in the business world. Everyone is learning a new way to work and adapting to change. It may be too soon to know what a fully remote internship will look like, but it is a great opportunity to find new and innovative ways to intern. Being an intern is a unique experience where you are not only allowed, but encouraged to try new things, even those not included in your job description. Virtual interning offers many unique challenges, but also provides the opportunity to learn how to quickly adapt and find new opportunities.</p><p>Cloudflare is a company that has urged me to gain a better grasp of my goals and provided me with opportunities to act towards fulfilling them. It is a great place to understand what a post-university job will look like and exemplifies how much fun it can be. This summer, they have doubled their intern class and work to amplify interns' voices so they are a meaningful part of the company. If you are interested in being part of an innovative, collaborative environment, consider applying for an internship experience at Cloudflare <a href="https://www.cloudflare.com/careers/jobs/">here</a>.</p> ]]></content:encoded>
            <category><![CDATA[Life at Cloudflare]]></category>
            <category><![CDATA[Singapore]]></category>
            <category><![CDATA[Remote Work]]></category>
            <category><![CDATA[Internship Experience]]></category>
            <guid isPermaLink="false">4kz9l49hrKMpWSt7BzoCNd</guid>
            <dc:creator>Cate Danielson</dc:creator>
        </item>
        <item>
            <title><![CDATA[Doubling the intern class - and making it all virtual]]></title>
            <link>https://blog.cloudflare.com/doubling-the-intern-class-and-making-it-all-virtual/</link>
            <pubDate>Wed, 29 Apr 2020 11:00:00 GMT</pubDate>
            <description><![CDATA[ We have found interns to be invaluable. Not only do they bring an electrifying new energy over the summer, but they also come with their curiosity to help solve problems, contribute to major projects, and bring refreshing perspectives to the company. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1yazQH1KLzvq0ilNXCdXNg/18b15c027f6afd6597719dc56aea5227/image5-9.png" />
            
            </figure><p>Earlier this month, we announced our plans to relaunch our intern hiring and double our intern class this summer to support more students who may have lost their internships due to COVID-19. You can find that story <a href="/cloudflare-doubling-size-of-2020-summer-intern-class/">here</a>. We’ve had interns joining us over the last few summers - students were able to find their way to us by applying to full-time roles and sometimes through Twitter. But, it wasn’t until last summer, in 2019, when we officially had our first official Summer Internship Program. And this year, we are doubling down.</p>
    <div>
      <h3>Why do we invest in interns?</h3>
      <a href="#why-do-we-invest-in-interns">
        
      </a>
    </div>
    <p>We have found interns to be invaluable. Not only do they bring an electrifying new energy over the summer, but they also come with their curiosity to help solve problems, contribute to major projects, and bring refreshing perspectives to the company.</p><ol><li><p><i>Ship projects:</i> Our interns are matched with a team and work on real and <a href="/helping-sites-get-back-online-the-origin-monitoring-intern-project/">meaningful projects</a>. They are expected to ramp up, contribute like other members of the team and ship by the end of their internship.</p></li><li><p><i>Hire strong talent:</i> The internship is the “ultimate interview” that allows us to better assess new grad talent. The 12 weeks they spend with us tell us how they work with the team, their curiosity, passion and interest in the company and mission, and overall ability to execute and ship.</p></li><li><p><i>Increase brand awareness:</i> Some of the best interns and new grads we’ve hired come from referrals from past interns. Students go back to school and will share their summer experience with their peers and classmates, and it can catch like wildfire. This will make long term hiring much easier.</p></li><li><p><i>Help grow future talent:</i> Companies of all sizes should hire interns to help grow a more diverse talent pool, otherwise the future talent would be shaped by companies like Google, Facebook, Microsoft and the like. The experience gained from working at a small or mid-sized startup versus a behemoth company is very different.</p></li></ol>
    <div>
      <h3>Our founding principles. What makes a great internship?</h3>
      <a href="#our-founding-principles-what-makes-a-great-internship">
        
      </a>
    </div>
    <p>How do we make sure we’re prepared for interns? And what should companies and teams consider to ensure a great internship experience? It’s important for companies to be prepared to onboard interns so interns have a great and fruitful experience. These are general items to consider:</p><ol><li><p><i>Committed manager and/or mentor:</i> Interns need a lot of support especially in the beginning, and it’s essential to have a manager or mentor who is willing to commit 30+% of their time to train, teach, and guide the intern for the entire duration of the summer. I would even advise managers/mentors to plan their summer vacations accordingly and if they’re not there for a week or more, they should have a backup support plan.</p></li><li><p><i>Defined projects and goals:</i> We ask managers to work with their interns to clearly  identify projects and goals they would be interested in working on either before the internship starts, or within the first 2 weeks. By the end of the internship, we want each intern to have learned a lot, be proud of the work they’ve accomplished and present their work to executives and the whole company.</p></li><li><p><i>Open environment and networking:</i> Throughout the internship, we intentionally create opportunities to meet more people and allow a safe environment for them to ask questions and be curious. Interns connect with each other, employees across other teams, and executives through our Buddy Program, Executive Round Tables, and other social events and outings.</p></li><li><p><i>Visibility and exposure:</i> Near the end of the internship, all interns are encouraged and given the opportunity to present their work to the whole company and share their project or experience on the company blog. Because they are an integral part of the team, many times they’ll join meetings with our leaders and executives.</p></li></ol>
    <div>
      <h3>The pivot to virtual: what we changed</h3>
      <a href="#the-pivot-to-virtual-what-we-changed">
        
      </a>
    </div>
    <p>The above are general goals and best practices for an internship during normal times. These are far from normal times. Like many companies, we were faced with the daunting question of what to do with our internship program when it was apparent that all or most of it would be virtual. We leaned into that challenge and developed a plan to build a virtual internship program that still embodies the principles we mentioned and ensures a robust internship experience.</p><p>The general mantra will be to over-communicate and make sure interns are included in all the team’s activities, communications, meetings, etc. Not only will it be important to include interns in this, it's even more important because these members of our team will crave it the most. They'll lack the historical context existing employees share, and also won't have the breadth of general work experience that their team has. This is where mentors and managers will have to find ways to go above and beyond. Here are some tips below.</p>
    <div>
      <h3>Onboarding</h3>
      <a href="#onboarding">
        
      </a>
    </div>
    <p>Interns will need to onboard in a completely remote environment, which may be new to both the manager and the company. If possible, check in with the interns before their first day to start building that relationship - understand what their remote work environment is like, how’s their mental health during COVID-19, are they excited and prepared to start? Also, keep in mind that the first two weeks are critical to set expectations for goals and deliverables, to connect them with the right folks involved in their project, and allow them to ask all the questions and get comfortable with the team.</p><p>Logistically, this may involve a laptop being mailed to them, or other accommodations for remote work. Verify that the intern has been onboarded correctly with access to necessary tools. Make a checklist. Some ideas to start with:</p><ol><li><p>Can they send/receive email on your company’s email address?</p></li><li><p>Do you have their phone number if all else fails? And vice-versa?</p></li><li><p>Do they have access to your team's wiki space? Jira? Chat rooms?</p></li><li><p>Can they join a Google Meet/Zoom meeting with you and the team? Including working camera and microphone?</p></li><li><p>Can they access Google Calendar and have they been invited to team meetings? Do they know the etiquette for meetings (to accept and decline) and how to set up meetings with others?</p></li><li><p>Have they completed the expected onboarding training provided by the company?</p></li><li><p>Do they have access to the role-specific tools they'll need to do their job? Source control, CI, Salesforce, Zendesk, etc. (make a checklist of these for your team!)</p></li></ol>
    <div>
      <h3>Cadence of Work</h3>
      <a href="#cadence-of-work">
        
      </a>
    </div>
    <p>It's critical to establish a normal work cadence, and that can be particularly challenging if someone starts off fully remote. For some interns, this may be their first time working in a professional environment and may need more guidance. Some suggestions for getting that established:</p><ol><li><p>Hold an explicit kickoff meeting between the intern and mentor in which they review the project/goals, and discuss how the team will work and interact (meeting frequency, chat room communication, etc).</p></li><li><p>If an intern is located in a different timezone, establish what would be normal working hours and how the team will update them if they miss certain meetings.</p></li><li><p>Ensure there's a proper introduction to the team. This could be a dedicated 1:1 for each member, or a block of the team's regular meeting to introduce the candidate to the team and vice-versa. Set up a social lunch or hour during the first week to have more casual conversations.</p></li><li><p>Schedule weekly 1:1s and checkpoint meetings for the duration of the internship.</p></li><li><p>Set up a very short-term goal that can be achieved quickly so the intern can get a sense for the end-to-end. Similar to how you might learn a new card game by "playing a few hands for fun" - the best way to learn is to dive right in.</p></li><li><p>Consider having the mentor do an end-of-day check-in with the intern every day for at least the first week or two.</p></li><li><p>Schedule at least one dedicated midpoint meeting to provide feedback. This is a time to evaluate how they’re progressing against their goals and deliverables and if they’re meeting their internship expectations. If they are, great. If not, it is essential at this point to inform them so they can improve.</p></li></ol>
    <div>
      <h3>Social Activities</h3>
      <a href="#social-activities">
        
      </a>
    </div>
    <p>A major part of a great internship also involves social activities and networking opportunities for interns to connect with different people. This becomes more difficult and requires ever more creativity to try to create those experiences. Here are some ideas:</p><ol><li><p>Hold weekly virtual intern lunches and if there’s budget, offer a food delivery gift card. Have themed lunches.</p></li><li><p>Think about virtual social games, Netflix parties, and possibly other apps that can augment virtual networking experiences.</p></li><li><p>Set up social hours for smaller groups of interns to connect and rotate. Have interns meet with interns from their original office locations, from the same departments,</p></li><li><p>Set up an intern group chat and have a topic, joke, picture, meme of the day to the conversations alive.</p></li><li><p>Create a constant “water cooler” Google Meet/Zoom room so folks can sign on anytime and see who is on.</p></li><li><p>Host virtual conversations or round tables with executives and senior leaders.</p></li><li><p>Involve them in other company activities, especially Employee Resource Groups (ERGs).</p></li><li><p>Pair them with a buddy who is an employee from a different team or function. Also, pair them up with a peer intern buddy so they can share their experience.</p></li><li><p>Send all the swag love you can so they can deck out their house and wardrobe. Maybe not all at once, so they can get some surprises.</p></li><li><p>Find a way to highlight interns during regular all-hands meetings or other company events, so people are reminded they’re here.</p></li><li><p>Survey the students and get their ideas! Very likely - they have better ideas on how to socialize in this virtual world.</p></li></ol><p>Interns in the past have proven to be <a href="/internship-experience-cryptography-engineer/">invaluable</a> and have made huge <a href="/my-time-at-cloudflare-as-an-intern-thus-far/">contributions</a> to Cloudflare. So, we are excited that we are able to double the program to give more students meaningful work this summer. Despite these very odd and not-so-normal times, we are committed to providing them the best experience possible and making it memorable.</p><p>We hope that by sharing our approach we can help other companies make the pivot to remote internships more easily. If you’re interested in collaborating and sharing ideas, please contact <a>internships@cloudflare.com</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3iCKFj7QwqFfKSydvcnHZD/36fd26fa6d404158553a46972b4c121c/IMG_1306-1.jpg" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/52bdHt4WN5tiF44EGoA8cd/86c2e8dce53403332c12ed07f6e185d3/image2-1.jpg" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3hz9F3MqSTGegjXgXfMgVA/b55327f51fff73f32317b5d21a56cf40/image4-1.jpg" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4Ailb8IJNvtKm9DYkvjGf2/f376b78ab75df816591bdb74561db47a/image3-2.jpg" />
            
            </figure> ]]></content:encoded>
            <category><![CDATA[Internship Experience]]></category>
            <category><![CDATA[Life at Cloudflare]]></category>
            <category><![CDATA[Remote Work]]></category>
            <guid isPermaLink="false">ap5RlePxBsg5BXeIrZpxm</guid>
            <dc:creator>Judy Cheong</dc:creator>
        </item>
    </channel>
</rss>