Caire – content aware image resize library

Caire is content aware image resize library.

How does it works

  • An energy map (edge detection) is generated from the provided image.
  • The algorithm tries to find the least important parts of the image taking into account the lowest energy values.
  • Using a dynamic programming approach the algorithm will generate individual seams accrossing the image from top to down, or from left to right (depending on the horizontal or vertical resizing) and will allocate for each seam a custom value, the least important pixels having the lowest energy cost and the most important ones having the highest cost.
  • Traverse the image from the second row to the last row and compute the cumulative minimum energy for all possible connected seams for each entry.
  • The minimum energy level is calculated by summing up the current pixel with the lowest value of the neighboring pixels from the previous row.
  • Traverse the image from top to bottom and compute the minimum energy level. For each pixel in a row we compute the energy of the current pixel plus the energy of one of the three possible pixels above it.
  • Find the lowest cost seam from the energy matrix starting from the last row and remove it.
  • Repeat the process.

AutoMapper – Declarative data mapper for PHP 7

AutoMapper can map data from array/object to existing array/object or marshal a new one.

Mapping rules specified in declarative way using three simple definitions:

  • From definition (From::create or via short function from) — maps single field from source to target. Supports chainable functions:
    • ->convert(callable $callable) — converts input value to another one via any callable;
    • ->trim() — trims value to eliminate whitespaces (suitable for strings);
    • ->default($defaultValue) — returns default value if source field is missing;
    • ->ignoreMissing() — ignores target field if source field is missing;
    • ->ignoreEmpty() — ignores target field if source field is empty.
  • Aggregate definition (Aggregate::create or via short function aggregate) — maps multiple fields from source to single target field. Supports chainable functions:
    • ->trim() — trims aggregated value
    • ->ignoreEmpty() — ignores target field if aggregated value is empty.
  • Value definition (Value::create or via short function value) — maps constant value to target field. Supports chainable functions:
    • ->trim()
    • ->ignoreEmpty()

All missing source fields can be ignored via AutoMapper::create(...)->ignoreAllMissing() modifier.

Red Hat to Acquire CoreOS

Red Hat issued a press release announcing that it has signed a definitive agreement to acquire CoreOS Inc.

RALEIGH, N.C. —  — Red Hat, Inc. (NYSE: RHT), the world’s leading provider of open source solutions, today announced that it has signed a definitive agreement to acquire CoreOS, Inc., an innovator and leader in Kubernetes and container-native solutions, for a purchase price of $250 million, subject to certain adjustments at closing that are not expected to be material. Red Hat’s acquisition of CoreOS will further its vision of enabling customers to build any application and deploy them in any environment with the flexibility afforded by open source. By combining CoreOS’s complementary capabilities with Red Hat’s already broad Kubernetes and container-based portfolio, including Red Hat OpenShift, Red Hat aims to further accelerate adoption and development of the industry’s leading hybrid cloud platform for modern application workloads.
I find it to be very significant.  Have a look at other Red Hat acquisitions, especially lately, as well as their other programs and projects.

Grav – a modern open source flat-file CMS

Grav is yet another addition to the growing number of the Open Source flat-file content management systems.  I guess, more and more people are realizing that not every website needs a database behind it.  And those that do need one, will have to work hard to keep it flexible and scaleable.

Grav brings a user friendly interface, lots of features, and extendability with themes and plugins.  Give it a spin!

Getting the best performance out of Amazon EFS

Jeff Geerling shares his tips for “Getting the best performance out of Amazon EFS”.  Given how (still) new the Amazon EFS is and how limited is the documentation of the best practices, this stuff is golden.

tl;dr: EFS is NFS. Networked file systems have inherent tradeoffs over local filesystem access—EFS doesn’t change that. Don’t expect the moon, benchmark and monitor it, and you’ll do fine.