Image for post
Image for post

My earliest memory of a computer was watching a series of circles appear on an old computer screen, falling in line one by one to form a crooked smiley face. I was fascinated. By pushing some buttons, my brother, sisters, and I could bend the behavior of this device to the extent of our creativity. We could express pictures or ideas using the BASIC programming language and, with a little work, make it beep at just the right moment.

This was an unlikely scenario for the time and place. I was born in 1983 and grew up in the small town of Oakley, Idaho, surrounded by farms on all sides. From the air, the town looked like a green patchwork one might find in a well-worn quilt. The population was around 650 at the time and almost everyone worked in agriculture or mining. Personal computers were rare at the time generally, let alone in my small town. The only person I was aware of who knew anything about computers happened to be none other than my own father. My dad built and owned a computer and programming business called ComTech in the nearest town 20 miles away where he sold computers and wrote software for local businesses. Like the plants in the fields that surrounded our home, our lives are massively influenced by the environment in which we are cultivated. In retrospect, I recognize growing up in my particular family was an incredibly serendipitous advantage to my future hobby and career in software engineering. …


Image for post
Image for post

Have extra money you’d like to invest? Congratulations! You’re on the first step to securing your financial future. Now that you’ve decided to invest, it’s time to decide which type of investment account to put your money into. If you have sufficient money to invest, you may need to choose several. But which accounts are best? And in what order?

The strategy I outline below is compiled from my own research and experience. I’m not a financial advisor, but I hope you’ll find this valuable.

Decisions, decisions

As a modern employee, you likely have several types of investment accounts at your disposal that are offered by your employer, as well as others available outside your employer. They are not all equal. …


Image for post
Image for post

I originally wrote this on November 5, 2015, when our daughter Brinley was six years old. I shared it on Facebook and am now sharing it with the rest of the world. Brinley is now ten years old. Most everything described below still applies; she’s just older and bigger now with a newer set of spinal rods and on oxygen 24/7.

With all that’s been going on with our daughter Brinley, I’ve had a lot of people ask about her condition and background. Since Brinley is now sleeping soundly I figured I would take a moment to write it up. I do this so others might learn. Maybe it will help diagnose a child someday. Maybe it will help others through hard times. Maybe it will satiate some curiosity. Whatever the reason, you’re invited to read if you so desire. …


Image for post
Image for post

In a prior article, I wrote about how the Adobe Experience Platform Launch team ❤️ open source. We strongly believe that open source matters to the community for three reasons: transparency, ease of implementation, and continuous improvement. In an effort to continue our open sourcing efforts, we’re happy to announce that we’ve open sourced the Core extension (see the code repository).

What is the Core extension?

Adobe Launch allows companies to deploy marketing technologies onto their websites. As part of the process, marketers build rules to define how marketing technologies react to events that happen while a user is on their website. …


Image for post
Image for post

Let’s get this out of the way: Much has been written about why a full software rewrite is a bad idea. I largely agree with the sentiment. It typically is a bad idea. It brings with it high risk and a high rate of failure. You should spend a meaningful amount of time considering the risks involved in a software rewrite before taking the plunge.

For me, I don’t particularly enjoy talking in absolutes and I’m unconvinced that rewriting software is a clear-cut issue. …


Image for post
Image for post

This post is the fourth in a four-part series:

  1. An HTTP Caching Strategy for Static Assets: The Problem
  2. An HTTP Caching Strategy for Static Assets: Generating Static Assets
  3. An HTTP Caching Strategy for Static Assets: Configuring the Server
  4. An HTTP Caching Strategy for Static Assets: Testing the Implementation

For this, we’ll use the Chrome browser. First, we’ll clear our browser cache. Next, we’ll open the Chrome developer tools and show the Network tab. Then, we’ll load up our site. In our case, that’s https://launch.adobe.com. Once we get past the Launch login screen, we should see something similar to this:


Image for post
Image for post

This post is the third in a four-part series:

  1. An HTTP Caching Strategy for Static Assets: The Problem
  2. An HTTP Caching Strategy for Static Assets: Generating Static Assets
  3. An HTTP Caching Strategy for Static Assets: Configuring the Server

Now that we’re generating files according to plan, we need to start serving them with the appropriate cache headers from our server.

For Launch, we use NGINX for our HTTP server. Let’s take a look at our NGINX configuration (I’ve trimmed it down to the important parts):

server {
...
location ~ \.cache-[a-z0-9]+\. {
etag off;
add_header Cache-Control "public,max-age=31536000,immutable";
}
location ~ .+\..+ {
add_header Cache-Control "no-cache";
}
... …


Image for post
Image for post

This post is the second in a four-part series:

  1. An HTTP Caching Strategy for Static Assets: The Problem
  2. An HTTP Caching Strategy for Static Assets: Generating Static Assets

In Adobe Experience Platform Launch, the absence of a caching strategy is a bad caching strategy. We want most of our files to be cached as long as possible. Even so, when we release an update, we want to make sure the user gets the update. These goals might seem somewhat contradictory. If the files are always pulled from cache after the initial load, how will the browser ever know if there are updates on the server? …


Image for post
Image for post

This post is the first in a four-part series.

In Adobe Experience Platform Launch, we provide a web application where our users manage their marketing technologies. To power the user interface, a number of assets (HTML, JavaScript, and CSS files, for example) must be shipped from our servers to the user’s browser.

Caching, in this context, is the technique of storing a copy of these assets on the user’s machine so when they use our application again or navigate to different pages that use the same files, the user’s browser doesn’t have to load the files from our servers again. Instead, the browser can re-use the copy of the assets that are on the user’s machine, which is a much faster process and results in a snappier user experience. …


Image for post
Image for post

Avid reader Benjamin Bytheway writes:

I’d like to know more about the lifecycle of a Launch library loaded on a page. When the Launch library loads on a page for a customer, what happens with extensions? At what points do certain pieces of code run?

Thanks for writing in, Benjamin.

Let’s discuss the lifecycle of a Launch library. To be clear, this is the library produced from Adobe Experience Platform Launch that gets published to the Launch user’s website.

We’re going to dig into extensions a bit, so it may help to have at least a basic understanding of what a Launch extension can do and how it is composed. If you’re unfamiliar with extension development, I recommend starting out by reading our extension development documentation or watching this video on extension development. …

About

Aaron Hardy

I am a software engineer at Adobe working on the Launch product, primarily focusing on the Launch runtime library and extension development ecosystem.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store