Author Archives: admin

Two Years of Go at CodeGuard

Twitter Facebook

At CodeGuard, we’ve been using Go to build the premier website backup product for just over two years. Our first Go code entered production on August 14, 2013 with the open source s3gof3r tool that transfers our backup data in and out of S3. 30 times faster than the ruby code it replaced, it made an immediate impact on our backup process efficiency, enabling us to serve our customers with larger sites rapidly.

Since that initial deployment, Go has increased as a percentage of our production code ever since. As we’ve scaled our architecture to run more than a quarter million website backups per day, we’ve had to build new systems and re-architect old systems. In this post we’ll look at some of the systems we’ve built using Go and how Go has helped us to scale while also increasing the reliability of our product.

Small Services

Key to scaling our product architecture to handle hundreds of thousands of backups per day has been building small services, both for new product features and as part of breaking features out of the monolithic legacy architecture. As other companies have documented, Go is well-suited for these kinds of services.

The common experience with building these small services is that they are easily deployed, efficient, and — most importantly — reliable. Let’s look at why Go services tend to have these properties.

Deployment

CodeGuard is an engineering-driven startup and engineering resources are usually the limiting factor in product development to drive growth. Efficient use of engineers’ time directly drives ROI and revenue growth. We also deploy frequently to our production systems. When we build a new service, the cost of deployment is a critical factor in the development and ongoing cost of that service. Deployment cost is driven by both the cost of building or setting up deployment tooling as well as by the time and complexity of deploying new code to staging or production environments. We always use tooling to automate deployment. With Go, deployment automation is far simpler than for many other technologies:

  • static binaries: a Go service is deployed as a single statically-linked binary. This means that it has no dependencies on other software, simplifying the deployment process.
  • easy cross-compilation: a statically-linked binary is great but it must be built specifically for the architecture of the server where it will run. A binary built for OSX, for instance, will not run on a 64-bit linux. CodeGuard engineers use Apple OSX for development but all code is deployed and run in AWS on linux servers. To cross-compile a Go binary for linux on OSX, the command is as simple as: `env GOOS=linux GOARCH=amd64 go build`

From Serial to Parallel

CodeGuard is a website backup company and in the process of completing millions of backups per month, we move petabytes of data between customer servers, our servers, and Amazon S3. To operate cost-effectively and quickly these backup systems must be efficient. Thanks to the architecture of Go and it’s optimized standard library, it is far more efficient than most dynamically-typed languages such as ruby or python. The memory model and runtime also ensures efficient memory usage. Compared to a similar dynamically-typed, interpreted language memory usage can often be an order of magnitude less.

The most important way that Go makes code more efficient, though, is through concurrency. With the imminent death of Moore’s law and the stalling of CPU clock speed increases a decade ago, concurrency is critical to efficient use of modern servers. To understand how Go addresses this paradigm shift in computing, see Dave Cheney’s excellent article “Performance without the Event Loop”. At CodeGuard, using Go allows us to use concurrency to parallelize formerly serial processes. If two steps in a process are not directly dependent on one another, they can be run at the same time so that the time to complete them is the maximum of the run two run times rather than the sum. If a network operation can be parallelized by sending or receiving chunks of a file at the same time, Go makes that easy. To illustrate the power of concurrency to increase speed and efficiency, let’s take a closer look at a Go service that CodeGuard recently deployed.

Website Listing Service

CodeGuard website backups are incremental, which just means that on each backup only the changes from the previous backup are detected and downloaded from customer websites. This reduces load on customer servers as well as backup size. In order to detect the changes, all website files must be inspected and compared to the previous backup. Since CodeGuard connects to customer sites over SFTP and ftp, this comparison is done by listing the files and directories on each website. The vast majority of CodeGuard’s customer sites are backed up via SFTP, since it is more secure and reliable than ftp, so the listing service currently supports only SFTP currently.

Serial Listing

Previously, listing was entirely serial. Only one directory listing was requested at a time. It was parsed on receipt and then any directories in that listing were placed on a queue to be listed. This process continued until the queue was empty. This meant that listing speed, beyond listing only one directory at a time, was also limited by the round trip speed of the connection plus the time to parse the listing data.

Concurrent Listing

To improve the speed and efficiency of listing, the clear solution is to request multiple listings concurrently. This process is similar to the serial listing process, but instead of requesting only one listing at a time, a listing is immediately requested whenever a directory is found in a listing.

SFTP runs on top of SSH and SSH connections have a real cost, both on the client side and the remote server side and it is unacceptable for listings to cause high load on customer servers. It is impractical to open an ssh connection for every directory encountered. Many customers also have limitations on the number of SSH connections they can open, either enforced by their hosting provider or to reduce load. To mitigate this, the listing requests are multiplexed over multiple SFTP sessions running on ssh sessions. In addition, SFTP allows for multiple concurrent requests per SFTP session. Multiple SFTP sessions are created for each underlying SSH connection and multiple requests are then made on each sftp session. This allows a large increase in concurrency without a correspondingly large increase in server loads.

In addition to multiple concurrent listings per website, multiple sites are listed concurrently, allowing CodeGuard to maximize our server utilization while still minimizing load on customer servers.

Performance

Concurrency is nice, but what how much of a performance improvement does it give us over a serial process? Under ideal conditions (low latency, reliable connections), the serial process had a peak performance of 5 directory listings per second. The new listing service, in contrast, averages approximately 75 directories per second. For some large sites, where more connections are opened, performance can exceed 400 directories per second. In addition to this 15x average speed increase, the processing efficiency of Go allows more websites to be listed per server and runs on smaller servers than previously used. This translates into significant backup speed improvements while also lowering costs to serve our customers.

The Future of Go at CodeGuard

Using Go has been instrumental in scaling the CodeGuard infrastructure to millions of monthly backups and has allowed us to serve our customers better through increased performance, reliability, and efficiency that allows us to provide an affordable website backup product. It will be certainly be a part of our engineering-driven, customer-focused approach to making the best website backup service even better.

~Randall McPherson

CodeGuard goes to HostingCon 2015 in San Diego (Pt. 3 of 3) – Phase 3: RESULTS

Twitter Facebook

I hope everyone enjoyed my last post “CodeGuard goes to HostingCon 2015 in San Diego (Pt. 2 of 3) – Phase 2: EXECUTION.” I apologize for the delay in sharing the results with you, but now that the numbers are in, you can see how we did!

 

It’s no secret that results are what matters most. The real secret is how you plan and execute to achieve the results that you desire. Fortunately for you, we’ve already shared our secret sauce :).  As your trusted source, key eye-witness and major contributor, I am happy to share CodeGuard’s results from HostingCon 2015.

The Dinner – was well-attended with the private dining room nearly maxed out with 32 attendees. A few of the companies represented were as follows: Symantec, Intel Security, NameCheap, HostDuplex, MailChannels, UK2Group and Verisign.

Dinner with Help.com

The actual Trade Show, spanning over two days, was the big event, which went extremely well. If you read the prior post about executing, you’ll understand how we leveraged the t-shirts, cookies, contest entrants, putting game, & demos to drive partnership discussions. Our results funnel is shared below:

Funnel_CodeGuard_Blog_HCon_2015_ppt

I’ve been transparent with all of the details up until now but will wait until a later blog post to reveal the total number of strategic partnerships we established at HostingCon 2015.

See below: Jacob from H4Y Technologies (left) and Chris from CodeGuard (right) after a recently minted partnership.

HCon_Jacob @H4Y & Chris

The winner of the Amazon Echo: Chris Henning of FindMyHost. His partner in crime, Richard Guzzo, was sinking puts one handed by the end of day two, so it only made sense that one of these guys walked away with a prize.

2015 HCon_Amazon Echo Winner_Chad Henning

The winner of the MacBook: Antonio Munoz of Fullx Hosting, who is also now partnered with CodeGuard.

HostingCon_MacBook Winner_Antonio

Quick recap of how we had a successful tradeshow:

  • Hustle / Hard Work → reaching out to 500 – 1,000 people/companies the week before the show
  • Planning → details matter…down to the last one!
  • Engaging Booth → booth grandma’s with warm cookies, putt-putt for sweet giveaways (MacBook & Amazon Echo)
  • Killer Product → CodeGuard
  • TGTPU Value Proposition (Too Good To Pass Up) → CodeGuard’s Partners benefit from the following Measurable Success Metrics:
    • Increased Revenue
    • Increased Customer Satisfaction
    • Decreased Support Time / Costs

Thank you for listening! Now Go Forth and Exhibit!

Chris

Premium or Commodity Website Backup: What’s the difference?

Twitter Facebook

McDonald’s Versus Fine Steakhouse: Commodity or Premium?

Most products and services fall into one of two broad categories: commodity or premium service/product. Let’s look at a few examples that you might be familiar with. Food: McDonald’s is low-priced without much quality and fits squarely into the commodity bucket. Other direct hamburger alternatives: Burger King, Wendy’s, Jack-in-the-box, Checkers; other tangential alternatives: Taco Bell, KFC, insert your favorite fast food. The key here is that the quality of the alternatives, whether they be a hamburger, taco, or piece of fried chicken, are similar. The food, mass-produced and low-quality, is served in a low cost environment, likely by low-cost workers. Are there any phrases that you are starting to see repeat themselves?

Let’s contrast our fast food category with the finest steak house in the nearest city (population > 1,000,000) to your residence, or just pick a big city and a great steak house. Think about that steak house. Think about the décor. Imagine the waiters and greeter. Now think about the food. How is it priced? How does it taste? Appear?

The difference between McDonald’s and a fine steakhouse is obvious. Many commodity and premium products & services are equally as obvious to distinguish between, but not all. Why is it so easy to distinguish between restaurants?

  1. Visual differences are easy to spot: décor, servers, waitstaff, or lack thereof
  2. Taste differences are easy to discern: flavor, quality of food, etc.
  3. Pricing signals help: typically better food is more expensive, but not always

What type of products and services are harder to compare?

Distributed services with little transparency or interaction are difficult to compare

How good is the airplane maintenance crew for your favorite airline? You only hear about the rare airline crashes and have almost no visibility into how effective one airline’s maintenance is versus another. You could use on-time departure, which is reported in the United States as a proxy, but perhaps that is the wrong metric. And with various crews of various levels of effectiveness, how can you be certain that the crew who worked on your plane did a good job?

How effective is your police force? You could try to use anecdotal data, but there is a good chance you would be really wrong, since you could interpret a one-off event as a regular occurrence. Without looking at data collected about aggregate performance, it is hard to know how effective the police force is. What would you ask to answer this: How nice are the police officers you encounter? How present are police? Do you seem to see them around? It is painfully obvious without data you almost can’t even hazard a guess as to the effectiveness of this distributed workforce.

If you infrequently use a service and that service has little transparency, you are almost unable to determine how effective the service is – you just don’t have any data. With the food example, you have TONS of data points, visual, taste, experiential, as well as factual: pricing, external reviews, opinions of others, etc.

Where on the spectrum of commodity to premium services does CodeGuard fit?

We are a premium service, produced by top engineers in the United States, committed to delivering for our customers, with internal and external metrics.

CodeGuard Adheres to Best Security Practices

With annual vulnerability and penetration testing, we take security seriously, and have not had a major breach. This is contrasted with some of our competitors who have been found of atrocious security practices that indicate no 3rd party inspections were taking place, or if those inspections were taking place, that nothing was done to remediate the major issues.

Here are the specifics on how we secure our data, because we do not believe in security through obscurity.

  • Backups
    • Server side encryption (SSE)
    • 256-bit Advanced Encryption Standard (AES-256)
  • Credentials
    • Reside in Amazon’s Relational Database Service (RDS)
    • One-way salted hashes for CodeGuard customer account passwords
    • RSA 2048-bit key encryption for customer server credentials

CodeGuard Offers Most Reliable and Best Storage Available

Some of our competitors don’t offer storage. You will have to store the backups on your own hard drive, a cloud drive that you manage, or another cloud service that you own. What type of guarantee can be provided when there isn’t end-to-end visibility that the service is working?

Not only do we offer storage, we offer the world’s leading storage with a 99.9% SLA.

CodeGuard Offers Most Fully-featured Backup Product

Product Backbone

We run git in the cloud. This is not a simple data transfer tool; we expose the full power of the world’s leading version control system to anyone! We have taken an intricate and nuanced tool, only usable by advanced technologists, and added sophistication to make it simple. The sophistication, our “secret sauce”, is the magic that transforms this tool from unusable to the layperson to now quite usable, and easy to use.

Product Performance Tracking

We have competitors who don’t even know if their product works, as they don’t have visibility into what it is doing. With our core agentless service, we track hundreds of thousands of backups every day, from start until finish. In addition to tracking the backups, we also track the restores! Every restore we perform is tracked, and we solicit feedback from each and every one. We are not aware of anything like this with our competitors.

To make sure we don’t let our customers down, we have multiple auxiliary systems to track our core backup technology.

Monitoring Screens

Here are the auxiliary systems we built:

Auxiliary Systems

Key Aspects of the Product

The CodeGuard service doesn’t just transfer files to storage servers like a semi-skilled robot. This is the full capability of our service:

  • Backups: Daily or on-demand
  • Monitoring: Daily with ChangeAlert notifications and custom notification filtering
  • Restore: 1-click restore, downloadable zips, individual file restore, test restore
  • Client Access: Branded portal, customized subdomain, role assignment
  • Visibility: Initial backup tracking, daily backup tracking
  • Security: Two-factor authentication, IP logging
  • Support: Knowledgebase, 24/7 level 2 & 3 support, standard hours phone support level 1

How It Works

To understand the ease-of-use, simplicity, and power in what CodeGuard has built, here are the five steps needed to get the files for your website setup.

Overview

Website Addition

Backup Progress Tracker

Monitoring & ChangeAlerts

Subsequent Backup

Restore Functionality

Overview Dashboards

For CodeGuard customers with multiple websites, we provide an easy way to quickly determine how the backups are functioning across all of those sites. We don’t believe in the world of binary backup: where things work or they don’t. We believe in shades of gray, where issues occur that may be on the CodeGuard side or on the website hosting provider’s side. And when those issues arise, we are going to message to customers about them to help provide a means of reconciling.

Website Summary

If a customer wants to explore the specifics of a particular site, they can click on the link for that site and obtain information about the changes for it.

Website Overview

In similar fashion, if customers desire information about their databases, which can be connected via SSH or Direct, they can view the specifics for each database.

Database Overview

Many Options for Simple Restore Process

Backup is meaningless if there is no restore. It is nearly as meaningless if restore isn’t easy to use. Here is a walkthrough of our restore functionality, starting with the Restore Overview screen.

Restore Overview

In addition to the test restore, there are three main aspects of the restoration functionality: fully automated restore, individual file restore, and the restore survey.

Automated Restore

For individual file restore, you can select from a folder explorer the particular folders and files:

Individual File Restore

And here is the customer contact information that is requested so that if anything goes wrong, we can reach out and rectify things using manual methods.

Customer Contact Information

Leading Global Companies Partner with CodeGuard

We are the only website backup provider with multiple publicly-traded company partners. What does this mean? This means our technology has been vetted by companies with large engineering departments and expertise in evaluating technology. Companies like this don’t add a single website and see how it performs! They look at data, add hundreds of sites, and carefully track performance.CodeGuard Partners

CodeGuard Revered in the Press

If you are doing something interesting, you should get press. But just because you get press does not mean you are necessarily doing something novel or unique. We are not suggesting that just because we have been featured in many major news outlets that our technology is nuanced and special.

CodeGuard Press

 

CodeGuard Showered with Awards

CodeGuard has won over ten awards in the last five years, starting with our launch at TechCrunch Disrupt in New York in 2011, where we won the Audience Choice Award.

CodeGuard Launch

These are other awards we have won since then. We have the greatest pride in the awards related to our software development process, as software quality is quite opaque to the end customer, and without validation form an outside third party, how can you make any valid truth claims at all?

CodeGuard Awards

CodeGuard Provides Full Transparency Into Performance

CodeGuard offers current and prospective customers complete transparency into system performance. While competitors can’t even track performance, let alone share it with the world, this is exactly what CodeGuard does. 24 hours/day, 7 days/week, anyone can see how CodeGuard’s systems are performing.

CodeGuard Trust

Conclusion

CodeGuard has a rigorously engineered product, adheres to the best security practices, has the best storage available, the most fully-featured product, auxiliary systems for quality control, leading global companies as partners, and is revered in the press, showered with awards, along with full transparency into product performance.

You determine the answer: are we building commodity or premium products and services? Anyone can put a piece of software out there and make empty promises, accompanied by a low price. Pro tip: that is not our strategy.

-David

CodeGuard goes to HostingCon 2015 in San Diego (Pt. 2 of 3) – Phase 2: EXECUTION

Twitter Facebook

I hope everyone enjoyed my last post “CodeGuard goes to HostingCon 2015 in San Diego (Pt. 1 of 3) – Phase 1: PLANNING.” I apologize for leaving you hanging :) there at the end, but we had to catch a flight. Below is the piece of invaluable marketing collateral created in the airport just 20 min prior to our departure from Atlanta. Continue reading to discover just how useful it was!

Cookie Sticker

We put this sticker on the outside of the cookies/bags that were passed out to people all over the convention center. As you can see, we included what CodeGuard does, our booth #, and our awesome giveaways: a MacBookAmazon Echo, cookies & milk, and t-shirts! Who wouldn’t want to come visit us!?

After putting our best foot forward in the planning phase of HostingCon, it was finally execution time! David and I got up early Monday morning for booth setup day. We arrived at the convention center before the staff or breakfast was even ready for us. We quickly scouted our booth and took inventory of all the items that we had ordered. Thankfully, everything we had ordered was there. After eating a quick breakfast burrito nearby, we began assembling our booth. After much assembling and configuration, we got a skeleton of our booth together and then decided it was time to dig into the details and see what we were missing. Shopping spree #1 here we come.

In the early part of the afternoon, we went to the following three stores to get what we needed:

  • Ikea – 6 chairs, oven mitts, spatulas, napkins, napkin holder, bowl for business cards, serving rack, serving place mat
  • Wal-Mart – toaster oven (to warm cookies), towel, paper plates, whiteboard, dry-erase markers, cooler (for milk)
  • Michael’s – wax paper (to hold cookies), easel to hold dry-erase board displaying the putting challenge for the MacBook and Echo

Once back at the booth, it was all about optimizing our booth setup. I’ll skip the details but just know that all of those t-shirts did not fold themselves!

David in BoothCodeGuard CEO (David Moeller) in Front of Our Booth on HostingCon Eve

 

Once we got the booth looking good, it was time to go on our “final” shopping trip.

  • Sticker Store – sticker to put on wax paper cookie bags
  • Chick-Fil-A – delicious chocolate chip cookies (320 total) and dinner for David & I. Btw, other chocolate chip cookies were passed out at the Convention Center, but everyone favored the ones we bought from Chick-Fil-A!
  • Target – ice and 3 types of milk for re: delicious chocolate chip cookies

Immediately after our 2nd shopping trip of the day, it was time to head to the dinner @ 6:30 pm, co-hosted by CodeGuard and Help.com and attended by many thought leaders at HostingCon. A few of the companies represented were Symantec, Intel Security, NameCheap, HostDuplex, MailChannels, UK2Group and Verisign.

After a fun night of meeting new people over drinks and a four course meal, it was ~10:30pm and time to head back to our condo to fold more t-shirts…and rest up for Game Day (Exhibition Day #1 of HostingCon 2015)!

“Oooooh Oooooh that smell……of warm chocolate chip cookies coming from the CodeGuard booth.

“Man, I need to go back there and get some milk!”

“Hey this putt-putt thing looks fun, I’m going to check it out.”

“Oooooh, I would love a new MacBook!”

“Oh wow, I could win an Amazon Echo too!”

“Did you see those sweet, super soft t-shirts with Ninjas on them?”

 

All of our hard work was paying off, and our booth was a hit!

 

David was DJ’ing the CodeGuard presentation for attendees non-stop throughout the day. He didn’t eat lunch until 4pm, which is when the exhibit hall closed down for attendees.

I was equally busy, giving one-on-one demos and product consultations to a steady stream of interested hosts and MSPs.

Our Booth Grandma’s were slinging our fresh t’s, baking cookies, pouring milk, and really just taking care of anyone who came to our booth, which is exactly what grandma’s do! They were awesome!

Chris & BGsBG’s: Meet Kat (left) and Patricia (right). Hopefully I (Chris – middle) am a familiar face!

Btw, I want to quickly point out that even though HostingCon attendance dropped by over 50% the second day (typical of trade shows), we were just as busy as on Day #1! In fact our whole team didn’t even have time to eat lunch. Maybe we ate cookies instead, maybe we didn’t :)

Stay tuned for my next post (part 3), where I will reveal the results of our busy booth!

 

Cheers,

Chris

CodeGuard goes to HostingCon 2015 in San Diego (Pt. 1 of 3) – Phase 1: PLANNING

Twitter Facebook

Once we decided to go to HostingCon in San Diego this year, it was time to ramp up the planning. Our primary goal was to introduce CodeGuard’s innovative, patented, backup technology to as many people as possible. But figuring out the best way to do this was the million $ question.

 

Then the ideas flooded in:

“Should we get huge signage that people can see from 100 yards away?”

“Should we give away t-shirts? Everyone seems to love our t-shirts.”

“Should we give away prizes? I think a MacBook or Amazon Echo would be a cool prize. I mean I’d visit someone’s booth for a chance to win one of those.”

“What if we got a putting green where people who make the putt are entered in to win the MacBook?”

“What if we bucked the BBs (Booth Babes) trend and got BGs (Booth Grandmas) instead? Well, 2 grandmas are better than 1.”

“What if we served warm cookies to attendees? Well you know what they say, if you give an attendee a cookie, they’ll ask for a glass of milk. Ok, yes, we definitely need milk on tap. How many though? Three sounds good.”

“What if we hosted a dinner before the event and invited prominent technology thought leaders?”

Since we didn’t know what was going to work best, we decided to try them all. And I’m glad we did :)

So besides the fact that we did all of these things, why was CodeGuard’s trip to San Diego so fruitful and enjoyable? Was it the San Diego weather with a 99% chance of being awesome every day? Was it the fact that Chris and David ate breakfast burritos every morning? Could it have possibly been all of the high 5’s we got from people who rode in the Ferrari at last year’s HostingCon in Miami?


Jonathan FerrariThe only thing Jonathan – CodeGuard’s Director of Engineering – does better than writing the cleanest code this side of the Mississippi, is look like a boss driving this ferrari. #white-labelfeature #cPanelPlugin #WHMCSModule

 

Although the answers to the above questions are an obvious yes, they do not begin to explain why HostingCon was truly such a great investment of time and energy for CodeGuard.

The real answers are planning, hard work, and obsessing over the details. These are the major ingredients which contributed to our success. Simply put, there are no shortcuts.

4 Weeks Until Game Day (aka HostingCon 2015)

We weren’t sure if we would even be able to go with everything that was going on. Some time during this fourth week, David made the call to attend the event, and Chris began the signup process to make it official.

3 Weeks Until Game Day

During this time, we had to make quick decisions regarding the giveaways for the event. We landed on a new MacBook and an Amazon Echo. We also put pen to paper regarding our vision for the CodeGuard booth. We quickly booked a loft in the GasLamp District right by the Convention Center. Finally, we prepared the various collateral and descriptions for CodeGuard’s profile/presence in various HostingCon brochures, etc.

2 Weeks Until Game Day

Our big meeting room in our Atlanta office became a staging area to experiment with various design layouts. We discussed the pro’s and con’s of each layout and put together a final plan, which was later optimized the day before the event. David then performed a price comparison between what it would cost us to buy from Amazon / local stores vs. what it would cost to rent from the Convention Center. We ended up buying almost everything from either Amazon or a local store because it was cheaper…plus we got to keep the goods!

David then purchased the following:

  • 2 round trip flights
  • Banners and the framing / poles to hold them up
  • 50” TV
  • TV Stand
  • Tailgater speaker with microphone (to deliver the CodeGuard presentation in a loud conference center)
  • 3 tables and 2 chairs
  • Copies of patents, brochures and presentations
  • 2 tall and 2 small stands for patents, brochures and presentations

1 Week Until Game Day

During the week leading up to HostingCon, David and Chris sprinted to reach out to as many hosting providers and thought leaders in the hosting space as they could. David was primarily responsible for organizing the dinner comprised of prominent technology professionals. Meanwhile, Chris led the charge on reaching out to >500 hosting providers and educating them on CodeGuard’s premier backup solution as well as informing them of CodeGuard’s presence at HostingCon.

Jonathan – our Director of Engineering – cranked out YouTube videos exhibiting the step-by-step process of installing CodeGuard’s cPanel plugin and WHMCS module, while other members of the development team (Randall, Eldon, and Taylor) continued supporting our effort to reach a backup reliability score of 99.999% (affectionately referred to as 5 9’s). We currently guarantee a minimum reliability of 99.9%, but we are far from complacent here at CodeGuard.

Doug, our support specialist, continued delighting customers while making his first pushes to production in his spare time.

Natalie worked hard to get the brochures and marketing collateral looking great for the event!

David also posted a CraigsList Ad to recruit our BGs (Booth Grandmas). After much correspondence, we found two amazing ladies – Patricia and Katherine – who were ready to join CodeGuard for the show!

Round 2 of supplies ordering:

  • Apple MacBook
  • Amazon Echo
  • Golf putting mat
  • Golf balls
  • Putter – one that is both left-handed and right-handed (details matter!)
  • Hole-punchers for business cards / putting station → a star or heart hole-punch to mark those who sank the putt (gaining entry to win the MacBook) and a circle hole-punch to mark those who attempted a putt (gaining entry to win the Amazon Echo).

MacBook & Echo

Saturday & Sunday before Game Day

On Saturday, David went out shopping with his wife to find aprons for the grandma’s. Meanwhile, Chris did some shopping of his own for a new blazer for the event. In between checkout lines, David and Chris had a strategy meeting to address the final loose ends.

On Sunday, David and Chris flew out of Atlanta, but not before David created a key piece of invaluable marketing collateral outside of Gate E…

Stay tuned for part 2, which will be released next week.

Chris