Craig Antolick

I like to fix things

My Notes

Throwback Thursday

Jun 2025

At Accompany Software, I was working on animating a frog to play with motion and see how the timing of keyframes worked in Macromedia Flash. This was before Adobe acquired it. My coworkers chimed in and said we should see if we can build a game. So I drew out the and animated the additional character for the 3 levels and a Boss. We only had blackberries and flip phones, so no mobile support. After I had left and the browser plugin was no longer supported, I thought this content was lost. In talking to my kids, I mentioned I had built a few different games. So I did some digging and found a copy of it. With a little reconnaissance work, I made a copy that can be played here: https://flash.craigantolick.com/slingshot-swamp.html

Top 3 things I learned when implementing Edge Delivery

December 2024


Deciding to rebuild my old website with Edge Delivery was driven by the urge to confront real-world challenges head-on. While starting off with a boilerplate is useful, diving into the practical implementation of a unique design reveals the true hurdles. Here’s what I learned along the way:

Autoblocks Are Invaluable: The page layout wasn’t too complicated, yet the simplicity and speed at which I could create tables and refresh content using autoblocks were game-changers. These tools proved to be incredibly efficient for quick updates and modifications.

A New Appreciation for Tables: Having avoided tables for years, I’ve now recognized their worth. Tables provide a clear and defined structure for content placement, a more reliable method than guessing the sequence of content chunks. Perhaps my comfort with the intuitive drag-and-drop nature of AEM has made me a bit complacent, but I’ve come to see the utility of tables in organizing content effectively.

Smooth CDN Integration: Incorporating my existing CDN into the project was more straightforward than anticipated, thanks to well-documented guidance. This allowed me to cache my pages effectively, although the process for clearing the cache wasn’t flawless. During periods of rapid iteration and adjustments, I found myself manually purging the cache through my CDN’s interface to ensure updates were applied correctly.

Does my Edge Delivery site mirror my personal site exactly? Not quite. The original utilized an older version of VueJS and featured experiments with lazy loading as users scrolled. I scaled back on many of these elements to focus squarely on mastering Edge Delivery and spotting potential snags. I’m look forward to delving deeper into experimentation and exploring the full capabilities of Edge Delivery.

Explore more at https://www.aem.live/

Top 3 things I learned at Imagine 2019

May 2019

1. Images are important for SEO

A.I. is more scalable than people. The presentation on how images can increase your visibility due to image search and how Adobe Sensei can automate that process was amazing. The AI has the ability to determine what the product is in the image, based on the percentage how much real-estate it takes up. The days of image recognition that requires the product to face the camera are over.

2. Local Docker instance for managing Magento Cloud

I had set up a local Docker for AEM development a few years ago using this repo as the base. In the long run we ended up using Vagrant, but that is a different write up.

The Magento Cloud set up for docker is perfect for containers. The way you can split up php code, ElasticSearch, and the database into their own separation of concerns makes perfect sense.

The challenges I struggled with, which might be due to the lack of experience, was how much the set up depended on the composer. My assumption is that the solution was easier for their current development base to keep moving forward with something they are familiar with.

Overall the training was great for me as an overview.

3. A PIM is a necessity

When your company reaches a certain level, your products are rarely configured in one system. Each system ends up defining the what and how a product is configured. This limits the ability for the marketing team to "brand" the product. If your product catalog only supports dimensions and specs, then you are limited on how you can describe a product. Most marketing teams end up putting together a hodge-podge of spreadsheets and sending that over to the development team. This solution becomes more complicated once you want to talk omni-channel.

There is no source of truth. Just a bunch of systems with their own version.

There are other options, like CRUD, MDM, or more spreadsheets, but having a tool that allows a Marketer to customize how they want to talk about the product is key. This gives them options to have content on the website, eCommerce solution, email, or print coming from one system.

Screenly.io OSE

Feb 2019

I like the idea of Echo Show and the Google Hub. It is a quick look at the weather and what is my day's agenda. What I am not crazy about is what I might be giving up for convenience. (Google says 'hidden' microphone in Nest product never intended to be a secret) What I really want to know is if my kids need lunch and to wear their school t-shirt. In other words, they are overkill for what I need.

I did some research and found lots of great ideas. I narrowed it down to two. The first is the "Magic Mirror". It is simple and meets my needs. I can skip the mirror part pretty easily. The other option I landed on was digital signage. I had some experience updating the content on the Navori player at work. I read and understood the concept of what AEM Screens was about. I ended up finding Screenly. What I liked about digital signage was the offline option. I wouldn't have to run a constant connection to the internet if I wanted to cycle through some photos, or an inspiring message. The best part, they support the open source community with an OSE version.

This isn't going to be a "how to" article. The instructions were very straightforward. You can read more about Screenly's OSE version here: https://www.screenly.io/ose/. I ended up using the grabbing the release: https://github.com/screenly/screenly-ose/releases and installing the image via etcher https://www.balena.io/etcher/

Throwback Thursday

Feb 2019

At Accompany Software, I worked on a display for 3M to display their Vikuiti product line at SID 2003 (Society for Information Display). We managed to build an array of 64 PDA's that made up a display wall. We also were able to create animations that would span the entire length.

Each PDA has its own processor. What we ended up building was a Flash based application with a modified XML server that would scale to the dimensions of the PDAs. Over the serial port we would trigger a byte that would start the animation in motion. We found that traffic over USB wasn't instantaneous.

At one point we did flush how to motorize the PDAs as well with synchronized animation. This is a combination of using 3D Studio Max and video. I was able to build a simulated armature and output the rotation degrees so our motors could use it. However, time, budget and sleep cut that from scope.

This project provided lots of roadblocks and challenges and though 15+ years ago is still a fond experience.

Craig next to display wall at tradeshow

Process Result

February 2018

“Process is a result of a lack of discipline”

Steven R. Covy wrote in First Things First prioritizing your "Big Rocks". The gist of the story is that your time is a limited vessel. You need to put your tasks into that vessel. Big Rocks represent priorities. Sand represents the little things, like email, instant messaging, internet browsing, chasing down trivial questions, etc. If you fill the vessel with the sand, the vessel fills up. When you try to squeeze in the "big rocks" or important tasks in that vessel, it is already full with no room.

When you put your "big rocks" in first, there is room between them to fit in the sand too.

Check out the video Big Rocks

The concept is always easy to understand. The challenge is the discipline putting in practice.

My best results are when I write down my tasks for the day as a checklist. I place an asterisk next to the most important. There are many days I fail, and that is when forgiving yourself comes into play. Trying over and over is how we get better.

If we don't manage ourselves, we end up getting process to force the results the organization wants to see.

Vue.js

October 2017

In a world of new JavaScript Frameworks popping up every week, its hard to choose. I was ready to jump on the React bandwagon 2 years ago. Unfortunately, my work is on the CMS platform AEM. We use AEM to build static content websites. We had done some homework on the performance metrics and how inactivity equates to cost and conversion. What we needed at the time was DOM manipulation. We decided at that time that jQuery was still our best option.

At my company, there are complex standalone interfaces. Those interfaces are not managed by my team, so those teams chose AngularJS. It was the Framework they were familiar with, and they were not ready to learn a new tool and still commit to a deadline.

Two years later, I am seeing that Vue.js can not only handle our DOM manipulation, standalone apps, and the benefits of a virtual DOM. It has an established testing library. The downside of the framework is that Vue does not have that corporate backing like Google or Facebook. Yet, in my opinion Vue should be our next framework we implement.

Performance: https://medium.com/the-vue-point/vue-2-0-is-here-ef1f26acf4b8
Comparison to jQuery: https://laravel-news.com/jquery-vue
Unit Testing: https://vuejs.org/v2/guide/unit-testing.html

NFJS - Business Pressure

October 2017

Business pressure on the technology team is a constant. There is a struggle between delivering maintainable, performant, and tested code vs fast deliverables. At No Fluss, Janelle Klein hit on a pattern that we as developers. Start a clean foundation, have a few good deliveries. Then the "exception" to hitting a high pressure deadline happens. You take on technical debt. One of the main points that Klein hit on was that in business, paying the interest on debt can be easily offset. What business doesn't like its risk.

How much risk? Well if you can't measure it, you don't know. Open mastery is a tool that developers can use to track how much time they are working on addressing issues. There are issues with tools. Some companies do not allow their employees to install software. I struggle to log my time on my tickets properly. There is one habit I did adapt, which is to add my JIRA ticket to my commits.

My goal is to ask the team to add their time to their commits too. Since we have the Atlassian Suite, we could eventually enable "smart commits". In a smart you can add a hash #time and include the time you worked on that ticket. https://confluence.atlassian.com/fisheye/using-smart-commits-298976812.html

If I cannot get smart commits enabled, then at least I could use git-log to look for the same pattern for each developer. :)

Influential Engineer

October 2017

I visited a NFJS session to help me work with our leadership.

Sometimes logic and reason isn't the best way to make your case when you need something. You must learn how to deliver an elevator pitch.

The pitch needs to describe what problem you are going to solve and what the outcome will be.

The 6 principles of influence are:

  • Reciprocity
  • Scarcity
  • Consensus
  • Consistency
  • Authority
  • Being Liked

GEB (jeb)

October 2017

My first session at No Fluff Just Stuff this year was about how to work with the business. The goal of the session was to get better alignment with what the development team needs. Generally that is time and planning. The talk was great.

However, No Fluff is a tech focus group. In passing the presenter spoke about a testing framework. We have been looking at different options to help our QA team automate the front-end testing.

The tool he liked was GEB. GEB is a groovy based framework that takes the familiarity of jQuery and help automate the front-end testing

If I can figure out how to do these tests generated by cucumber, then we might have a viable solution.

Learn more about GEB http://www.gebish.org/
Cucumber GEB https://github.com/geb/geb-example-cucumber-jvm