Efficient Image Resizing With ImageMagick

ImageMagick is one of my favorite tools ever.  I’ve used for years for a whole lot of different things – from simple image resizing, through animation generation, to palette manipulation.  And still, I don’t really know it that well, so when I see articles like this – “Efficient Image Resizing With ImageMagick“, I get excited.  Not only it gives you a better way of doing things, but it also explains the path of how to get there.  From a simple command like:

convert input.jpg -resize 300 output.jpg

to something as advanced as this:

mogrify \
  -path OUTPUT_PATH \
  -filter Triangle \
  -define filter:support=2 \
  -thumbnail OUTPUT_WIDTH \
  -unsharp 0.25x0.25+8+0.065 \
  -dither None \
  -posterize 136 \
  -quality 82 \
  -define jpeg:fancy-upsampling=off \
  -define png:compression-filter=5 \
  -define png:compression-level=9 \
  -define png:compression-strategy=1 \
  -define png:exclude-chunk=all \
  -interlace none \
  -colorspace sRGB \
  -strip INPUT_PATH

What’s even more exciting is that it looks like this optimization will make its way into WordPress 4.4, together with some other improvements for the responsive images.

Super cool!

How does a relational database work

databases

How does a relational database work” is an excellent (lengthy, technical, but simply written and well explained) article on some of the most important bits inside the relational database.  It’s somewhat of a middle ground between a theoretical database discussion in college and vendor-specific documentation of a database engine.

Though the title of this article is explicit, the aim of this article is NOT to understand how to use a database. Therefore, you should already know how to write a simple join query and basic CRUD queries; otherwise you might not understand this article. This is the only thing you need to know, I’ll explain everything else.

I’ll start with some computer science stuff like time complexity. I know that some of you hate this concept but, without it, you can’t understand the cleverness inside a database. Since it’s a huge topic, I’ll focus on what I think is essential: the way a database handles an SQL query. I’ll only present the basic concepts behind a database so that at the end of the article you’ll have a good idea of what’s happening under the hood.

Whether you are a young programmer or an experienced DBA, I think, you’ll still find something in there which you either didn’t know or didn’t think about in this particular way.   Even if you know all this stuff, it’s a good memory refresher.

Strongly recommended!

A Curated List of Tech Podcasts

It’s been a few month since I reviewed my podcast subscriptions.  Driving over 150 kilometers every working day gives me plenty of time to readjust my tastes and preferences.  Just doesn’t leave me too much time to actually do something about it.

Podcasts are easy to subscribe to.  Once you find the ones you like.  Finding the ones you like takes forever though.  Here’s where WP Tavern’s post “Awesome Geek Podcasts: A Curated List of Tech Podcasts” comes in handy.  Cause it provides not one, but two lists of podcasts:

  1. The best WordPress podcasts ultimate list
  2. A curated list of Awesome Geek Podcasts.

And while I’m familiar with many on that list, there’s a tonne of those that I haven’t heard, or heard about.

Any other recommendations?

Exceptions and Errors in PHP 7

An Exceptional Change in PHP 7.0” blog post describes nicely what are the changes to exceptions and error handling in the upcoming PHP 7.  Among simple descriptions, there is this reference chart:

\Throwable
├── \Exception (implements \Throwable)
│   ├── \LogicException (extends \Exception)
│   │   ├── \BadFunctionCallException (extends \LogicException)
│   │   │   └── \BadMethodCallException (extends \BadFunctionCallException)
│   │   ├── \DomainException (extends \LogicException)
│   │   ├── \InvalidArgumentException (extends \LogicException)
│   │   ├── \LengthException (extends \LogicException)
│   │   └── \OutOfRangeException (extends \LogicException)
│   └── \RuntimeException (extends \Exception)
│       ├── \OutOfBoundsException (extends \RuntimeException)
│       ├── \OverflowException (extends \RuntimeException)
│       ├── \RangeException (extends \RuntimeException)
│       ├── \UnderflowException (extends \RuntimeException)
│       └── \UnexpectedValueException (extends \RuntimeException)
└── \Error (implements \Throwable)
    ├── \AssertionError (extends \Error)
    ├── \ParseError (extends \Error)
    └── \TypeError (extends \Error)

Very handy!

Rank of top languages on GitHub.com over time

GitHub blog shares some trends in regards to programming languages, which includes both public and private repositories:

GitHub programming languages

Interesting.  I haven’t seen many Java and C# projects myself, but I’m in a very different bubble.  PHP stays on #4 for years.  VimL, the language in which most plugins for Vim editor are written, makes it to #10 in 2010, which suggests that there are way more plugins than I ever thought.  The drop in Perl is also quite notable, but not very surprising.

Using Graphviz dot for ERDs, network diagrams and more

I’ve mentioned Graphviz many a time on this blog.  It’s simple to use, yet very powerful.  The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically.

The official website features a gallery, which demonstrates a wide range of graphs.  But I still wanted to blog a few examples from my recent use.

Continue reading “Using Graphviz dot for ERDs, network diagrams and more” »