Creative Commons Launches New Search Engine with Access to 30 Million Images

After more than two years in beta, Creative Commons has launched its new search engine, featuring a completely redesigned search page, improved navigation and search filters, better search loading times, and more accurate search phrase relevance. It has replaced the old search portal and is now linked from the homepage.

This update to CC Search also improves attribution options, making it easy for users to copy the text or HTML with the license icons included. Each image also has a unique link for users to provide optional feedback on how they using the works.

Creative Commons has indexed 30 million CC-licensed images from 19 collections, including Flickr, Geograph Britain and Ireland, Bēhance, Metropolitan Museum of Art, and a number of other smaller collections. The nonprofit organization’s long-term goal is to provide access to all 1.4 billion CC-licensed and public domain works on the web.

Creative Commons will soon be expanding its image catalog with works from Europeana and Wikimedia Commons and is also adding open textbooks and audio later in 2019. The next items on the CC Search roadmap for this quarter include advanced filters to the home page, the ability to browse collections without entering search terms, and improved accessibility and UX on mobile. Some of this work will be performed by Google Summer of Code students beginning next month.

CC-licensed images are popular with bloggers and designers but tracking down license and attribution information can be tedious when searching various collections across the web. CC Search aggregates some of the most popular sources and is steadily improving the performance of its search tool. If you experience any issues, all of the CC Search code (CC Search, CC Catalog API, CC Catalog) is open source on GitHub and the organization welcomes bug reports and contributions from the community.

Conversion Optimization

Conversion optimization gives you more customers with the traffic and marketing budget you already have.

Even better, once you find these conversion wins, you get to benefit from those wins day in and day out.

These are permanent increases to your business.

Start with our Beginners Guide to Conversion Optimization which breaks all this down in detail.

To simplify everything, we put together an extremely detailed guide on How To Double Your Conversions in 30 Days. It’s a step-by-step process for making an immediate improvement to your conversion rates.

Before jumping into all the conversion tactics, we recommend getting a strong foundation with how conversion optimization works. By knowing how customer personas and conversion funnels work, you’ll know which conversion tricks to use for your business:

Website Optimizations

The first step of any conversion optimization program is to optimize your website. There’s tons of improvements that you can ship today. There’s no need for intense A/B testing programs or complex tactics, we always start with the basics.

A thorough polish of your website can easily boost conversion rates 30-50%. That’s a permanent lift from a one-time project.

One of the pitfalls that I’ve fallen into the past: holding back on obvious improvements until I had an A/B testing program that could verify everything. I wish that I had launched improvements a lot earlier instead of waiting. These days, I pursue good-enough instead of perfect.

To help guide you through all the best practices that are worth shipping right away, we put together these guides:

Tips and Tactics

Regardless of what you’re optimizing, there’s an endless number of tips and tactics for getting an extra boost in your conversion rates. When you’re ready to start going after the smaller wins to squeeze every last bit out of your traffic, these guides will give you plenty of ideas to use:

Landing Pages

The right landing page can make or break a funnel.

I’ve seen landing pages improve conversion by over 400% with the right offer and design. That’s right, I’ve quadrupled lead and signup flow by finding a stronger offer for my landing page. Think of it this way: if you were previously paying $10 for a lead, that kind of win would reduce your lead cost to $2.50. Getting 4X the lead volume with the same marketing budget would catapult your business to the next level.

I’m not going to lie, there’s a bit of luck in finding these kinds of wins. But there’s always a lot of things you can do in order to stack the odds in your favor.

We’ve put together all our best practices for landing pages:

A/B Testing

I personally love A/B testing. There’s something about getting hard data on what truly works that I’ve always found to be addictive.

A quick warning: only start A/B testing once you have a ton of data to work with. Even though I’ve built A/B testing teams for multiple businesses, I rarely A/B test these days. There’s just too many other major wins to pursue first. I’m more focused on getting the core funnel to a healthy place before running any A/B tests.

Once traffic is flooding your site and you’re scaling nicely, consider an A/B testing program for that little extra boost. These guides show you how:

Traffic Optimization

While most of our conversion optimization work happens on our site, there are also optimization wins to help with our traffic. Whether it’s SEO or paid traffic, you’ll want to optimize your entire funnel. Use these guides to get started:

The Simplest Ways to Handle HTML Includes

It's extremely surprising to me that HTML has never had any way to include other HTML files within it. Nor does there seem to be anything on the horizon that addresses it. I'm talking about straight up includes, like taking a chunk of HTML and plopping it right into another. For example the use case for much of the entire internet, an included header and footer for all pages:

...
<body>
   <include src="./header.html"></include>

   Content

   <include src="./footer.html"></include>
</body>
...

That's not real, by the way. I just wish it was.

People have been looking to other languages to solve this problem for them forever. It's HTML preprocessing, in a sense. Long before we were preprocessing our CSS, we were using tools to manipulate our HTML. And we still are, because the idea of includes is useful on pretty much every website in the world.

Use PHP

Can you use PHP instead?

...
<body>
   <?php include "./header.html" ?>

   Content

   <?php include "./footer.html" ?>
</body>
...

This will perform the include at the server level, making the request for it happen at the file system level on the server, so it should be far quicker than a client-side solution.

Use Gulp

What's even faster than a server-side include? If the include is preprocessed before it's even on the server. Gulp has a variety of processors that can do this. One is gulp-file-include.

That would look like this:

...
<body>
   @@include('./header.html')

   Content

   @@include('./footer.html')
</body>
...

And you'd process it like:

var fileinclude = require('gulp-file-include'),
  gulp = require('gulp');
 
gulp.task('fileinclude', function() {
  gulp.src(['index.html'])
    .pipe(fileinclude({
      prefix: '@@',
      basepath: '@file'
    }))
    .pipe(gulp.dest('./'));
});

Looks like this particular plugin has fancy features where you can pass in variables to the includes, making it possible to make little data-driven components.

Use Grunt

This is what the grunt-bake plugin does. You'd configure Grunt to process your HTML:

grunt.initConfig({
    bake: {
        your_target: {
            files: {
                "dist/index.html": "app/index.html",
            }
        }
    }
});

Then your HTML can use this special syntax for includes:

...
<body>
   <!--(bake header.html)-->

   Content

   <!--(bake footer.html)-->
</body>
...

Use Handlebars

Handlebars has partials.

You register them:

Handlebars.registerPartial('myPartial', '{{name}}')

Then use them:

{{> myPartial }}

There is also fancy features of this that allow for evaluation and passing data. You'll still need a processor to run it, probably something like gulp-handlebars.

Speaking of templating languages which make use of curly braces... Mustache has them, too.

Use Pug

Pug is an HTML preprocessor that has a whole new syntax for HTML that is a bit more terse. It's got includes though.

...
body
   include ./header.html"

   p Content

   include ./footer.html"

   ...

Then you run it with something like gulp-pug.

Use Nunjucks

I love me some Nunjucks! Nunjucks has includes. You'd do it like this:

...
<body>
   {% include "./header.html" %}

   Content

   {% include "./footer.html" %}
</body>
...

If you put that in a file called index.njk, you could process it with a simple Node script into index.html like this:

const nunjucks = require("nunjucks");
const fs = require("fs");

fs.writeFile("index.html", nunjucks.render("index.njk"), function(err, data) {
  if (err) console.log(err);
  console.log("Compiled the Nunjucks, captain.");
});

Or process it with something like gulp-nunjucks.

11ty has Nunjucks built-in, along with many of the other mentioned so far. Might be good for you if you're actually building a little site.

Use Ajax

Say you had...

<body>
  
  <header></header>
  
  Content.
  
  <footer></footer>

</body>

You could fetch the contents for the header and footer from respective files and dump the contents in.

fetch("./header.html")
  .then(response => {
    return response.text()
  })
  .then(data => {
    document.querySelector("header").innerHTML = data;
  });

fetch("./footer.html")
  .then(response => {
    return response.text()
  })
  .then(data => {
    document.querySelector("footer").innerHTML = data;
  });

Speaking of JavaScript... If you're building your site using a JavaScript framework of just about any kind, building through components is kind of the main deal there and breaking parts you want to include in other files should be no problem. Some kind of import Header from "./header.js"; and <Header /> is the territory you'd be in in React land.

Use iframes

You could do this:

<body>
  
  <iframe src="./header.html"></iframe>
  
  Content.
  
  <iframe src="./footer.html"></iframe>
  
</body>

But the content in those iframes does not share the same DOM, so it's a bit weird, not to mention slow and awkward to style (since iframes don't know the heights of their contents).

Scott Jehl documented a cool idea though: You can have the iframe inject the content of itself onto the parent page then remove itself.

<body>
  
  <iframe src="header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
  
  Content.
  
  <iframe src="footer.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
  
</body>

Use Jekyll

Jekyll is a Ruby-based static site generator with includes. You keep your includes in the /_includes/ folder, then:

<body>
  {% include header.html %}
  
  Content.

  {% include footer.html %}
</body>

Jekyll is a big one, so I'm calling it out here, but there are a ton of static site generators and I'd wager any of them can do includes.

Use Sergey

OK, I'll call out one more SSG because it's new and super focused. Sergey has a web components style format:

<body>
  <sergey-import src="header" />

  Content.

  <sergey-import src="footer" />
</body>

You'd name the files header.html and footer.html and put them in /includes/ and then it'll make a build with the includes processed when you run the npm script it has you do.

Use Apache SSI

Apache, a super duper common web server, can do includes. You do it like this:

<body>
		
  <!--#include file="./header.html" -->
  
  Content
  
  <!--#include file="./footer.html" -->
  
</body>

But you need the right Apache configuration to allow stuff. I tried my best to get a working demo going but didn't have much luck.

I tried using .htaccess within a folder on an Apache server and flipping on what I thought was the right stuff:

Options +Includes

AddType text/html .html
AddOutputFilter INCLUDES .html

I'm sure there is some way to get it working though, and if you do, it's kinda neat that it needs zero other dependencies.

Use CodeKit

Mac only, but CodeKit has a special language called Kit it processes where 90% of the point of it is HTML includes. It uses special HTML comments:

...
<body>
   <!-- @import "./header.html" -->

   Content

   <!-- @import "./footer.html" -->
</body>
...

Use Dreamweaver

Lol jk. But it really is a thing. DWTs, baby.

Holy Crap

That's a lot of ways, isn't it?

Like I said at the top, it's very surprising to me that HTML itself hasn't addressed this directly. Not that I think it would be a great idea for performance to have <include> statements that trigger network requests all over our code, but it seems in-line with the platform. Using ES6 imports directly without bundling isn't a great idea always either, but we have them. @importing CSS within CSS isn't a great idea always, but we have it. If the platform had a native syntax, perhaps other tooling would key off that, much like JavaScript bundlers support the ES6 import format.

The post The Simplest Ways to Handle HTML Includes appeared first on CSS-Tricks.

IT’s Role in the Cloud Era

Great having the opportunity to speak with Raj Sabhlok, president of ManageEngine and Zoho, during the ManageEngine user conference in Dallas. During his keynote, Raj shared his thoughts on how the role of IT has changed as enterprises move to the cloud. 

The adoption of the cloud has spurred several other trends: 1) the integration of data and applications; 2) cybersecurity; 3) cloud-native software development; and, 4) systems of intelligence.

Cloud APIs and How to Mitigate the Security Risks

Due to its agile, flexible, and cost-efficient services, cloud solutions are inevitable for business operations and so are the unavoidable security risks and the probability of malicious attacks that you might have to endure. Cloud security threats are plenty. CSA’s nefarious twelves have listed and positioned Cloud API and insecure interfaces in the number three among the other persistent risk factors that are associated with cloud computing and the OWASP Top Ten report also acknowledged it as a primary security concern that demands intensive risk mitigation efforts.

Cloud Application Programming Interface (Cloud API)

A Cloud Application Programming Interface (Cloud API) is what facilitates the cloud services by enabling the development of applications and services provisioning the cloud hardware, software, and platforms. Cloud API is a gateway that provides access to the direct and indirect cloud infrastructures and software as the services. Cloud APIs are the means to interact with the cloud infrastructure to designate the computing, storage, and network resources for the concerned cloud applications or services. A key element in provisioning the cloud services cloud APIs are primarily based on the REST and SOAP frameworks. Along with cross-platform and cloud providers' APIs, there are also open APIs and vendor-specific APIs that helps to control the cloud resources and their distribution.

Run Axon Server on Kubernetes or Virtual Machines?

Running applications built with Axon Framework on Kubernetes is a no-brainer, but is Kubernetes a good choice for running Axon Server with the wide choice of deployment options and environments available, andwhat factors do you need to consider when deploying Axon Server?

Whether you’re developing a greenfield event-driven microservices application or you’re taking your existing monolithic application and "strangling" it into one, Axon Framework paired with Axon Server works well together to handle both scenarios.

Microsoft's Open Source PWABuilder 2.0 Now Available

Microsoft recently announced the v2 release of its PWABuilder. PWABuilder is a Microsoft open source tool that helps developers convert web apps to Progressive Web Apps (PWAs). PWA is a term initially created by Google, but has spread to other companies building apps whose functionality blends native characteristics of web, mobile, and offline apps.

What Traits Should Your Startup Look for in a Software Engineer?

You are a non technical founder and have an idea that you think can be a potential market disruptor. You have done the market research, have talked with a few customers, fleshed out the product features and functionality and probably have started building a product requirements document. You have pitched your idea to a few investors (or friends and family) and have secured seed funding that will give you a 6 months to a year runway to build the product.

BuddyPress 5.0 to Display Debug Info in the New Site Health Info Screen

The upcoming BuddyPress 5.0 release will add plugin-specific debug info to the new Site Health Info screen that is coming in WordPress 5.2.

Mathieu Viet, who contributed the patch, said the information could be very useful to help solve issues on the BuddyPress forums. The panel is displayed at the bottom of the screen. It includes the BuddyPress version, active components, active template pack, and a list of other component-specific settings information.

This is a good example of how plugins can hook into this screen to add specific debug information. Users who need support can copy the information from the screen and paste it into the support forums for faster assistance with their issues.

BuddyPress 5.0 is expected at the end of May and will ship with this new site health enhancement.

Big Data Trends to Look Out for in 2019

Data is what moves forward digital innovation in innumerable and diverse areas, and it is small wonder that advancements and developments in big data are among the most influential in business and beyond. Organizations that are the first to find solutions to the most important data challenges gain significant advantages over their competition. In this article, we will take a look at some of the most prominent trends in big data that are worth watching this year.

1. Data Management Remains Challenging

The principle behind big data analytics has always been and remains rather straightforward: you collect a lot of data, find meaningful patterns in it, train machine learning algorithms to notice them, and create models that automatically detect such patterns. However, the practical implementation of this approach remains problematic. You have to use data coming from a number of silos, clean it up, and label it for the purposes of machine learning and implement such a system so that it works securely and stably. There are still no easy solutions to all these problems, which means that experienced data engineers are still going to be among the most high-demand IT specialists.

The Challenges of Legacy Software

We – as a software provider ourselves – see legacy software all the time. It can’t be neglected that a lot of enterprises still run business-critical workflows, customer-facing applications, and other important applications on outdated solutions.

There are many challenges and threats that come with maintaining legacy software.

Implementing DevSecOps With 1,162 Apps

Stopping builds when a vulnerability is detected should be a basic component of CI/CD and DevSecOps. It helps ensure compliance, but it is also a major shift from how things are done now. Consequently, it can be a major source of frustration to developers. After all, all of their hard work is about to be unleashed in all of its glory to the world and the new system halts it in its tracks. It can be another source of frustration "brought on by security."

This is a reality of culture change and something that must be managed to be successful in implementing DevOps in an organization. Ramping up new processes and allowing team members to see the value to them and the organization as a whole facilitates a successful culture change.

Distance Calculations Between Points With the HERE JavaScript SDK

When I'm interacting with developers using HERE APIs and services, one common question I get is around distance calculations. The HERE SDK and APIs make it easy to calculate paths or routes, but it isn't the most obvious if you want to pull the total distance from those calculations. In fact, there are multiple different distances that can be obtained.

As a developer, you could be searching for the distance between two points regardless of roadways. Take, for example, air travel or similar for that type of distance. You could also be searching for the distance between two points along a route that can be navigated. Think your GPS when you're driving or similar for that type of distance.

How Can AI Be Used in Schools?

It's perhaps fair to suggest that much of the discussion to date around artificial intelligence and education has revolved around the impact AI will have on jobs, and the changes in skills required to work effectively with and alongside the new technology. It's been much less common to explore how AI might impact the act of education itself, so a recently published report from the innovation group, NESTA, makes timely reading.

The report first looks at the way AI is being used in workplaces today, before then exploring possible changes in the future. NESTA identified three main uses of AI in education today:

Episode 9: How to Deliver a Kubernetes Microservices Platform

Over the past few episodes, we have talked in detail about a number of aspects of delivering an agile platform. We've looked at Kubernetes, NoSQL, DevOps, and logging and tracing. These are all essential elements in the recipe of an agile microservices platform. In this episode, we talk about our approach for delivering the whole thing, a Kubernetes technology platform in the cloud that you can use to rapidly develop microservices-based applications.

Summary

At a high level, our approach is split into four areas: