One of the most common complains you will hear about modern architecture is that it does not integrate with nature. This project, designed by X-architecture for Shilda winery in Kahketi, Georgia (the country, not the state).
At the core of the vineyard, the building forms a stream of curved beams that host several activities: wine tasting, wine storing, and wine knowledge sharing.
In my experience, developers generally find the benefits of the JAMstack easy to comprehend. Sites are faster because the resources are static and served from a CDN. Sites are more secure because there is no framework, application server or database to compromise. Development and deployment can be optimized because all of the pieces that make up the stack are unbundled. And so on.
What can be more difficult for developers to comprehend are the trade-offs that this can often require for the folks who create and edit content. Traditional, monolithic content management systems have often been ridiculed by developers (yes, even WordPress) who became frustrated trying to bend the tool to their will in order to meet project requirements. But, until recently, the JAMstack largely just passed that burden onto the non-technical content creators and editors.
By developers, for developers
Static site generators (i.e. tools like Jekyll, Hugo and Gatsby) grew enormously in popularity in large part because developers adopted them for projects. They became common solutions for things like blogs, documentation or simple static pages. By and large, these were sites created by developers, maintained by developers and with the content primarily written and edited by developers.
When I first wrote about these tools in a report for O’Reilly in 2015, this is what I said:
Just in case this isn’t already clear, I want to emphasize that static site generators are built for developers. This starts with the development of the site all the way through to adding content. It’s unlikely that non-developers will feel comfortable writing in Markdown with YAML or JSON front matter, which is the metadata contained at the beginning of most static site engine content or files. Nor would non- technical users likely feel comfortable editing YAML or JSON data files.
—Me (Static Site Generators report for O’Reilly 2015)
When, two years later, I wrote a book for O’Reilly on the topic (with my friend Raymond Camden), not too much had changed. There were some tools at the very early stages, including Jekyll Admin and Netlify CMS, but they had not matured to a point that they could realistically compete with the sort of WYSIWYG tooling that content editors were used to in tools like WordPress.
The WordPress editing experience
By contrast, the editing experience of static CMSs still required an understanding of Markdown and other markup (YAML, Liquid, etc.).
The Netlify CMS editing experience in 2017
Suffice it to say, whatever the technical merits of the architecture at the time, from a content editing standpoint, this was not a toolset that was ready for mainstream adoption.
The awkward teenage years
Over the ensuing two years, a combination of a couple of trends started to make the JAMstack a viable solution for mainstream content sites with non-technical editors. The first was that the static CMS matured into what we now generally refer to as git-based CMS solutions. The second was the rise of the headless, API-first CMS as a solution adopted by enterprises.
Let’s take a look at the first trend… well… first. Netlify CMS, an open-source project from Netlify, is an example of a git-based CMS. A git-based CMS doesn’t store your content, as a traditional CMS would, but it has tools that understand how to edit things like Markdown, YAML, JSON and other formats that make up a JAMstack site. This gives the content editors tools they feel comfortable with, but, behind the scenes, their content changes are simply committed back into the repository, forcing a rebuild of the site. While Netlify CMS is installed on the site itself, other popular git-based CMS options are web-based, including Forestry and DatoCMS.
The current editing experience in Netlify CMS
The headless, API-first CMS functions much more like the editing experience in a traditional CMS. It not only offers tools for creating and editing content, but it stores that content. However, it makes that content available to the front end – any front-end – via an API. While not limited to JAMstack in any way, an API-first CMS works well with it because the creation and management of the content is separate from the display of that content on the front end. In addition, many API-first CMSs offer pre-built integrations with some of the most widely used static site generators. Popular API-first options include Contentful and Sanity.
Contentful
HeadlessCMS.org is a site maintained by Netlify that has a comprehensive list of all the available tools, both git-based and API-first. For a good look at the differences, pros and cons between choosing a git-based versus an API-first CMS, check out this post by Bejamas.
Both git-based and API-first headless CMS options began to give non-technical content editors the tools they needed on the backend to create content. The awkwardness of these „teenage years” comes from the fact that the tooling is still disconnected from the frontend. This makes it difficult to see how changes you’ve made in the backend will impact the frontend until those changes are actually committed to the repo or pushed live via the API. Add in the time cost of a rebuild and you have a less than ideal editing experience where mistakes can more easily make it to the live site.
A Look at the future
So what does the future look like when the JAMstack CMS is finally grown up? Well, we got a good look at this year’s JAMstack_conf_sf. Coincidentally, there were two presentations demonstrating new tools that are bringing the content editing experience to the frontend, letting content editors see what they are changing, how their changes will look and how they will impact the layout of the site.
The first presentation was by Scott Gallant of Forestry. In it, he introduced an new open source projects from Forestry called TinaCMS that brings a WYSIWYG style content editing experience to the frontend of sites that use a git-based CMS and Gatsby or Next.js (both React-based tools).
TinaCMS
The second presentation was by Ohad Eder-Pressman of Stackbit (full disclosure: I work as a Developer Advocate for Stackbit) that introduced an upcoming set of tools called Stackbit Live. Stackbit Live is designed to be CMS and static site generator agnostic, while still allowing on-page editing and previewing of a JAMstack site.
Stackbit Live
What both these tools demonstrated is that we’re at a point where a „JAMStack + headless” architecture is a real alternative to a traditional CMS. I believe we’ve reached the tipping point whereby we’re no longer trading a great developer experience for an uncomfortable editing experience for content authors. By 2020, JAMstack CMS will officially be all grown up. 👩🏽🎓
I find myself web searching for some tool by Yoksel at least every month. I figured I’d list out some of my favorites here in case you aren’t aware of them.
Let’s say you have an SVG you want to use as a CSS background-image? Drop it in this URL-encoder tool to make sure it’s ready to go and safe to use.
Want to understand the difference between clipping and masking and how it works differently for SVG and CSS? We’ve written about that a few times, but Yoksel has the best reference for seeing live examples and the code for them.
Perhaps you have a SVG path that you ultimately want to use as a CSS clip-path? You might fight against absolute units, but Yoksel has a tool to fix that.
SVG filters are incredibly powerful. Hand-crafting them is pretty hard. Yoksel has GUI tool for playing with them and combining them.
Nice post from Thomas Ladd about how their front-end team does testing. The list feels like a nice place to be:
TypeScript – A language, but you’re essentially getting various testing for free (passing the right arguments and types of variables)
Jest – Unit tests. JavaScript functions are doing the right stuff. Works with React.
Cypress – Integration tests. Page loads, do stuff with page, expected things happen in DOM. Thomas says their end-to-end tests (e.g. hitting services) are also done in Cypress with zero mocking of data.
I would think this is reflective of a modern setup making its way across lots of front-end teams. If there is anything to add to it, I’d think visual regression testing (e.g. with a tool like Percy) would be the thing to add.
As an alternative to Cypress, jest-puppeteer is also worth mentioning because (1) Jest is already in use here and (2) Puppeteer is perhaps a more direct way of controlling the browser — no middleman language or Electron or anything.
Thomas even writes that there’s a downside here: too-many-tools:
Not only do we have to know how to write tests in these different tools; we also have to make decisions all the time about which tool to use. Should I write an E2E test covering this functionality or is just writing an integration test fine? Do I need unit tests covering some of these finer-grain details as well?
There is undoubtedly a mental load here that isn’t present if you only have one choice. In general, we start with integration tests as the default and then add on an E2E test if we feel the functionality is particularly critical and backend-dependent.
I’m not sure we’ll ever get to a point where we only have to write one kind of test, but having unit and integration tests share some common language is nice. I’m also theoretically opposite in my conclusion: integration/E2E tests are a better default, since they are closer to reality and prove that a ton is going right in just testing one thing. They should be the default. However, they are also slower and flakier, so sad trombone.
THE ORIGINAL? Aspirina Bayer – 2015 “Headaches will not stop you”
Source : Creative AD Awards
Agency : Garwich BBDO (Ecuador)
LESS ORIGINAL Ressacol (Remedy to avoid hangover) –2019
“Don’t let the hangover ruin the following day”
Source : Adsoftheworld
Agency : Delantero (Brazil)
THE ORIGINAL? Aspirina Bayer – 2015 “Headaches will not stop you”
Source : Creative AD Awards
Agency : Garwich BBDO (Ecuador)
LESS ORIGINAL Ressacol (Remedy to avoid hangover) –2019
“Don’t let the hangover ruin the following day”
Source : Adsoftheworld
Agency : Delantero (Brazil)
THE ORIGINAL? Aspirina Bayer – 2015 “Headaches will not stop you”
Source : Creative AD Awards
Agency : Garwich BBDO (Ecuador)
LESS ORIGINAL Ressacol (Remedy to avoid hangover) –2019
“Don’t let the hangover ruin the following day”
Source : Adsoftheworld
Agency : Delantero (Brazil)
THE ORIGINAL? Aspirina Bayer – 2015 “Headaches will not stop you”
Source : Creative AD Awards
Agency : Garwich BBDO (Ecuador)
LESS ORIGINAL Ressacol (Remedy to avoid hangover) –2019
“Don’t let the hangover ruin the following day”
Source : Adsoftheworld
Agency : Delantero (Brazil)
THE ORIGINAL? Aspirina Bayer – 2015 “Headaches will not stop you”
Source : Creative AD Awards
Agency : Garwich BBDO (Ecuador)
LESS ORIGINAL Ressacol (Remedy to avoid hangover) –2019
“Don’t let the hangover ruin the following day”
Source : Adsoftheworld
Agency : Delantero (Brazil)
As we continue with our series on effects inspired by music videos, one of the effects I’ve always been fascinated with was the kaleidoscope mirror effect. The best examples of this effect can be seen in the visually rich Pillow Talk video by Zayn. Check it out at 1:20, 1:55, 2:26, and 3:12.
The challenge is to find a way to create the effect easily and not by manually placing dozens of copies.
Fortunately, Photoshop has a couple of useful features to make this task significantly easier. First is the frequently overlooked Scripted Fill, which makes short work of creating kaleidoscope patterns and has enough options to keep you busy experimenting for hours! Paired with that is the Transform Again feature, which is a fun way to create repetitive objects similar to the way the old Spirograph used to work.
If you’re looking for a Photoshop action to create a mirror effect, check out our roundup of the best reflection and mirror effects available on Envato Market and Envato Elements.
The scripted fill is extremely useful for this type of effect, but it has to use a predefined pattern to work. Patterns that are not square tend to work best, so we will start out by extracting a musical artist from the background and creating a pattern to use.
Step 1
This technique will work with almost any image, but for this project let’s work with a musician image to best imitate the source effect from the video. Specifically, we’ll use this image of a sensual girl next to a rocky wall from Envato Market.
Grab the Quick Selection Tool (W) and paint along the model to create a selection that completely surrounds her. If the tool grabs a background area, hold down the Alt key and paint along that background to deselect it.
Step 3
Press the Refine Edge button to launch the dialogue box. Adjust the Radius to 2 px and check the Smart Radius option. Then use the Refine Radius Tool to brush along the edges of the model’s hair to create a better selection for those long locks. Then press the OK button to return to the main Photoshop interface.
Step 4
Use the selection as a layer mask by going to Layer > Layer Mask > Reveal Selection.
Step 5
Click on the layer thumbnail to make sure the focus is on the layer and not the layer mask. Then go to Edit > Define Pattern. Give the pattern a name of girl.
2. Scripted Fill Fun
With our custom pattern defined and ready to go, it’s time to use the Scripted Fill to create the kaleidoscope pattern. There are several options to experiment with; the ones listed here are just a suggestion to get you started. Feel free to craft your own patterned effect.
Step 1
Create a new document with File > New. Set the Width and Height both to 2500 px. Set the Background Contents to Other and specify the color to be black (#000000).
Step 2
Create a new layer with Layer > New > Layer (Shift-Control-N) and name the new layer Scripted Fill.
Step 3
Go to Edit > Fill and change the Contents to Pattern and set the Custom Pattern to the Guitarist pattern you created earlier. Then check the Script option box and select Symmetry Fill.
In the Symmetry Fill dialogue box, choose the following settings:
Symmetry type: 32 wallpaperP6 symmetry
Pattern Scale: 0.75
Pattern translation along width: 25% of width
Pattern translation along height: –40% of height
Step 4
Add a Hue/Saturation adjustment layer and choose the following settings:
Hue: 0
Saturation: -57
Lightness: -62
Step 5
Use the Ellipse Tool (U) set to Path and draw out a circle (800 x 800 px) centered in the middle of the canvas. Holding down the Shift key while drawing the circle keeps the shape as a perfect circle.
Step 6
Add a new layer named girl circle and go to Edit > Fill again. Change the scripted fill to Place Along Path. Then, in the Place Along Path dialogue box, apply the following settings:
Pattern Scale to 0.45
Spacing to -720 pixels
Check the Adjust spacing to fit option
Distance from path to 360 pixels
Scale progression to 100%
Color and Brightness randomness both to 0
At this point, the image should look similar to this:
3. Transform Shortcuts
To create the „blossom” effect, we will use a fun feature called Transform Again. This feature feels more like a happy accident than an intended feature. Regardless of why it’s in the program, it is certainly useful for quickly creating math-based patterns!
Step 1
Hold down the Alt key and go to Edit > Transform (Control-T). This will generate a copy of the girl circle layer. In the Options Bar, set the Width and Height scale to be 80% and the rotation to be 20 degrees.
Step 2
Hold down the Alt-Shift-Control keys and press the T key. This is the Transform Again command that can be found in the Edit > Transform menu. It makes another copy of the layer and applies the previous transformation. Continue pressing the same key combination until there arethree copiesof the girl circle layer.
Step 3
Add a new layer named gradient at the top of the layer stack. Make sure the foreground color is set to black and grab the Gradient Tool (G). Use the Foreground to Transparent preset and Radial gradient shape. Then draw out a gradient starting at the center of the canvas.
4. Finish With Some Line Art
The final stage is using the same techniques from before but on some simple lines and shapes to bring the entire effect together into something special.
Step 1
Use the Polygon Tool (U) and set the Sides to 5, Fill to null,Stroke Color to white, and stroke to 4 px. Then draw out a five-sided polygon at the center of the canvas.
Step 2
Go to Layer > Rasterize Shape to turn the vector shape into pixels. Then hold down the Alt key while clicking on the visibility toggle icon (that’s the eyeball) for the Polygon layer. That will make this the only visible layer. Go to Edit > Define Pattern and name this pattern polygon.
Step 3
Alt-click on the visibility toggle icon for thepolygon layer again to reveal all the other layers again. Add a new layer over the Hue/Saturation 1 layer and call it background lines.
Step 4
Use Edit > Fill again and set the Custom Pattern to the polygon pattern you just created. Also set the Script to Symmetry Fill.
In the Symmetry Fill dialogue box, make the following settings:
Symmetry Type: 33 wallpaperP6M symmetry
Pattern Scale: 0.4
Pattern translation along width: 50% of width
Pattern translation along height: 50% of height
Color randomness: 0
Brightness randomness: 0
Then reduce the layer’s Opacity to 25%.
Step 5
Hide the Polygon layer and grab the Polygon Tool (U) again. Set the Sides to 3 and the Stroke to 4 px. Then draw out a triangle in the center of the canvas.
Step 6
Hold the Alt key while going to Edit > Free Transform. This will create a new copy of the triangle layer to transform. Rotate the copy by around 20 degrees.
Step 7
Use the Transform Again key combination (Alt-Shift-Control-T) about 18 times to create a Spirograph type of effect at the center of the image.
Step 8
Select all of the triangle layers in the Layers panel by Shift-clicking the first one and the last one. Then group them all together with Layer > Group Layers (Control-G) and name the group Triangles.
Step 9
Go to Layer > Layer Mask > Hide All to add a layer mask to the group. Then set the foreground color to white and grab the Gradient Tool (G). Use the Foreground to Transparent preset and the Radial gradient shape. Draw out the gradient at the center of the canvas on the group’s mask to fade the triangle artwork into the human circle.
Step 10
Use the Crop Tool (C) to crop the image just below the center to complete the effect.
You Are Done!
How did your fun kaleidoscope effect turn out? Share it with us in the comments below. Want to try your hand at some other effects inspired by music videos? Then check out some of the other entries in our Music Video Inspired Effects series.
Discover Beautiful Photoshop Effects
Whether you’re into manipulating photos or searching for that special text effect, I’ve taken the time to put together this short list of assets that will bring your Photoshop game to the next level.
Whether it’s Halloween or not, this professional Photoshop action can help you create some amazing-looking zombie effects in seconds, which you can use to turn yourself or your friends into some really spooky-looking creatures.
Looking for a Photoshop action to add a dispersion effect to your photos? Well, look no further since this action will blow your mind by helping you create amazing-looking images in a matter of seconds.