As web developers, we need to rely on our knowledge, and choosing solutions we’re already familiar with is often the most convenient approach to solving a problem. However, not only technology is evolving but also our knowledge of how to use it.
For a while, we thought it’s best to use base64 encoding for inlining assets into CSS files, for example, and that loading JavaScript asynchronously will make websites faster. With more evidence and research, however, we came to realize that we were wrong. We should take this as an occasion to remind ourselves to question our habits and from now on ask ourselves if the solution we have in mind for a given problem really is still the best one we could choose.
Have you ever dreamt of exploring the deep sea and getting up close to its fascinating, weird creatures? Or maybe you’ve dreamt of boarding a spacecraft to experience the beauty of our planet from above? The desire to leave the beaten tracks and explore unfamiliar terrain is human nature.
To celebrate mankind’s urge to explore, the creative folks at Vexels created a set of 30 adventurous icons that take you on a journey from the ground of the sea right up to outer space. The set offers all the building blocks you’ll need to create your own little universe and become an explorer yourself.
Good design is already difficult enough when it has to be done on a page with something to display. However, things get even harder when you have to create pages with nothing to see on them. Like an empty inbox (hehe, good one), or a download window without downloads, for example. Empty States collects this type of pages to help you get going.
Empty Stat.es Collects Empty Pages as Best Practices
Empty Stat.es is an entirely unobtrusive collection of all different types of blank pages. Error messages, a particular kind of blank page, have an entire category dedicated to them. That’s good because error pages need a special, target-oriented design, but of course, as a Noupe reader, you already knew that. If not, just read this article with plenty of examples.
Of course, websites that serve the purpose of presenting a brand, or your freelancer portfolio, only have one error page at most, with no other empty pages. But as soon as you go ahead and create a native, or web app that has the slightest amount of data to process, you’ll face the problem. On Empty Stat.es, you can see how your colleagues have solved their respective problems.
Let the Empty Page be Noble, Helpful and Good (Goethe)
Aside from obvious, rather profane solutions, you’ll also find some helpful, as well as funny approaches. As you scroll through the examples, you’ll notice that there’s a pattern. Of course, the design is always different, but one thing stays the same in all of them.
The user is always taken by the hand, making sure that the page doesn’t have to be empty during the next visit. Whether it’s the tour planning app that suggests planning the first trip right away or the sleep tracker that asks you to track the first snooze. The empty page leads the user to the core of the app using a call to action.
It’s understandable that you as the developer of a mail app don’t expect your users to ever reach the status “inbox zero.” But don’t forgo the design for this unlikely contingency 😉
Empty Stat.es divides the gallery into categories that match the respective target resolutions. This makes it easy to sort by examples for smartphones, tablets, or desktops. While the additional category “Games Console” exists, there’s only one screenshot in there as of right now. Maybe you’d like to help fill it.
Anyone can help building the empty page gallery, as these can easily be submitted via the contact form with a screenshot upload. If you mention your Twitter handle, it will also be published as a link.
Users can either explore the gallery by browsing the categories, or by using the free text search function. “Random” presents a random empty page. Tumblr provides the platform’s technology.
Good design is already difficult enough when it has to be done on a page with something to display. However, things get even harder when you have to create pages with nothing to see on them. Like an empty inbox (hehe, good one), or a download window without downloads, for example. Empty States collects this type of pages to help you get going.
Empty Stat.es Collects Empty Pages as Best Practices
Empty Stat.es is an entirely unobtrusive collection of all different types of blank pages. Error messages, a particular kind of blank page, have an entire category dedicated to them. That’s good because error pages need a special, target-oriented design, but of course, as a Noupe reader, you already knew that. If not, just read this article with plenty of examples.
Of course, websites that serve the purpose of presenting a brand, or your freelancer portfolio, only have one error page at most, with no other empty pages. But as soon as you go ahead and create a native, or web app that has the slightest amount of data to process, you’ll face the problem. On Empty Stat.es, you can see how your colleagues have solved their respective problems.
Let the Empty Page be Noble, Helpful and Good (Goethe)
Aside from obvious, rather profane solutions, you’ll also find some helpful, as well as funny approaches. As you scroll through the examples, you’ll notice that there’s a pattern. Of course, the design is always different, but one thing stays the same in all of them.
The user is always taken by the hand, making sure that the page doesn’t have to be empty during the next visit. Whether it’s the tour planning app that suggests planning the first trip right away or the sleep tracker that asks you to track the first snooze. The empty page leads the user to the core of the app using a call to action.
It’s understandable that you as the developer of a mail app don’t expect your users to ever reach the status “inbox zero.” But don’t forgo the design for this unlikely contingency 😉
Empty Stat.es divides the gallery into categories that match the respective target resolutions. This makes it easy to sort by examples for smartphones, tablets, or desktops. While the additional category “Games Console” exists, there’s only one screenshot in there as of right now. Maybe you’d like to help fill it.
Anyone can help building the empty page gallery, as these can easily be submitted via the contact form with a screenshot upload. If you mention your Twitter handle, it will also be published as a link.
Users can either explore the gallery by browsing the categories, or by using the free text search function. “Random” presents a random empty page. Tumblr provides the platform’s technology.
This arrangement was fine until 2010, when Ethan Marcotte published his seminal article, Responsive Web Design, which popularized the technique of using Cascading Style Sheet media queries to modify the layout of web pages to fit whatever size device a person is using. Responsive web design also increased interest in optimizing the performance of websites based on screen size. This focus made clear just how big a pain point images are for performance, accounting for most of the bytes included on each web page. With responsive design, developers began to send images that look beautiful on large desktop displays to all users, which resulted in sending extra bytes to smaller mobile devices, making the mobile browsing experience much slower than necessary.
If you’re reading this, you’re probably already familiar with responsive images. Even so, it may be helpful to have a little background. (Then we’ll get to the WordPress part, and how to make them even better with Cloudinary.) For most of the Web’s existence, any time you wanted to include an image on a web page, you would create markup that looked like this:
<img src="/path/to/my/image.jpg" alt="a very nice image">
In this example, the element references a single image file named `image.jpg` located on a server at `/path/to/my`. This markup is straightforward in that it tells the browser to download and render a specific image file, referenced by the src element, onto the web page.
This arrangement was fine until 2010, when Ethan Marcotte published his seminal article, Responsive Web Design, which popularized the technique of using Cascading Style Sheet media queries to modify the layout of web pages to fit whatever size device a person is using. Responsive web design also increased interest in optimizing the performance of websites based on screen size. This focus made clear just how big a pain point images are for performance, accounting for most of the bytes included on each web page. With responsive design, developers began to send images that look beautiful on large desktop displays to all users, which resulted in sending extra bytes to smaller mobile devices, making the mobile browsing experience much slower than necessary.
An intrepid group of web developers, known as the Responsive Issues Community Group (RICG), set out to fix this problem by introducing new HTML so that developers could identify different image sources for a web page based on contextual information like screen size. Here’s an example of one of the new markup patterns:
In this example, the markup now includes two new attributes: a srcset, which contains a list of image files and their corresponding pixel widths, and sizes, which gives the browser an estimate of the image’s intended layout size, depending on certain media query conditions. The src attribute is included to serve as a fallback for older browsers that don’t support the new srcset and sizes attributes.
This new markup allows browsers to determine and download the image that’s most appropriate, saving bytes (and time) for users. For a deeper dive into this and other responsive image markup patterns, I strongly recommend reading Jason Grigsby’s Responsive Images 101 series.
Responsive Images in WordPress
At the end of 2015, in partnership with members of the RICG, WordPress shipped version 4.4, which included native support for responsive images. WordPress 4.4+ automatically generates srcset and sizes attributes for images included in a post or page. The WordPress implementation uses already-available image resizing functionality to accomplish this task. Before version 4.4, WordPress already created several smaller versions of any image uploaded to your media library. Since version 4.4, WordPress uses those additional sizes to create srcset attributes so that people visiting your site can benefit by downloading an image file that is no larger than what they need.
This implementation works well out of the box but has a few limitations. For instance, WordPress creates image size variations at the time the original is uploaded, which means that only image sizes that are defined at that point will be available in srcset attributes. In addition, image processing can overtax the resources available on many shared hosting plans, so WordPress has to be conservative about how many variations of each image it creates by default.
Ideally, you could dynamically create image sizes when they’re needed for your layouts and offload the processing to an external image service. Fortunately, services like Cloudinary exist, which do exactly this. I’ve been impressed with the work Cloudinary has been doing in the image management space, so I was wanted to see how I could use the service to extend the default responsive image implementation in WordPress.
Using Cloudinary to Extend WordPress
Cloudinary provides tools to perform several image transformations besides simple resizing, and it has published its own WordPress plug-in to the WordPress.org plug?in repository. The plug?in doesn’t yet support responsive images out of the box, so I wanted to see if I could make a slimmed-down plug?in using its Image Upload application programming interface. My goal was to sync images from my media library to Cloudinary’s service and have Cloudinary automatically create the image sizes needed to serve responsive images from its content delivery network (CDN).
I’ve created a demo plug?in, which I have published to GitHub, so that you can check it out. In a follow-up article, I’ll explain more of the technical details and design decisions of the plug?in, but for now I’ll describe what the plug?in does at a high level.
First, when you add an image to your WordPress media library, WordPress uses Cloudinary’s PHP integration library to upload that image to Cloudinary and task its service with creating alternative image sizes to be used in the srcset attribute. Where this gets interesting is that Cloudinary has developed a unique responsive image breakpoint solution that automatically calculates the optimal image sizes needed based on the content of your image.
Once the image is uploaded to Cloudinary, the service returns data associated with the newly created image sizes to your WordPress site. By making use of WordPress filters, we can use that data to build srcset attributes for our images that reference the files from the Cloudinary CDN rather than locally hosted images.
Wrap-Up
By combining the simplicity of the WordPress native responsive image functionality with the image management tools that Cloudinary provides, you can manage your content exactly how you want while providing visitors to you site with images that are automatically optimized for the capabilities of their device, without having to worry about each image added to your site individually. In my next article, I’ll dive into the specifics of the code I developed for my plug?in. For now, I hope you can see how powerful combining WordPress with services like Cloudinary can be.
Thanks to Microsoft’s radical redesign of Windows 10, you may not recognize much of the classic operating system’s UI anymore. That’s because the company has decided to go in a new direction, cleaning up the software’s interface for a more minimalist approach.
According to a recent tweet by Tom Hounsell, a Microsoft enthusiast and the developer behind BuildFeed—the Windows build tracker—the redesign removes a few of the classic features of Windows that users are familiar with and replaces them with significant changes, mainly to the open windows and taskbar areas.
It seems that design elements like the title bar and windows borders—mainstays of Microsoft UIs—have fallen out of favor in this latest update. The screen grab by Hounsell shows that Microsoft is dropping both for Windows 10. As for the well-known close, maximize, minimize, and restore buttons, they’ve been fused into the window itself, so any content goes straight to the edge. Overall, this makes for a crisper and simpler appearance that removes any hints of frills and gimmicks in the design.
The taskbar gets a blander look, as it appears to lose color in this iteration.
As for the app icons themselves—something really interesting is going on with them, color-wise. While they’re going to automatically show up black, they’ll return to their ‘regular’ colors when each app is up and running in the OS.
Also of note is the so-called “Acrylic” element that’s actually not as new as the other design changes in this update. This component is essentially just a new approach to the old “Aero,” which was around during the Vista era; it blurred background apps and interface elements.
While the approach is doubtlessly more modern, questions being raised include whether or not longtime Windows users are going to positively receive this new approach, as well as how easily said users will take to the new UI. Needless to say, it’s going to take some time to get used to, both from an aesthetic and functional sense.
Designers and users excited about this preview will have to wait just a bit longer in order to get their hands on a usable version of Windows 10 with this redesign. The company has plans to officially reveal this new appearance in a Windows 10 update later this year.
Project Neon, as this new redesign is internally known at Microsoft, is only the latest in a memorable history of disputable UI-design decisions at the company. Who could forget 2012’s foray into ultra-simple flat design with the Metro Tile unveiling? That radical redesign was the subject of some criticism, as traditional desktop users felt that it was awkward and hard to use while tablet and mobile users generally felt that it was better.
Only time will tell if the company’s Windows 10 design reboot will spark the same type of mixed reviews or will instead be received warmly by a broad base of users this time around.
Let’s say you have a photographic image that really should be a JPG or WebP, for the best file size and quality. But what if I need transparency too? Don’t I need PNG for that? Won’t that make for either huge file sizes (PNG-24) or weird quality (PNG-8)? Let’s look at another way that ends up best-of-both-worlds.
The goal is to clip myself out of the image, removing the background. My technique for that is usually to use Photoshop and cut a clipping path manually with the Pen tool.
Now I can select the inverse of that clipping path to easily remove the background.
Attempting to save this as a 1200px wide image as PNG-24 out of Photoshop ends up as about a 1MB image!
We could cut that by 75% using PNG-8, but then we 1) get that weird Giffy look (less photographic) and 2) have to pick a matte color for the edges because we aren’t getting nice alpha transparency here, just binary transparency.
Gosh what if we could just use JPG? The quality and file size is way better.
No transparency though.
But wait! Can’t we just clip this thing out? We have clip-path now. Well… yeah. We do have clip-path. It can’t take a path(), though, and what we’ve created for vector points in Photoshop is path data. It could take a polygon() though, if we made all the lines straight. That’s probably not ideal (I’m curvy!). Or we could make a element in some inline SVG and use clip-path: url(#id_of_clipPath);, which does support a inside.
There is masking as well, which is another possibility.
Let’s look at a third possibility though: put everything into . That made some logical sense to me, so all this stays together and scales together.
The trick is to make two things:
The JPG
The clipping
The JPG is easy enough. Output that right from Photoshop. Optimize.
Now we can set up the SVG. SVG is happy to take a raster graphic. SVG is known for vector graphics, but it’s a very flexible image format.
There’s a technique for improving one’s user interface design skills that is the most efficient way I know of expanding one’s visual vocabulary but that I’ve rarely heard mentioned by digital designers.
I’m talking about copywork. Copywork is a technique that writers and painters have been using for centuries. It is the process of recreating an existing work as closely as possible in order to improve one’s skill. In our case, this means recreating a user interface (UI) design pixel for pixel.
The SaaS trend has been unabated for years now. Developers are happy about that; users aren’t. Now, the trend is also making its way to the developers of WordPress plugins. Let’s see what the up- and downsides are.
WordPress Plugin as SaaS: Not All New
I’m sure you know one of the oldest SaaS plugins for WordPress: Akismet. Akismet simply connects your blog to the API of Automattic’s spam preventer.
The entire logic, especially the algorithm that provides the spam detection, doesn’t run on your blog. That’s good, because otherwise, your server’s performance would most likely suffer. The spam detector’s logic would be pretty vulnerable as well, as it would only have to be extracted from the plugin code via reverse engineering. VaultPress, the backup plugin, made by the same people, works as a SaaS, the long version being “Software as a Service.”
SaaS in General: A Concept Asserts Itself
SaaS solutions offer the advantage of higher cost efficiency for larger installations. Instead of one-time license fees per user, the client pays significantly lower, monthly fees which can definitely accumulate over one or two years, matching or even exceeding the original purchase cost. However, the monthly burden is light. For the most part, the fees also include continuous support, meaning functional updates, expansions, as well as the necessary support. This way, the customer always receives an up-to-date version of the product.
Since the client normally only has to run a small part of the SaaS solution’s functionality locally, using applications that require particular processing power is possible as well. To achieve that, the SaaS providers use scalable platforms, like Amazon Web Services or Microsoft’s Azure. These platforms make sure that performance and storage can be scaled infinitely – an ability that the local computer does not have. This lets the application become as powerful as you want it to, as there are no physical limits.
Nonetheless, customers still have mixed feelings towards the concept. The desire to own something that you pay for is still spread too widely. However, this desire has already been softened over the years, with the triumphal march of streaming services being a significant factor in the media section. Today, the problem is more rooted in the private section, where many potential customers still prefer a one-time payment over paying every month.
Disadvantages from the customer’s point of view would be the necessity of a permanent, stable internet connection, as well as the related security concerns. A possible total failure in case of bankruptcy of the SaaS provider can not be written off either.
The SaaS provider, on the other hand, enjoys better control over his product, as well as the ability to implement changes, and improvements at any time, without having to stick to update cycles. Overall, the provider has a lot more sovereignty over his product than before. By expanding his solution, the provider always has the option of upselling, meaning additional offers being made to the existing customers.
The liquidity effect of the SaaS solution should not be underestimated either. Over the period X, the customers will pay their usage fees on a regular basis. This type of numbers is perfect for any bank and grants planning security for the respective periods of time. On the other hand, the SaaS provider has to finance any investment into the infrastructure with the usage fees. Especially in the beginning, this risk is not to be taken lightly, while it basically doesn’t exist when selling stand-alone plugins running on client hardware.
WordPress and SaaS: WTF?
As mentioned before, SaaS for WordPress plugins is not an entirely new concept. And, in fact, the model can make sense for many commercial plugins, but it makes much less sense for others. In general, the SaaS model allows for more powerful functional add-ons than the previous model of installing a bunch of PHP files with the complete program code. That should be undisputed.
The concept of “pension-like” income seems to be the key reason as to why this solution is so attractive to WordPress developers. Of course, it is somewhat unfair to call it pension-like income, as that would imply payment without service. With SaaS plugins, developers are likely to be busier than ever before. That’s because, with monthly fees, the clients expect a consistently high value in return. Nonetheless, the perspective of getting paid each month is increasingly fascinating for freelance developers.
What’s the Deal With the Idea to Design WordPress Plugins as SaaS Solutions?
Returning Income
Over the course of a year, a monthly usage fee adds up to a nice amount of money that you may not have been able to demand as a single payment. It’s very likely that a SaaS model will get you more money for your plugin than before. For the first time, you can make clear liquidity plans. Calculate how many subscribers you need to cover your yearly costs. There’s something to be said for that.
Protection From Piracy
You don’t give out your code, so you can be sure that nobody can steal it. This is an essential factor if you create plugins for a living. Reverse engineering of plugins is not that hard, but it’s an entirely different thing with “real software.”
Easier Development
You do what you want, whenever you want to. At most, your customers may be happy if you hyperactively push out new features. Nobody has to install updates anymore, and you don’t need to care about the security of old versions. Life can be so simple.
You’ll also like to hear that the cloud server you want to use is the only relevant environment that your SaaS has to run on. For the first time, it doesn’t matter what environment requirements your clients have – a dream come true.
Feedback and Usage Data
As of right now, you don’t know anything about your customers. You don’t know where your plugin is being used. You don’t know the size of the page that it serves. You don’t know if it works smoothly and if the occurring errors are critical or not. You don’t know anything, except for the fact that you sold it.
Of course, all of this changes once you design your plugin as a SaaS. Doing so gives you access to all the things you didn’t have access to before. And these aren’t irrelevant either. Essentially, you get a kind of automatic feedback from usage data. You can see the weaknesses of your plugin, and if it doesn’t do what it’s supposed to in any regard.
Another aspect is just as important. You get target group metrics. You have access to more than sheer addresses. You can effectively look into the needs of your potential clients, allowing you to further develop your product based on secured data. This begins with you seeing what type of website typically uses your plugin, and to what extent. I wouldn’t even be surprised if you discovered one or two features that nobody ever uses.
Why Wouldn’t You Offer WordPress Plugins as SaaS?
Of course, there are plugins, like Akismet as mentioned earlier, that can’t be realized as Saas if you don’t want to make compromises regarding the scope of service, and the performance. This phenomenon only applies to a minority of possible plugins, though. Thus, in most of the cases, you won’t have to compare and weigh the advantages and disadvantages.
Risk of Customer Acceptance Regarding the Price
Not everyone will like renting a plugin. Thus, an excellent communication strategy is required to convince potential buyers. This may be a general truth that applies at all times. But it’s also important that your product allows for the believable development of this type of strategy.
If you developed an exotic plugin that allows your customers to import a remote file format, to execute a particular action that may be required once a year, you’d have a tough time trying to come up with a reasonable strategy that leads to a constant income. In that case, you should identify your target audience, and sell your plugin via one-time payment.
Risk of Customer Acceptance Regarding Data Protection
When your plugin processes information, that doesn’t necessarily happen on your customers’ servers. For you, this is beneficial, as you don’t have to worry about processor power and storage space. However, you’re the one who pays for AWS or Azure, or any other platform service provider when running your plugins as SaaS.
Depending on what type of information is being processed, your clients will only feel safe if it’s made clear, who stores the data, as well as where, and why it’s stored. A server location within the customer’s country should lower the acceptance threshold, but a particular suspicion could remain. You can’t really influence this psychological question. But it has the potential to massively affect the sales of your plugin.
Conclusion: WordPress Plugins as Saas? Yes, But…
I think it should be pretty clear that the idea to offer WordPress plugins as SaaS neither is clearly amazing nor completely dumb. As always, the truth is somewhere in between and heavily depends on the factors of each individual case. In general, it can be said that SaaS becomes increasingly more relevant the more features the plugin offers. If, on top of that, there are aspects of machine learning included, there’s no way around SaaS. Overall, all aspects brought up in this article have to be applied to the own idea, and then be weighed.
If you can imagine a smooth entry into the world of SaaS, you should definitely check out Freemius. They basically offer a narrow-gauge SaaS out of the box.
Further Reading:
The Problem in WordPress – Musings on Plugins & SaaS | Chris Lema
WordPress Plugins: SAAS! Gota Go SAAS. Right Brah? | Josh Pollock
Careful! This Simple Pricing Experiment Cost Us $2,000 in Revenue | Freemius
8 Awesome WordPress Web Apps Paving the Way for WordPress as a SaaS Platform | Elegant Themes