https://patdavid.netmetalsmith-feedThu, 08 Feb 2018 17:29:15 GMTWriting is hard.
Just look at the post dates for my own blog posts to see what I mean.
It takes discipline and hard work to put together any sort of non-trivial writing.
If the topic is about a community as diverse and loosely collected as Free Software projects then the effort is exponential.
Most Free Software projects don’t have a media/public relations person to interact with.

Today I wanted to talk briefly about both a writer and a PR person: Alexandre Prokoudine and what he’s doing over at Libre Graphics World.

Alex is the main PR person for GIMP and he’s also the guy I turn to when I need or want to publish something for the project.
This is just one hat he wears (there’s many others), but those aren’t the reason I’m writing about him today.

Today I’m referring to his work as a journalist.
Alex created Libre Graphics World back in 2009 to cover the rather diverse ecosystem of Free Software for creative professionals.
The value in reporting at LGW is the time and research spent not only digging out the most interesting bits of news, but also taking the time to interview people in the projects.
The reporting is nicely in-depth and explores various aspects of issues beyond simply copying the changelogs (see his recent article on the recent fork of Valentina, Seamly2D as an example of the depth and background provided in his articles or his awesome review of features for the GIMP 2.9.2 release).

I think this type of reporting and community highlights is extremely important to a healthy Free Software ecosystem.
Especially one that focuses on projects for creatives and that spans so many genres.

Alex recently stopped running ads on the site and has now switched over to using Patreon to fund his activities.
I think this is a great time to head over to his Patreon page and throw a few dollars a month to help him do what he does!
Every little bit helps!

Way back in May of 2017 I made my first commit to start a new project for some friends of mine.
Seven months later and we were finally able to publicly push the results: a new website for the awesome folks at darktable!
(I already published a post about this on the darktable blog.)

Why?

I think the first question for approaching projects like this should always be: why?*
What is the impetus for wanting to re-design the existing site?
For the darktable folks, there were a few reasons I felt compelled to address.

*Because I want to is a perfectly valid answer, but I find that a well defined reason will help focus efforts better.

Responsiveness

The old site used a theme that wasn’t built for responsiveness.
As such, it wasn’t adaptable for mobile (or tablet) users.
It did scale a bit, but the results were a bit odd in places and didn’t flow well in others.

Mobile, tablet, bigger tablet (or desktop)

This re-design allowed us an opportunity to build the site from mobile-first ideas, be adaptable to various screen sizes, and to look nice while doing it.
We could have tried to adapt the existing site theme to work well in responsive situations, but some of the other reasons (see static below) pointed to a complete teardown and rebuild as being a better option.

Static Site

I’ve been a pretty big advocate for simplifying things online in general, and one of the more common ways to do this is to avoid dynamically generating websites if you don’t need to.
This is actually most of the time in my opinion.

Generate your site content once and serve it up as static html files (and assets) from the webserver. This severely restricts the attack vectors for potential problems later. Usually the only place you need to worry is if there’s a problem in the webserver (Apache/Lightspeed/Nginx, if you’re using IIS then the problem might be that you’re using IIS…).

This also has the side benefit of making things much faster for you and your visitors. There’s no waiting for db queries and heavy scripting on the server - just HTTP requests and responses. Old school cool.

Images

darktable is an amazing piece of Free Software for processing photographs.
So I felt that photographs needed to really be showcased on the website.
There were some images on the old site, but they were either slivers or small thumbnails.
This is an advanced photo processor - show off all those awesome images!

Most of the posts have much larger and bolder placement of lede images to help fancy-up the place.

A selection of blog post ledes from darktable.org

I took it a little further and used the lede images as full-viewport background images at reduced brightness.

As a small, semi-nerdy Easter egg in design I made the aspect ratio of the lede images 2.39:1.
The founder of darktable, johannes hanika, comes from a background in cinema, and I wanted to pay homage to that a little bit.

Modernity

This is quite a bit more subjective, but I felt many other parts of the site could use a facelift to leverage more modern practices in layout, type, and white space.
We were able to use some prettier fonts like Open Sans as well as bump the font sizes (variable depending on device), line heights, and white space.
All to hopefully increase legibility and provide a more pleasant experience overall.

Comments

Back in April 2017 houz had to disable commenting on the site. They had over 21,000 messages in the spam queue, and another 2,600 waiting for review.
This was simply too much for the team to deal with.

There’s an entire thesis worth of investigating how bad comments have gotten on the internet in general.
Unfortunately this also removes serious and thoughtful discussions or exchanges that could be happening (thanks a bunch you trolls…).

One of the reasons I originally set up the Discourse forum for pixls.us was to a) give everyone a place to interact and engage for Free Software photography, and b) to serve as a back-end for comments on the main website.
The folks at Discourse have done an amazing job bringing back a little bit of order from the chaos.

This was nice because it gave us two important things in my opinion:

We can manage the comments and user accounts, not some third-party network looking to make a buck by selling user data (Google, Facebook, Twitter, Disqus, etc…).

We can actively combat spam problems in a single place, with more dedicated people available to help. On the bright side, Discourse already has robust tools to deal with spam and we’ve been lucky so far.

Not long after setting it up originally, the developers pushed the ability to use the forum as embedded comments in more than one site.
This meant we could now use discuss.pixls.us as the commenting back-end for multiple sites.
We first tested this by integrating it for comments on the digiKam website and things went quite well.
From there it was a no-brainer to use it as the commenting system for darktable as well, so we created a darktable category on pixls just for them.

Thanks

Finally, I want to say a great big Thank You! to the darktable team in general for taking the time create and maintain such an awesome piece of software.
Also, a big hug to Tobias Ellinghaus (houz) for putting up with me and doing so much to get the new site migrated and running (he’s responsible for migrating all of the old posts into a markdown format for the new build system).

]]>https://patdavid.net/2018/01/darktablehttps://patdavid.net/2018/01/darktableMon, 08 Jan 2018 17:47:31 GMTSo, I’m on Mastodon.
Well, I’ve been on Mastodon for a while now, but thought I’d talk about it briefly here.

On most modern social networks, you are the product.
Your habits, friends, and interests are all consolidated, packaged, and sold to anyone willing to pay a few bucks to rent your attention (whether you like it or not).
If not you directly, then your habits, likes, dislikes, age, gender, sexual orientation, and the same information for all of the people you may know (including ones you may never had connected on that network).

It’s ridiculous what information you’re giving away for advertisers and marketers to exploit.

Mastodon

Born of frustration with Twitter and some functionality changes in their platform, Mastodon was created.

It’s a Free Software (AGPL), federated, micro-blogging service that is very similar in functionality to Twitter, but very different in it’s philosophical (and feature) approach.

Federated means that Mastodon is actually made up of many different servers (instances) all talking to each other to share what’s happening on their instance with the rest of the federation.
People join these servers and are then able to interact with everyone on all of the other servers as well.
You don’t have to be on the same server as someone else to follow and interact with someone.

There are no ads, no central server or authority (outside of the admins running your instance), and for a change you are not the product.
The act of writing posts is referred to as a Toot, which is unfortunate in my opinion (not really any less odd than a Tweet I suppose).

Some neat features:

500 character limit (280 on Twitter)

Each toot has it’s own privacy setting

You can mark images as NSFW to hide them by default

You can generally mark a toot as hidden by default

Direct messages to users

Did I mention that you’re not the product?

Mastodon has been seeing some explosive growth earlier this year as Twitter rolled out changes and algorithms that frustrated many users.

Jumping Ship

Is it going to last?
I have no idea.
If it gets a nice large number of new users that are vocal enough to the general public it may start seeing a nice influx of new users eager to escape the banality of Twitter and the opaque algorithms and ad-selling business going on behind the scenes.

Neat, I can embed toots!

In the meantime, there’s all kinds of interesting folks already there from the Free Software world.
I’m normally mingling with designers and artists, so if you decide to join up, I’m on the flagship instance: https://mastodon.social/about.

]]>https://patdavid.net/2017/11/mastodon-toot-toothttps://patdavid.net/2017/11/mastodon-toot-tootThu, 16 Nov 2017 22:02:16 GMTI updated some old GPG keys last year after using the same 1024-bit RSA key from 2004.
(Honestly, I was just impressed that I managed to dig up the private key in order to revoke it.)
I had set the new subkeys to expire every year, and while renewing them I took another look around to see if GPG/encryption had gotten any easier.
As usual, relevant xkcd.

It hadn’t.

On the other hand, there was some neat new stuff being built to use your signing key as a means to verify social accounts in addition to making your public key available (and related to those accounts).

Keybase.io

Keybase.io was set up make encryption key lookup (keyserver) and (social) identity verification easier.

As a quick and dirty refresher, public-key cryptography means that I have a pair of cryptographic keys, private and public.
My public key is made, well, public so that anyone can see it.
This means anyone can encrypt a message or file using my public key that cannot be decrypted without using my private key to do so.

It also means that I can sign things with my private key and anyone can verify that I did so.

At it’s simplest Keybase.io can act as a simple keyserver, that is a central place to see the public keys of other users.
The Massachusetts Institute of Technology (MIT) has been running a keyserver for a long time already, for instance.
The MIT keyserver functionality is decidedly limited, only allowing uploading, downloading, and revocation of keys.
Verification that the keys belong to the correct person is usually left to the user (getting wild at a key signing part-ay).

Keybase.io goes a little bit further by allowing a user to sign a verification that can get posted to various social media accounts.
In effect this allows you to prove that a social account is controlled by you, via your private key.

For instance, if you visit my profile page there:https://keybase.io/patdavidYou’ll find my various social accounts have all been signed by me using my private key.

Conveniently, you can also encrypt a message to me using my public key right on the site (using the PGP Encrypt button).
This gives you a neat little messagebox to enter a message to me:

After hitting the Encrypt button, you get your message ready to email, text, message, whatever to me and I’m the only one who will be able to read what you wrote:

This is also easily done if you already have your own keys and GPG installed on your machine but it’s nice to have it here available so simply.
I’m also going to put my full public key on it’s own page here at /about/GPG.txt.

They go even further and allow you to upload your private key to Keybase.io as well, but I’m a little more neurotic about holding onto that key and keeping it safe.

So if you want to invest the time to learn a little about the subject, it’ll be worth it.
Of course, you may feel a little like I do sometimes (last relevant xkcd, I promise):

]]>https://patdavid.net/2017/11/cryptographyhttps://patdavid.net/2017/11/cryptographyTue, 14 Nov 2017 03:16:27 GMTMy wife needed a headshot recently for a work related thing.
So I broke out some old and simple equipment to do a quick impromptu shoot for her.
This is one of the outtakes from that shoot (she didn’t like how her hair looked in this shot so it wasn’t used).
Dot. (On Flickr) ƒ/6.3 50mm 1⁄250 ISO200

Ages ago I had made a DIY softbox that has worked so well that it’s pretty much my go-to for smaller modifiers.
(“If it ain’t broke, don’t fix it.”)
To keep things soft I try to push it in as close as possible without interfering with the shot (you can see the edge of my softbox in the image straight out of RT below).

In this case, I had two Yongnuo YN560 speedlights.
The one in the softbox was around 3/4 power and the softbox is about 24 inches away (camera right).
The other was about 1/4 power camera left, about 24-30 inches away.

Of course, I’d be remiss if I didn’t include some other images I’ve shot over the years, so here’s a small sampling of my favorite model…

]]>https://patdavid.net/2017/07/my-musehttps://patdavid.net/2017/07/my-museFri, 14 Jul 2017 20:15:44 GMTComments were something that I wanted to include on posts from the beginning for PIXLS.US.
My problem was how to include comments in a way that would lessen exposing visitors to third party tracking, that would let users control and keep their comments if they wanted, and that would integrate nicely into the community in some way.

Luckily all of those requirements were nicely met by integrating the modern forum software Discourse.

Overall it’s been a fantastic success, I think.

Mechanics

The way this works is to specify what domains you want to embed on and include a snippet of JavaScript on each page.
This is visible at the bottom of any blog or article page on PIXLS.US.
Then an embedded iframe gets loaded with the page that includes a topic from the forum (the entire conversation).

The Discourse Admin view for embedding.

This all works fantastic with on caveat: there is only one set of styles that could be applied to the embedded iframe.
You can specify styling for the embed within Discourse, but there was no means for targeting the styling based on a different host.

This is particularly problematic when the host site designs are very different.
For instance, we are using Discourse for comments on both PIXLS.US and digiKam.org, but PIXLS is a white background site while digiKam uses a dark background.

I added the ability to specify a class name for each of the embedded hosts. This class name would then be added to the <html> element of each embedded iframe, allowing styling rules to be built that could target them.

In Use

Using this is quite simple now.
On the site under admin/customize/themes/ a component of the default theme is an Embed Style.
Editing this style and the Embedded CSS will allow you to target CSS styling rules based on the added class name above:

If you want to target a specific site in general, simply prefix your CSS selectors with html.CLASSNAME (like the digikam entries above).
This gives us a convenient base to build all descendant selectors we may need.

]]>https://patdavid.net/2017/05/styling-discourse-embedshttps://patdavid.net/2017/05/styling-discourse-embedsSun, 14 May 2017 04:18:38 GMTYes, yes - Static Site Generators are all the rage these days.
It seems like there’s (multiple!) options for every language out there (including homegrown options from back in the day).

Whichever system you use, the build system normally ends with your website built into a directory.
To publish the site you need only transfer that directory of files to your web server.
In my case I use rsync to only transfer files (or parts of files) that have changed.

Care should be taken with how the site is updated on the server, though.

Atomicity

The web server has one task: serve requests for files from a directory.

If you simply transfer your files into this directory on the server, there’s a chance that when someone makes a request for a file that it won’t have been uploaded yet, or it might reference a file that no longer exists.
This can happen if your transfer takes a little time to do.

One option to mitigate this may be to upload the files to the server in a temporary directory, then simply move them into place.
This will be way better than simply transferring into the web directory, but there is still a chance during the move operation for files to be out of sync (particularly for large websites).

We need the operation to be atomic.
That is, we want the new site directory to appear to be updated instantaneously to the web server.

Setup

It’s possible to do this but it does require a (just a) little bit of work.
I’ll explain the way I do my deployments as an example.

I have my web server serving files from a symlink , public_html.
This symlink points to a directory named website-YYYYMMDD/ where the actual files are located.

Updating

Now, I have updated my website and generated a new directory of updated files.
I need to get them on the server to update the website!

I want to take advantage of the delta-transfer capabilities of rsync so I need to have a directory on the server to compare it against.
As I already mentioned, I don’t want to do this against the live directory, so I will create a copy of it.

Unfortunately, if the site is large it may be prohibitive to create a complete second copy on the server.
Luckily for me, the copy command has two options that are really useful here, -a, --archive and -l, --link.

The --archive option will recursively copy all of the SOURCE.

The --link option will create hard links for all of the files (not directories).

This is awesome, because not only does it minimize actual disk usage (you’re really just creating a new link to the same inode) but it’s also really, really fast.

So now there’s a (hard link) copy of the site directory with a new name (website-20170401 in my example):

This is true.
Normally, if you modify a file that is hard linked then all other files that point to that same inode will see the update.
Except that rsync will actually unlink the file for you before overwriting the data (please test this on your own system). (If there’s no change then nothing is done.)

Now I have a directory on my web server that contains all of my new changes and updates.
To make the new changes live on the website I just need to point the symlink public_html to the new directory.

This can be accomplished atomically by creating a new symlink pointing to the new directory and then renaming it over the old symlink.
(Using ln -snf newlink currentlink actually does an unlink, then creates a new link - so not atomic…)

So first we create a new symlink pointing to the new directory:

$ ln -s website-20170401 public_html-tmp

Then moving the new symlink over the old symlink is a rename, which is atomic:

$ mv -Tf public_html-tmp public_html

The web server will now be serving files from the new location and without any hiccups along the way.

In Summary

Assuming your web server is serving from a symlink public_html, and assuming your symlink points to your current site directory (website-20170311) like:

]]>https://patdavid.net/2017/04/atomic-publishing-a-static-websitehttps://patdavid.net/2017/04/atomic-publishing-a-static-websiteTue, 11 Apr 2017 19:55:08 GMTI’ve always had a sensitivity to light.
I don’t mean in a Mogwai sort of way, but rather I’ve always felt aware of the feeling and mood that light plays around me.

I think this manifests in my photography when I favor single strong light sources for my subjects.
Particularly Rembrandt and side lighting.
This also manifests in my seething hatred for overhead fluorescent lighting and a general dislike for direct mid-day sunlight…

This is one of the reasons I am absolutely in love with the art of Pascal Campion.
Allow me to (ahem) illustrate why…

Pascal is a French-American artist that currently lives in California.
The biography on his Facebook page lists more about him:

Pascal Campion is a prolific French-American illustrator and visual development artist whose clients include: DreamWorks Animation, Paramount Pictures, Disney Feature, Disney Toons, Cartoon Network, Hulu, and PBS. Working in the animation industry for over 15 years, currently he is the Art Director for the Netflix/Warner Bros “Green Eggs and Ham” series. Feature work includes Visual Development of “Mr. Peabody and Sherman” and “The Penguins of Madagascar.” Pascal also has worked with Marvel Comics since 2013 and has steadily posted over 3,000 images of personal work to his “Sketches of the Day” project since 2005.

He is now a resident of Los Angeles, CA is currently an Art Director for the Netflix/WB project “Green Eggs and Ham”.

I actually follow him on his Google+ account where I am always delighted when he posts new sketches.

His images are just wonderful little moments and views into his imagination, but my favorite part by far is his command of the lighting in his scenes and the feelings they invoke.
It’s particularly pleasing to me for night/dusk scenes as this is my favorite time of day by far.

It’s not just his use of colors that makes these so wonderful, but how the light interacts with his subjects.
The slivers of incandescence from rooms raking across subjects or the soft glow of a candle in a scene do wonders.
It makes them instantly relatable to me - a scene I would like to step into.

Knowing it. by Pascal CampionThe good days. by Pascal CampionI guess this is good night… by Pascal Campion

Just as easily as he can transport me to a rainy city evening:

Downpour by Pascal CampionFrom here you can see the whole world … by Pascal Campion

Or a glimpse of a fire escape conversation in a huge city:

Little talks. by Pascal CampionEdges by Pascal Campion

Can you tell I’m a fan?
It was nigh impossible for me to choose sample images from his posts - they are all just so wonderful!

I highly encourage you to check out his work on his blogger page, tumblr, or Facebook.
He’s posted over 3,000 images to his “Sketches of the Day” project since 2005!
He is also selling prints on his website in case you love his work as much as I do.
Although it appears to be a smaller selection of his body of work.

Pascal Campion (via his Facebook page)
]]>https://patdavid.net/2017/04/the-wonderful-art-of-pascal-campionhttps://patdavid.net/2017/04/the-wonderful-art-of-pascal-campionWed, 05 Apr 2017 20:58:36 GMTThe Libre Graphics Meeting (LGM) is the annual meeting for creatives from across the Free/Libre project spectrum.
I’ve written about the previous meetings I was able to attend in Leipzig (2014) as well as London (2016).
It’s an amazing opportunity to meet with other Free/Libre Software users and projects.

I won’t be able to make it out to this year’s LGM (I seem to be on a sort of biennial schedule), but most of the GIMP team will be there!
So I have a favor to ask…

Please, go and donate to gimp@gnome.org to help offset the costs of attending the conference!
Every little bit helps (especially considering most of the team lives in Europe, so the travel costs are a bit higher for them this year).

This is an important meeting in the Free/Libre art world as it’s one of the few times (only for some projects) for these artists and contributors to meet face-to-face.

This is particularly true of the GIMP team.
It’s the only chance I personally have had to meet the other team members in real life, and I must say that it really does give a very positive feedback to participating in the project.
Getting to meet everyone and spend time with them helps to understand the dynamic and reinforces friendship amongst the contributors.

It’s also a great opportunity to be silly and have fun…

Liampippin x5(Yes, the same pippin responsible for GEGL)
GIMP meeting at LGM/London (with some darktable folks thrown in for good measure)

There’s also GIMP hackathons and internal meetings that take place here.
This is an opportunity to help accelerate GIMP development, so what are you waiting for?!

]]>https://patdavid.net/2017/03/support-gimp-at-lgm-2017https://patdavid.net/2017/03/support-gimp-at-lgm-2017Tue, 28 Mar 2017 14:29:25 GMTThe Bus Factor for a project is usually defined as the minimum number of team members that would have to disappear (get hit by a bus) for a project to stall due to lack of knowledgeable people.
A low Bus Factor means that the loss of just a small number of people can stall out a project, while a high factor means there is some resiliency in the project.

This was how PIXLS.US was very early on with only myself writing for the site (Bus Factor of 1).
As soon as possible I tried to find others to help and also made sure the code was available on a public repository (along with being licensed liberally using Creative Commons BY-SA 4.0).

Whither gimpforums.com?

Unfortunately, a good example of this problem and it’s ramifications can be found on gimpforums.com.
This was a GIMP related forum that was around for quite some time.
Back in September of 2016, the underlying forum software started showing MySQL errors, and the situation hasn’t changed since.
Despite everyone’s best efforts to reach out to the owner of both the domain and the webserver (and most importantly: the database), there was no response.
Nada, nothing, zilch.

Just like that many years worth of posts, interactions, tutorials, and information are all gone (over 40,000 posts).
All because this site had a single point of failure.

This can (did) have a devastating effect on communities.
It’s also yet another example of why you should focus your efforts in places that don’t have these types of resiliency issues.
Make sure that the communities you are spending time creating content for are healthy and don’t show these types of weaknesses (low Bus Factor).

Arise, gimp-forum.net!

In response to the death of gimpforums.com, prominent members of the old forum got together and created a new site: gimp-forum.net.
With many different folks responsible for administration duties on the new forum, the resiliency of the site is already higher than the old gimpforums.com.
One of these grey beards also happens to be a mod on discuss.pixls.us as well, @Ofnuts (and an all-around helpful person).

If you are looking for a new forum and community about GIMP to participate in, this is a great place to consider!

Speaking of Participation

Undoubtedly one of the casualties of the sudden demise of a forum like this is the content that people have created over the years.
Please, if you are considering taking the time to write tutorials for something in GIMP, consider licensing it freely (CC BY-SA or better) and letting me know about it so I can include it with the other tutorials on the actual GIMP website.
This is a fantastic way to participate and give back to the greater GIMP community while also ensuring that your hard work will live on.

]]>https://patdavid.net/2017/03/bus-factorhttps://patdavid.net/2017/03/bus-factorSat, 11 Mar 2017 17:52:24 GMTWhen we built the new website for www.gimp.org we moved from a homegrown build system to using Pelican, a Python based Static Site Generator.
That migration deserves its own post over on the GIMP website to talk about the process and the specific things we did to support the new site design, but we did use the migration as an opportunity to step up the security of the site substantially. (This was mostly due to the efforts and prodding of Michael Schumacher.)

Why It Matters

Unbeknownst to many folks, your web browsing habits can betray quite a lot of information about you to places you may not even have realized.
Assets can be called from many different places across the web, and those assets log information about requests.
Depending on the asset, they may be connecting much more than what you originally asked for.

Perhaps you have a Facebook account.
When you log onto Facebook in your browser the site will set a cookie that can uniquely identify you (for your convenience of course).
This is not uncommon for many sites that need to persist data between browser sessions.

What makes this insidious is when Facebook starts having ads included all over the web (including the FB “pixel”), or the inclusion of various interaction widgets such as FB comments or “Like” buttons that are called from Facebook servers.
When those things are included, they can generate tracking information back to Facebook about you and your interactions on these other web pages.
Now Facebook knows you like whatever weird thing it is that you’re browsing (no judgement, but eww).

It’s not just Facebook, either.
Remember that any external asset being requested in a page is likely being logged.
As such, I’ve tried to minimize how this might affect any readers here.

No Ads

I used Google AdSense on the old site.
This was awesome for a while because the little bit I earned from those ads helped me to pay for the server infrastructure for PIXLS.US in the beginning.
I considered keeping the ads here but I figured people would have a better, and safer, experience if I didn’t.

An awful example from photographyblog.com: over half of the visible page is used for three different ads. :(

I don’t like them, you don’t like them, so why bother?
If you like what I’m doing and want to send a thanks, you can do it directly to me at paypal.me/patdavid.
(If you’d like to support PIXLS.US directly, the community would appreciate it!)

Speaking of Google

Removing Google AdWords made sense in terms of user experience and privacy.
Doing the same for Google Fonts is a little harder, as this was a nice way for designers to add more beautiful typography to their websites.

Unfortunately, as I said above:

Any external asset being requested in a page is likely being logged (or worse).

In lieu of telling Google that you’re visiting my website by having your browser request a font from them when you visit here, I am hosting the font files myself.
(If you’re curious, it’s all Libre Baskerville.)

Anti-Social

This one is also a little hard, if only because it’s so easy to use and try to take advantage of.
I am referring to the little JavaScript widgets that help (encourage?) users to share the post on social media channels.
These are also insidious, but I also tend to find them a little obtrusive and obnoxious (especially when they obscure the website in some way; this is really bad on mobile sites sometimes).

If you’re not lazy, it turns out you can do most of the same thing by taking the time to program links properly during the static generation of the site.
This is what it looks like on https://www.gimp.org, at the bottom of news items:

I haven’t created these links yet for this site, but it’s on my to-do list and will probably look just like the above.

Google Analytics

Admittedly, this is one place where I am still including a piece of external JavaScript.
This is so I can analyze traffic to the site.

I may still change this in the future and simply rely on analyzing the Apache server logs offline, or I may switch to using a self-hosted solution like Piwik.
For the time being, please know that I am including a link to Google Analytics.
If you don’t want to let me log your visits with Analytics, then the easiest method to avoid it is to use something like an ad blocker.

HTTPS

I’ve set the entire site to use HTTPS with a Let’s Encrypt certificate.
I had already done this for PIXLS.US, so this was a no-brainer.
We’re now keeping the connection between my server here and your browser private and secure! (Look for the little green lock icon in your browser address bar.)

Not all of the pages are fully HTTPS compliant yet.
I hosted most of the images on my old blog with Google, so I still need to work through old posts and download the images to serve from my server.

Some of the responses in various places online were pretty normal for GIMP news (eg: full of vitriol), but there was one comment that questioned the inclusiveness of the project that I took exception with personally.

Yes I’m biased. I’m part of the project, and these are people I’m around daily (on IRC at least).
Before I could be biased, though, I had to have an experience to build that bias with, and that’s what I want to talk about here.

The Few, The Weird, The GIMP Team

Jehan mentions this in the opening to his interview and it’s worth repeating:

Some people think there’s a huge company behind GIMP. This is not the case. GIMP has always been developed by a handful of random people scattered around the world. Most of them are volunteers and none of them work on it full-time.

I feel that often people don’t seem to realize just how few people there are working on GIMP most of the time. Seriously. For instance, here are the ones that were able to make it out to LGM/London:

This is not very many people to be working on a project as large as GIMP (even considering the other occasional contributors)!

It wasn’t that long ago that I showed up on the IRC channel myself and lurked around for a bit.
If you spend some time there you might begin to realize a couple of things that I also learned:

These are real, actual people behind the project. People just like you or me.

Each of these people really care about the project that they’re choosing to spend their time on.

The first point is important because sometimes people tend to forget that there are human beings at the other end of a rant or tirade.
Technically, this is a good point to remember for just about all interactions online, but it’s particularly important here because of the second thing: they care.

This means that even if they make decisions that might upset you (or your workflow) - chances are that they’ve made those decisions with the best interest of the project in mind.
This means that when someone takes the time to answer you on IRC, the mailing list, or even other forums somewhere, they are doing it because they genuinely want to help others be able to use GIMP.

Think about that for a moment. These are people who choose to spend their free time helping others in some way to be able to use a Free Software project. I have watched some members spend quite a bit of time trying to help people sort out problems that could probably have been resolved by reading the manual or following one of the tutorials.

Note that this doesn’t just pertain to the actual GIMP team members.
There are plenty of folks from various forums and other online communities that also go out of their way to help.

Getting Weirder

So when I first started hanging around to get to know folks, my personal experience was not one of exclusion, but rather the opposite.
I was just starting to get my feet wet with building and updating some small parts of the website.
They had someone now to help work on a part of the project, and as mitch mentions in his interview, the general attitude* is:

If you do it right, then you’ll be in charge of the part you are doing right. It always works like that.
mitch

When I first started getting bold enough to make changes and updates to the (old) website, there was talk of getting out the chains and collars so I couldn’t get away.

Does this sound like a project that is not inclusive?

*If you do it right. They reserve the right to ridicule you if you don’t, of course. :)

Addendum

There are more ways to contribute and help a project like GIMP than being able to code.
I highly encourage everyone to see if they can find a little bit of time to help in one of the many, many other ways such as

For almost a decade I had been using blogger to host my personal website.
That just didn’t seem to make sense any more, and I wanted an opportunity to fiddle with things a bit.
I thought it might be fun to put some constraints on designing a new site for myself while migrating to something better.

I’m leaving these images of P!nk that I used during my initial design and styling because I like them.
If I have to keep looking at temp images while fixing CSS rules, they might as well be ones I enjoy looking at.
(And I enjoy looking at them because they remind me of my wife - not the other way around…)

Large image (should be bigger than column). This caption will continue, though, to test the formatting of the style for this figcaption element and make sure it wraps as expected…P!nk by Ruven Afanador.
This is a caption for an image that should be smaller than the total column width (on a dektop at least). I’m going to make this caption longer so it will wrap hopefully…P!nk by Bryan Adams (Yes, thatBryan Adams).

Minimal Styling

One of the constraints that I thought would be fun is to minimize (somewhat) the amount of CSS I use to style the site.
I managed to get the total amount of CSS in my stylesheet down to about 165 lines (unoptimized/minified).
I still need to add some font declarations to the sheet, but not too bad overall I think.

I’ll probably re-visit it and tweak things to see if I can minimize it further, but it’s working fairly well at the moment.
It’s also fully responsive to screen size, which is nice!

Metalsmith (again)

For the choice of a static-site generator I defaulted to what I was already using for a couple of other sites I have been working on, pixls.us and acer.disl.org.
That would be Metalsmith again.
It’s a relatively simple system that basically considers everything to be a plugin.
It uses Node.js, which is nice because I’m already doing some javascript programming anyway for various web-thingies.

Old Blogger Posts

Speaking of Jekyll - I still had the problem of what to do with all of the legacy posts I had on blogger.
Luckily I was able to export all of my posts using the Google/Blogger tool - which left me with a giant XML file.
I was going to parse this myself to try and extract the posts out of it, but my friend Mica pointed me to Jekyll’s importer tool.
Luckily it made short work of translating the XML into individual post files that I could then masssage to work with my build system.

Luckily there wasn’t much to deal with as far as the posts overall went.
This wasn’t quite so true of the actual post data - from the looks of things I must have been completely spacing out when I wrote some of them.

I still need to do a few things before I can fully switch this site away from blogger though.

Still To-Do

There’s still a few things I need to do…

Scrape all images out of blogger/Google to localI want to get all of the linked images in all of my old posts saved locally.

Twitter metadataAdd the appropriate metadata so that Twitter cards will work

Open Graph/Schema metadataThis is the metadata for enriching posts on FB/Google+ (different than Twitter - because why not!).

Archive pageI still need a good page for an archived list of posts (styled).

HTTP 301 redirects for a few pagesThere’s still a few pages that will probably need a redirect to the proper location.

All postsblog.patdavid.net/yyyy/mm/title.html

getting around in gimpblog.patdavid.net/p/getting-around-in-gimp.html

archiveblog.patdavid.net/p/archive.html

Fix or modify any last permalinksThis is to simply move things like /p/archive.html to something like /archive/ instead (permalinks).This is something that could use a 301 redirect as indicated above.

Set up RSS feedsThere’s a plugin for it, or I can just re-purpose what I did for pixls

Finish mobile styling for navigationThe links in the header are not good touch targets on mobile, so I’ll have to fix them.

]]>https://patdavid.net/2017/02/rebuilding-patdavid-net-as-a-static-sitehttps://patdavid.net/2017/02/rebuilding-patdavid-net-as-a-static-siteWed, 01 Feb 2017 00:00:00 GMTA little while back I had a big streak of averaging anything I could get my hands on. I am still working on a couple of larger averaging projects (here’s a small sneak peek - guess the movie?):

I’m trying out visualizing a movie by mean averaging all of the cuts. Turns out movies have way more than I thought - so it might be a while until I finish this one… :)

On the other hand, here’s something neat that is recently finished…

JungleBook: Simple Kindle Ebook Cover Analysis

Jason van Gumster just posted this morning about a neat project he’d been toying with that is along similar lines of the Netflix Top 50 Covers by Genre, but takes it to a deeper level. He’s written code to average the top 50 ebook covers on Amazon by genre:

By itself this is really pretty (to me - not sure if anyone else likes these things as much as I do) but Jason takes it further by providing some analysis and commentary on the resulting images in the context of ebook sales and popularity (visually) to people.

The GIMP Website

I had this note on my to-do list for ages to tinker with the GIMP website. I finally got off my butt and started a couple of weeks ago. I did a quick mockup to get a feel for the overall direction I wanted to head:

I’ve been hacking at it for a couple of weeks now and I kind of like how it’s turning out. I’m still in the process of migrating old site content and making sure that legacy URI’s aren’t going to change. It may end up being a new site for GIMP. It also may not, so please don’t hold your breath… :)

Here’s where I am at the moment for a front page:

Yes, that image is a link. The link will lead you to the page as I build it: http://static.gimp.org. See? It’s like a prize for people who bother to read to the end! Feel free to hit me up with ideas or if you want to donate any artwork for the new page while I build it. I can’t promise that I’ll use anything anyone sends me, but if I do I will be sure to properly attribute! (Please consider a permissive license if you decide to send me something).

In case you’ve not noticed around here, I’ve been transitioning tutorials and photography related stuff over to PIXLS.US.

I built that site from scratch, so it’s taken a bit of my time… I’ve also been slowly porting some of my older tutorials that I thought would still be useful over there. I’ve also been convincing all sorts of awesome folks from the community to help out by writing/recording tutorials for everyone, and we’ve already got quite a few nice ones over there:

That’s not to say I’ve abandoned this blog, just that I’ve been busy trying to kickstart a community over there! I’m also accepting submissions and/or ideas for new articles. Feel free to email me!

]]>https://patdavid.net/2015/07/whats-new-some-new-tutorials-and-pixls.htmlhttps://patdavid.net/2015/07/whats-new-some-new-tutorials-and-pixls.htmlTue, 07 Jul 2015 17:30:00 GMT I checked the first post I had made on PIXLS.US while I was building it, and it appears it was around the end of August, 2014. I had probably been working on it for at least a few weeks before that. Basically, it’s almost been about 10 months since I started this crazy idea.

Finally, we are “officially” launched and live. Phew!

Help!

I don’t normally ask for things from folks who read what I write here. I’m going to make an exception this time. I spent a lot of time building the infrastructure for what I hope will be an awesome community for free-software photographers.

So naturally, I want to see it succeed. If you have a moment and don’t mind, please consider sharing news of the launch! The more people that know about it, the better for everyone! We can’t build a community if folks don’t know it’s there! :) (Of course, come by and join us yourselves as well!).

I’ll be porting more of my old tutorials over as well as writing new material there (and hopefully getting other talented folks to write as well).

Thank You!

Also, I want to take a moment to recognize and thank all of you who either donated or clicked on an ad. Those funds are what helped me pay for the server space to host the site as well as the forums, and will keep ads off the site. I’m basically just rolling any donations back into hosting the site and hopefully finding a way to pay folks for writing in the future. Thank you all!

]]>https://patdavid.net/2015/05/pixlsus-now-live.htmlhttps://patdavid.net/2015/05/pixlsus-now-live.htmlFri, 08 May 2015 18:01:00 GMT David Tschumperlé has a blog over at OpenSource.graphics and it appears that after releasing G’MIC 1.6.2.0 he had some time to write down and share some thoughts about the last 10 months of working on G’MIC.

He covers a lot of ground in this post (as you can imagine for not having reported anything in a long time while working hard on the project). He talks about some neat new functionality and filters added like color curves in others colorspaces, comics colorization, color transfer (from one image to another), website for film emulation (yay!), foreground extraction, engrave, triangulation, and much more.

Interactive Foreground ExtractionEngrave Filter

A short table of contents for the post:

The G’MIC Project : Context and Presentation

New G’MIC features for color processing

An algorithm for foreground/background extraction

Some new artistic filters

A quick view of the other improvements

Perspectives and Conclusions

David may not write as often as I think he should but when he does - he certainly does! :) Head over and check out the latest news on an awesome image processing framework!

]]>https://patdavid.net/2015/04/an-update-about-gmic-on.htmlhttps://patdavid.net/2015/04/an-update-about-gmic-on.htmlTue, 21 Apr 2015 14:48:00 GMT After a bunch of hard work by someone not me (darix), there’s finally a neat solution for commenting on PIXLS.US. An awesome side effect is that we get a great forum along with it.

Discourse

On the advice from the same guy that convinced me to build PIXLS using a static site generator (see above), I ended up looking into, and finally going with, a Discourse forum.

What is extra neat about the way this forum works, though, is the embedding. For every post on the pixls.us blog (or an article), the forum will pickup on the post and will automatically create topics on the forum that coincide with the posts. Some small embedding code on the website allows these topic replies to show up at the end of a post similar to comments.

For instance, see the end of this blog post to see the embedding in action!

Come on by!

I personally really like this new forum software, both for the easy embedding, but also the fact that we own the data ourselves and are not having to farm it out through a third party service. I have enabled third party oauth logins if anyone is ok with using them (but are not required to - normal registration with email through us is fine of course).

I like the idea of being able to lower the barrier to participating in a community/forum, and the ability to auth against google or twitter for creating an account significantly lowers that friction I think.

Some Thanks are in Order

It’s important to me to point out that being able to host PIXLS.US and now the forum is entirely due to the generosity of folks visiting my blog here. All those cool froods that take a minute to click an ad help offset the server costs, and the ridiculously generous folks that donate money (you know who you are) are amazing.

As such, their generosity means I can afford to bootstrap the site and forums for a little while (without having to dip into the wife goodwill fund…).

What does this mean to the average user? Thanks to the folks that follow ads here or donate, PIXLS.US and the forum is ad-free. Woohoo!

]]>https://patdavid.net/2015/04/discourse-forum-on-pixlsus.htmlhttps://patdavid.net/2015/04/discourse-forum-on-pixlsus.htmlMon, 13 Apr 2015 20:30:00 GMT Anyone who has been reading here for a little bit knows that I tend to spend most of my skin retouching time with wavelet scales. I’ve written about it originally here, then revisited it as part of an Open Source Portrait tutorial, and even touched upon the theme one more time (sorry about that - I couldn’t resist the “touching” pun).

Because I haven’t possibly beat this horse dead enough yet, I have now also compiled all of those thoughts into a new post over on PIXLS.US that is now pretty much done:

The Other Blog

Don’t forget that I also have a blog I’m starting up over on PIXLS.US that documents what I’m up to as I build the site and news about new articles and posts as they get published! You can follow the blog on the site here:

Write For PIXLS

I am also entertaining ideas from folks who might like to publish a tutorial or article for the site. If you might be interested feel free to contact me with your idea! Spread the love! :)

]]>https://patdavid.net/2015/03/skin-retouching-with-wavelets-on-pixlsus.htmlhttps://patdavid.net/2015/03/skin-retouching-with-wavelets-on-pixlsus.htmlThu, 26 Mar 2015 20:15:00 GMT This is old news but I just realized that I hadn’t really addressed it before.

This is handy for those that may work purely in RawTherapee or that don’t want to jump into GIMP just to do some color toning. It’s a pretty big collection of emulations, so hopefully you’ll be able to find something that you like. Here’s the list of what I think is in the package (there may be more there now):

Fuji 160C, 400H, 800Z

Fuji Ilford HP5

Kodak Portra 160, 400, 800

Kodak TMAX 3200

Kodak Tri-X 400

Fuji Neopan 1600

Fuji Superia 100, 400, 800, 1600

Fuji Ilford Delta 3200

Kodak Portra 160 NC, 160 VC, 400 NC, 400 UC, 400 VC

Polaroid PX-70

Polaroid PX100UV

Polaroid PX-680

Polaroid Time Zero (Expired)

Fuji FP-100c

Fuji FP-3000b

Polaroid 665

Polaroid 669

Polaroid 690

Fuji Neopan 1600

Fuji Superia 100/400/800/1600

Ilford Delta 3200

Kodak Portra 160 NC/VC

Kodak Portra 400 NC/UC/VC

Fuji 160C

Fuji 400H

Fuji 800Z

Ilford HP5

Kodak Portra 160/400/800

Kodak TMax 3200

Kodak Tri-X 400

Polaroid PX-70

Polaroid PX100UV

Polaroid PX-680

Polaroid Time Zero (Expired)

Fuji FP-100c

Fuji FP-3000b

Polaroid 665

Polaroid 669

Polaroid 690

Agfa Precisa 100

Fuji Astia 100F

Fuji FP 100C

Fuji Provia 100F

Fuji Provia 400F

Fuji Provia 400X

Fuji Sensia 100

Fuji Superia 200 XPRO

Fuji Velvia 50

Generic Fuji Astia 100

Generic Fuji Provia 100

Generic Fuji Velvia 100

Generic Kodachrome 64

Generic Kodak Ektachrome 100 VS

Kodak E-100 GX Ektachrome 100

Kodak Ektachrome 100 VS

Kodak Elite Chrome 200

Kodak Elite Chrome 400

Kodak Elite ExtraColor 100

Kodak Kodachrome 200

Kodak Kodachrome 25

Kodak Kodachrome 64

Lomography X-Pro Slide 200

Polaroid 669

Polaroid 690

Polaroid Polachrome

Agfa Ultra Color 100

Agfa Vista 200

Fuji Superia 200

Fuji Superia HG 1600

Fuji Superia Reala 100

Fuji Superia X-Tra 800

Kodak Elite 100 XPRO

Kodak Elite Color 200

Kodak Elite Color 400

Kodak Portra 160 NC

Kodak Portra 160 VC

Lomography Redscale 100

Agfa APX 100

Agfa APX 25

Fuji Neopan 1600

Fuji Neopan Acros 100

Ilford Delta 100

Ilford Delta 3200

Ilford Delta 400

Ilford FP4 Plus 125

Ilford HP5 Plus 400

Ilford HPS 800

Ilford Pan F Plus 50

Ilford XP2

Kodak BW 400 CN

Kodak HIE (HS Infra)

Kodak T-Max 100

Kodak T-Max 3200

Kodak T-Max 400

Kodak Tri-X 400

Polaroid 664

Polaroid 667

Polaroid 672

Rollei IR 400

Rollei Ortho 25

Rollei Retro 100 Tonal

Rollei Retro 80s

Have fun with these, and don’t forget to show off your results if you get a chance! It’s always neat to see what folks do with these! :)

]]>https://patdavid.net/2015/03/film-emulation-in-rawtherapee.htmlhttps://patdavid.net/2015/03/film-emulation-in-rawtherapee.htmlWed, 11 Mar 2015 19:21:00 GMT Photographer Ian Hex was kind enough to be a guest writer over on PIXLS.US with a fantastic tutorial on creating and using Luminosity Masks in the raw processing software darktable.

Readers who’ve been here for a little while might recognize my friend Mairi, who has modeled for me before. This time I had a brief opportunity for her to sit for me again for a few shots before she jet-setted her way over to Italy for a while.

I was specifically looking to produce the lede image you see above, Mairi Troisième. In particular, I was chasing some chiaroscuro portrait lighting that I had in mind for a while and I was quite happy with the final result!

Of course, I also had a large new light modifier, so bigger shots were fun to play with as well:

]]>https://patdavid.net/2015/02/mairi-trois.htmlhttps://patdavid.net/2015/02/mairi-trois.htmlWed, 25 Feb 2015 22:59:00 GMT About a two months ago I was approached by Victor Grigas, a video producer for the Wikimedia Foundation (the non-profit that supports Wikipedia), about using some of the techniques I had previously discussed to create 2.5D parallax video images from single photographs. The intention was to use these 2.5D videos as part of their first ever “Year in Review” video:

For reference, this was my previous result using F/OSS to create the 2.5D parallax effect with still images:

For the Wikipedia video, Victor asked if I could use some images from Wiki Loves Monuments (apparently the worlds largest photo competition according to the Guiness World Records). How could I say no? (Disclaimer: I donate every year during their funding drives).

So I agreed, and after a short wait for the finalists from the competition to be chosen, was sent these two awesome images to turn into 2.5D parallax videos:

After a bit of slicing and dicing, I ended up with these short segments that ended up in the final video. As before, I did the main plane separations in GIMP manually. I divided the planes to best accommodate the anticipated camera movement through the scene (simple dolly pans). Once I had the planes separated, it was a simple process to bring them into Blender and offset the planes as the camera tracked across the scene:

This was a fun project to work on, and I want to thank the Wikimedia Foundation for giving me a chance to play with some gorgeous images and hopefully to help out in my own small way with the final outcome!

Also, Victor does a nice interview with the Wikimedia blog about producing the overall video. Great work everyone!

]]>https://patdavid.net/2014/12/wikipedia-edit2014-video.htmlhttps://patdavid.net/2014/12/wikipedia-edit2014-video.htmlThu, 18 Dec 2014 18:02:00 GMTSome of you may be familiar with G’MIC, the rather extensive image processing language created by David Tschumperlé that has a very popular plug-in for GIMP.

If you’re a fan, here’s a nice little treat for you. David has started a blog about image processing with open source software:

If you’d like a front seat to some of the more technically interesting things going on behind the scenes at G’MIC, this would be a good blog to follow I think. He’s already come out of the gate with a neat 3D colorcube investigation of some images (seen above, Mairi).

]]>https://patdavid.net/2014/12/david-tschumperle-and-opensourcegraphics.htmlhttps://patdavid.net/2014/12/david-tschumperle-and-opensourcegraphics.htmlFri, 05 Dec 2014 22:07:00 GMTSo Jehan Pages contacted me a little while ago about participating in a project to produce a “Libre Calendar“. Once he described the idea, it was an easy choice to join up and help out!

Through his non-profit LILA in France, he has assembled 6 artists to produce works specifically for this calendar (Disclaimer: I’m one of the artists):

Aryeom HanHenri HebeisenGustavo DevezeBrian Beck

The proceeds from the calendar will be split evenly between the artists, the LILA non-profit, and various F/OSS projects that the artists used (GIMP, Blender, Inkscape, etc…). The full list is on the site. (Second disclaimer: I’m deferring any of my proceeds to the projects).

This is a really nice way to donate a bit to the various projects and get a neat gift for it.

Head over to the site to see some sample images from the artists, and consider buying a calendar! Jehan is looking to meet a minimum order before moving forward (around 100 I believe).

I was working on the About page over on PIXLS.US the other night. I was including some headshots of myself and one of Rolf Steinort when I got pulled off onto yet another tangent (this happens often to me).

Of course, the problem was that I had neither the time or skill to hand paint a portrait in this style.

What I did have was a rudimentary understanding of a general effect that I thought would look neat. So I started playing around. I finally got to something that I thought looked neat (see lede image), but I didn’t take very good notes while I was playing.

This meant that I had to go back and re-trace my steps and settings a couple of times before I could describe exactly what it was I did.

So after some trial and error, here is what I did to create the effect you see.

Desaturate

Starting with your base image, desaturate using a method you like. I’m going to use an old favorite of mine, Mairi:

The base image, desaturated.

Duplicate this layer, and on the duplicate run the G’MIC filter, “Graphic Novel” by Photocomix.

Filters → G’MIC

Artistic → Graphic Novel

Check the box to “Skip this step” for “Apply Local Normalization”, and adjust the “Pencil amplitude” to taste (I ended up at about 66). This gives me this result:

After running G’MIC/Graphic Novel

I then adjusted the opacity to taste on the G’MIC layer, reducing it to about 75%. Then create a new layer from visible (Right-click layer, “New from visible”).

Here is what I have so far:

On this new new layer (should be called “Visible” by default), run the GIMP filter:

Filters → Artistic → Engrave

If you don’t have the filter, you can find the .scm at the registry here.

The only settings I change are the “Line width”, which I set to about 1/100 of the image height, and make sure the “Line type” is set to “Black on bottom”. Oh, and I set the “Blur radius” to 1.

This leaves me with a top layer looking like this:

After running Engrave

(If you want to see something cool, step back a few feet from your monitor and look at this image - the Engrave plugin is neat).

Now on this layer, I will run the G’MIC deformation filter “random” to give some variety to the lines:

G’MIC → Deformations → Random

I used an amplitude of about 2.35 in my image. We are looking to just add some random waviness to the engrave lines. Adjust to taste.

I ended up with:

Results after applying G’MIC/Random deformation to the engrave layer.

At this point I will apply a layer mask to the layer. I will then copy the starting desaturated layer and paste it into the layer mask.

I added a layer mask to the engraved layer (Right-click the layer, “Add layer mask…” - initialize it to white). I then selected the lowest layer, copied it (Ctrl/Cmd + C), selected the layer mask and pasted (Ctrl/Cmd + V). Once pasted, anchor the selection to apply it to the mask.

This is what it looks like with the layer mask applied:

The engrave layer with the mask applied

At this point I will use a brush and paint over the background with black to mask more of the effect, particularly from the background and edges of her face and hair. Once I’m done, I’m left with this:

After cleaning up the edges of the mask with black

I’ll now set the layer blending mode to “Darken Only”, and create a new layer from visible again.

Add a layer mask to the new visible layer (should be the top layer), copy the layer mask from the layer below it (the engrave layer), and paste it into the top layer mask:

Now adjust the levels of the top layer (not the mask!), by selecting it, and opening the levels dialog:

Colors → Levels…

Adjust to taste. In my image I pulled the white point down to about 175.

At this point, my image looks like this:

After adjusting levels to brighten up the face a bit

At this point, create a new layer from visible again.

Now make sure that your background color is white.

On this new layer, I’ll run a strange filter that I’ve never used before:

Filters → Distorts → Erase Every Other Row…

In the dialog, I’ll set it to use “Columns”, and “Fill with BG”. Once it’s done running, set the layer mode to “Overlay”. This leaves me with this:

After running “Erase Every Other Row…”

At this point, all that’s left is to do any touchups you may want to do. I like to paint with white and a low opacity in a similar way to dodging an image. That is, I’ll paint white with a soft brush on areas of highlights to accentuate them.

Here is my final result after doing this:

I’d recommend playing with each of the steps to suit your images. On some images, it helps to modify the parameters of the “Graphic Novel” filter to get a good effect. After you’ve tried it a couple of times through you should get a good feel for how the different steps change the final outcome.

As always, have fun and share your results! :)

Summary

There seems to be many steps, but it’s not so bad once you’ve done it. In a nutshell:

Desaturate the image, and create a duplicate of the layer.

Run G’MIC/Graphic Novel filter, skip local normalization. Set layer opacity to about 40-60% (experiment).

Create new layer from visible.

Run Filters → Artistic → Engrave (not Filters → Distorts → Engrave!).

Set the Line Height ~ 1/100 of image height, black on bottom

On the same engrave layer, run G’MIC → Deformation → Random

Set amplitude to taste

Change layer mode to “Darken only”

Add a layer mask, use the original desaturated layer for the mask

Create new layer from visible

Add a layer mask, using the original desaturated layer for mask again (or the mask from previous layer)

Adjust levels of layer to brighten it up a bit

Create (another) new layer from visible

Set background color to white

Run Filters → Distorts → Erase Every Other Row…

Set to columns, and fill with BG color

Set layer blend mode to “Overlay”

]]>https://patdavid.net/2014/09/woodcuthedcutish-effect.htmlhttps://patdavid.net/2014/09/woodcuthedcutish-effect.htmlThu, 18 Sep 2014 20:50:00 GMTI’ve been working on something, and I figured that I should share it with anyone who actually reads the stuff I publish here.

I originally started writing here as a small attempt at bringing tutorials for doing high-quality photography using F/OSS to everyone. So far, it’s been amazing and I’ve really loved meeting and getting to know many like-minded folks.

I’m not leaving. Having just re-read that previous paragraph makes it sound like I am. I’m not.

I am, however, working on something new that I’d like to share with you, though. I’ve called it:

I’ve been writing to hopefully help fill in some gaps on high-quality photographic processes using all of the amazing F/OSS tools that so many great groups have built, and now I think it’s time to move that effort into its own home.

F/OSS photography deserves its own site focused on demonstrating just how amazing these projects are and how fantastic the results can be when using them.

I’m been building the site in my spare time over the past couple of weeks (I’m building it from scratch, so it’s going a little slower than just slapping up a wordpess/blogger/CMS site). I want the new site to focus on the content above all else, and to make it as accessible and attractive as possible for users. I also want to keep the quality of the content as high as possible.

If anyone would like to contribute anything to help out: expertise, artwork, images, tutorials and more, please feel free to contact me and let me know. I’m in the process of porting my old GIMP tutorials over to the new site (and probably updating/re-writing a bunch of it as well), so we can have at least some content to start out with.

If you want to follow along my progress at the moment while I build out the site, I’m blogging about it on the site itself at http://pixls.us/blog. As mentioned in the comments, I actually do have an RSS feed for the blog posts, I just hadn’t linked to it yet (working on it quickly). The location (should your feedreader not pick it up automatically now) is: http://pixls.us/blog/feed.xml.

If you happen to subscribe in a feedreader, please let me know if anything looks off or broken so I can fix it! :)

Things are in a constant state of flux at the moment (did I mention that I’m still building out the back end?), so please bear with me. Please don’t hesitate for a moment to let me know if something looks strange, or with any suggestions as well!

When it’s ready to go, I’m going to ask for everyones help to get the word out, link to it, talk about it, etc. The sooner I can get it ready to go, the sooner we can help folks find out just how great these projects are and what they can do with them!

Excelsior!

]]>https://patdavid.net/2014/09/something-wicked-this-way-comes.htmlhttps://patdavid.net/2014/09/something-wicked-this-way-comes.htmlWed, 03 Sep 2014 21:49:00 GMThttps://patdavid.net/2014/08/clarity-in-gimp-local-contrast-mid-tones.htmlhttps://patdavid.net/2014/08/clarity-in-gimp-local-contrast-mid-tones.htmlTue, 05 Aug 2014 14:53:00 GMTSo, the last time I talked about LinuxPro Magazine was about having a simple give-away of the promotional copies I had received of their GIMP Handbook issue. At that time, I joked with the editor that surely it couldn’t be complete without anything written by me. :)

Then he called me out on my joke and asked me if I wanted to write an article for them.

I know that I primarily write about photography here, but sometimes something comes along that’s too important to pass up talking about.

Krita just happens to be one of those things. Krita is a digital painting and sketching software by artists for artists. While I love GIMP and have seen some incredible work by talented artists using it for painting and sketching, sometimes it’s better to use a dedicated tool for the job. This is where Krita really shines.

That is where you come in. It doesn’t take much to make a difference in great software, and every little bit helps. If you can skip a fancy coffee, pastry, or one drink while out this month, consider using the money you saved to help a great project instead!

There’s only 9 days left in their Kickstarter, and they are less than €800 to hitting their goal of €15,000!

Of course, the team makes it hard to keep up with them. They seem to be rapidly implementing goals in their Kickstarter before they even get funding. For instance, their “super-stretch” goal was to get an OSX implementation of Krita running. Then this shows up in my feed this morning. A prototype already!

I am in constant awe at the talent and results from digital artists, and this is a great tool to help them produce amazing works. As a photographer I am deeply indebted to those who helped support GIMP development over they years, and if we all pull together maybe we can be the ones who future Krita users thank for helping them get access to a great program…

]]>https://patdavid.net/2014/06/krita-kickstarter.htmlhttps://patdavid.net/2014/06/krita-kickstarter.htmlMon, 30 Jun 2014 16:33:00 GMTIn my (apparently) never-ending quest to average all the things, I happened to be surfing around Netflix the other evening looking for something to watch. Then a little light bulb went off!

I had previously blended many different variations of movie posters with varying success, but figured it might be interesting to see mean blends based on Netflix genres (and suggestions for me to watch). So, here are my results across a few different genres:

I found a couple of surprising and interesting things in these results…

For instance, I am not surprised at the prevalence of Teal/Orange in Sci-Fi covers. I was surprised to find that the other genre with such prominent color grading happened to be Comedies (I would have guessed Thrillers or Action).

I had also didn’t think that Romance would look like such a hot mess (there’s a cosmic sign there, I think). I can also sort of make out abstract faces in Thrillers and Action. Horror is relatively tame by comparison!

Title location seems mostly consistent across genres, though there’s a marked preference for top-centered titles in Comedies apparently. You can also see that MST3K must have at least a few titles in my Sci-Fi list (a fact of which I am proud of).

I may finish my work on the movie posters and post them in the future. In the meantime, here is one that I did blending all of the movie posters that the legendary Saul Bass created:

In case your curious, here’s the list of the movies these posters are from:

The Shining (1980)

Such Good Friends (1971)

Bunny Lake is Missing (1968)

In Harm’s Way (1965)

The Cardinal (1963)

It’s a Mad, Mad, Mad, Mad World (1963)

Advise & Consent (1962)

Bird Man of Alcatraz (1962)

One, Two, Three (1961)

Exodus (1960)

Anatomy of a Murder (1959)

North by Northwest (1959)

Vertigo (1958)

Love in the Afternoon (1957)

The Man With the Golden Arm (1955)

]]>https://patdavid.net/2014/06/netflix-top-50-covers-by-genre-averaged.htmlhttps://patdavid.net/2014/06/netflix-top-50-covers-by-genre-averaged.htmlTue, 17 Jun 2014 15:44:00 GMT I received a few Promo copies of the Linux Pro MagazineGIMP Handbook Special Edition in the mail a couple of weeks ago. I’ve just been too busy to sit down and have a look at it in depth.

I did give it a few flip-throughs when I had a moment, though.

This is apparently a “Special Edition” magazine aimed entirely at GIMP and using it. As such, it’s mostly (unlike my blog) ad free. So that means there’s over 100+ (full color) pages of good content!

It’s broken down nicely by sections:

Get Started

Compiling GIMP

GIMP 2.8 and 2.9

User Interfaces

Settings

Basic Functions

Highlights

Basic Functions

Colors

Light and Shadow

Animation with GIMP

Practice

Layers

Selection

Colors

Paths

Text and Logos

Photo Processing

Sharpening

Light and Shadow

Retouch

GIMP Maps

Know How

G’MIC

UFRaw

Painting

Fine Art HDR Processing

Animation with GIMP

The sections appear well written and are clearly laid out. They cover external resources where it makes sense as well (referencing the GIMP Registry quite a few times for some of the more useful and popular scripts).

As an image editing program, GIMP provides a variety of useful and advanced functions for any possible task. Before you use them, however, you should be aware of some simple things.
Get Started: Basic Functions

The writing is nice and clear, and there is a good range of topics covered that should get most beginners on track for exploring further in GIMP.

For example, in the “Photo Processing” section, while discussing Sharpening an image, they make mention of most of what users are likely to need (and some more obscure ones): Standard Sharpening, Unsharp Mask, High-Pass Sharpening, Wavelet Sharpen, and more.

The instructions are clearly presented, and having all full-color pages really helps as there are many examples showing the concepts. There’s also some neat coverage of associated/support programs as well like G’MIC, UFRaw, and LuminanceHDR!

There’s a bundled DVD included that will boot to ArtistX linux as well (and includes GIMP install files for OSX/Win).

All in all, quite a bit of content for $15.99.

To sweeten the deal, the nice folks at LinuxPro Magazine are offering a discount code to save 20% off the price!

The discount code is: GIMP20DISCOUNT and it’ll be valid through July 15th.

Of course… A Give-Away!

I do have a few copies they sent to me as promotional copies. I thought it might be more fun to go ahead and pay them forward to someone else who might get more use out of them than me.

So, all you need to do is either leave a comment below, or share any blog post of mine on Twitter or Google+ with the hashtags #patdavid #GIMP.

You can also email me with “GIMP Giveaway” in the subject.

If you do enter, make sure I have a way to reach you.

Oh, and disclaimer: I’ve never done a give away for anything before, so please bear with me if I suck at it…

I’ll sift through the hashtags and whatnot later next week and randomly pick three folks to send these copies to!

[Update]I chose the winners earlier this week using http://www.random.org. So congratulations to Stan, Anand, and Doug! I’ll be dropping your magazines in the mail this week!

Sarah has been shooting with my friend Brian for a while now. He and I recently tried to organize to shoot together, but unfortunately he was called away at the last moment. Which was a bummer, because I had also just purchased a 60” Photek Softlighter II, and was super-eager to put it through its paces…

Luckily Sarah was still good to do the shoot! (There were some initial hiccups, but we were able to sort them out and finally get started).

There were two aspects to obtaining these results I thought it might be nice to talk about briefly here, the lighting and the post work…

The Lighting

If you’ve ever followed my photographs, I like to keep things simple. This is mostly for two reasons: 1) I’m cheap, and simple is inexpensive. 2) I’m not smart, and simple is easy to understand.

Well, I also happen to really like the look of simply lit images if possible. Some folks can get a little nuts about lighting.

The real creativity is when you can make a simply lit image look good . This is the hard part, I think, and the thing I spend most of my time working to achieve and learn about.

I had previously built myself a small-ish softbox to control my light a bit more, and it has seen quite a bit of use in the time that I’ve had it. It works in a pinch for a neat headshot key light, but I was bumping into the limits of using it due to size. I was mostly constrained with tight-in headshots to keep the light relatively soft. (It was only about 20” square).

So I had been looking for quite some time at a larger modifier. Something I could use for full body images if I wanted, but still keep the nice control and diffusion of a large softbox. Thanks to David Hobby, I finally decided that I simply had to have the Photek Softlighter.

To help me understand faster/better what the light is doing and how it effects a photograph, I try to minimize the other variables as much as I can. Shooting in a controlled environment allows me this luxury, so all these images I took of Sarah are shot with a single light only. This way I can better understand it’s contribution to the image if I want to add any other modifiers or lights (without having to worry about nuking the ambient at the same time).

Postprocessing

For these images I wanted to try something a little different for a change. I wanted to have a consistent color grading for all the images from the session, and I wanted to shoot for something a bit softer and subdued.

In my Raw processor, I adjusted exposure to taste, increased blacks just slightly and added a touch of contrast. I also dropped the vibrance of the image down just a bit as well. I did this because I knew later I would be toning with some curves and didn’t want things to get too saturated.

After exposure, contrast, and vibrance adjustments

I brought the image into GIMP at this point for further pixel-pushing and retouching. As usual, I immediately decomposed the image into wavelet scales so I could work on individual frequencies. There wasn’t much needed to be done for skin work, just some (very) slight mid-frequency smoothing. Spot healing here and there for trivial things, and I was done.

One small difference in my workflow is that I’ve switched from using a Gaussian Blur on the frequency layers to using a Bilateral Blur instead. I feel it preserves tonal changes much better. It can be found in G’MIC under Repair → Smooth [bilateral].

After some mid-frequency smoothing and spot healing

At this point, it was color toning time! (alliteration alert!)

I ended up applying a portra-esque color curve against the image, and reduced its opacity to about 50%. This gave me the nice tones from the curve adjustment, but didn’t throw everything too far red. Just a sort of delicate touch of portra…

A touch of portra-esque color toning

At this point I did something I don’t normally do that often. I wanted to soften the colors a bit more, and skew the overall feeling just slightly warmer and earthy-toned. Sarah has very pretty auburn hair, the portra adjusted the skin tones to be pleasing, and she had on a white shirt, with a gray/brown sweater.

So I added a layer over the entire image and filled it with a nice brown/orange shade. If you’re familiar at all with teal/orange hell, the shade is actually a much darker and unsaturated orange, but we’re not going to cool the shadows separately. We’re just going to wash the image slightly with this brown-ish shade.

This is the shade I used.
It’s #76645B in HTML notation.

I set the layer opacity for this brown layer down really low to about 9%. This took the edge just ever so slightly off the highlights, and lifted the blacks a tiny bit. Here’s the final result before cropping:

Final result (Compare Original)

I feel like it softens the contrast a bit visually, and enhances the browns and reds nicely. After sharpening and cropping I got the final result:

I purposefully didn’t go into too much detail because I’ve written at length about each of the steps that went into this. The most important thing I think in this case is finding a good color toning that you like (the post about color curves for skin is here). The color layer over the image is new, but it was honestly done through experimentation and taste. Try laying different shades at really low opacity over your image to see how it changes things! Experiment!

More Sarah

Now that we’ve had a chance to shoot together, I’m hoping we can continue to do so. In the meantime, here’s a few more images from that day. (The set is also on Google+)

I love the expression on her face here
]]>https://patdavid.net/2014/05/meet-sarah.htmlhttps://patdavid.net/2014/05/meet-sarah.htmlFri, 23 May 2014 19:27:00 GMTThe world probably needs another DIY ringflash tutorial like they need a hole in the head. There’s already quite a few different tutorials around explaining how to create one…

At LGM this year I hacked together a quick ringflash using parts I picked up in a €1 store while walking through the city with Rolf (he helped me pick out and find parts - Thank You Rolf!). I built one while I was there because it was way less hassle than trying to bring mine from home all the way to Leipzig, Germany (they don’t really collapse into any sort of smaller size, so they’re cumbersome to transport).

Anyway, I got some pretty strange looks from folks as I was hacking away at the plastic colander I was using. The trick to making and using these DIY ringflashes is to not care what others think …

Because you will look strange building it, and even stranger using it. If you can get past that, the results are pretty neat, I think.

The results of using the ringflash on Johannes…

There’s a nice even light that helps to fill in and remove harsh shadows across a subjects face (very flattering for reducing the appearance of wrinkles for instance). At lower power with other lighting it makes a fantastic fill light as well.

So, after seeing the results I had a few people ask me if I was going to write up a quick guide on building one of these things. I wasn’t intending to originally, but figured it might make for a fun post, so here we are.

Now, normally I would take fancy photos of the ringflash to illustrate how to go about making one, but I realized that it would be hard to account for all the different types, sizes, and styles that one could be made in.

Oh, and more importantly I wasn’t about to try and lug it all the way back to the states. So I left it there (I think Simon from darktable ended up taking it).

So I’ll improvise…

Building a DIY Ringflash

The Parts

The actual parts list is pretty simple. A large bowl, a small bowl, a cup (or tube), and some tape:

The material can be anything you can easily cut and modify, and hopefully that won’t throw it’s own color cast. White is best on the inside of the large bowl and outside of the small bowl and cup. Silver or metal is fine too, but the color temperature will trend to cooler.

The thing I mainly look for are sizes to fit my intended lens(es) I will be using:

Each of the components needs to have a diameter bigger than my lens to fit through.

I’ll also look for a bowl that has a flat bottom as it usually makes it easier for me to cut holes through it (as well as tape things together).

All the other dimensions and sizes are arbitrary, and are usually dictated by the materials I can find. In Leipzig I used a colander for the large bowl, a cup, and the same small cheap white plastic bowls they served soup in at the party for the smaller bowl*.

* I did not actually use a soup bowl from the party, I just happened to purchase the same type bowl.

The Cuts

The first cut I’ll usually make is to open a hole in the side of the large bowl to allow the flash to poke through. I almost always just sort of wing it, and cut it by hand (or rotary tool if you have one):

It doesn’t have to be placed perfectly in any particular location, though I usually try to place it as close to the bottom of the large bowl as possible.

Once the hole is cut, the flash should fit into place. I try to err on the side of caution and cut on the smaller side just in case. I can always remove more material if I need to, putting it back is harder.

Then I’ll usually place the cup into the bowl and trace out it’s diameter onto the large bowl. When I’m cutting this hole, I try to make it on the smaller side of my mark lines to leave me some room to tape the cup into place.

I’ll go ahead and cut the bottom of the cup now as well:

As with the large bowl, I’ll also trace the cup diameter on the small bowl and mark it. I’ll cut this hole a little small as well just in case.

That’s all there is to cut the parts! Now go grab a roll of tape to tape the whole thing together. If you want to get fancy I suppose you could use some glue or epoxy, but we’re making a DIY ringflash from a bunch of cheap bowls - why get fancy now?

Assembly

It should be self apparent how the whole thing goes together.

One thing I do try to watch for is to not tape things together where the light will be falling. So to tape the cup to the large bowl, I’ll apply the tape from the outside back of the bowl, into the cup.

Tape the front (small) bowl into place in the same way. It might not be pretty, but it should work!

Result

When all is said and done, this should be sort of what you’re looking at:

I’ve made a few of these now, and they honestly don’t take long at all to throw together. If I’m in a store for any reason I’ll at least check out cheap bowls for sale just in case there might be something good to play with (especially if it’s cheap).

“She may not look like much, but she’s got it where it counts, kid.
I’ve made a lot of special modifications myself. “

Using It

If you’ve got the power in your flash, it’s pretty easy to drop the ambient to near black (these were mostly all shot around f/5 1⁄250s ISO 200):

All the shots I took at the LGM 2014 party in Leipzig used this contraption (either as a straight ringflash, or a quick hand-held beauty dish). The whole set is here on Flickr.

Of course, if you put your subject up against a wall, you’ll get that distinctive halo-shadow that a ringflash throws:

WhitneySirko

I also normally don’t do anything to attach the flash to the bowls, or the entire contraption to my camera. The reason is that it actually makes a half decent beauty dish in a pinch if needed. All you have to do is move the ringflash off to a side (left side for me, as I shoot right-handed):

Conclusion

Well, that’s it. I hope the instructions were clear, and at least somebody out there tries building and playing with one of these (share the results if you do!).

As you can see, there’s not much to it. The hardest part is honestly finding bowls and cups of appropriate size…

]]>https://patdavid.net/2014/05/diy-ringflash.htmlhttps://patdavid.net/2014/05/diy-ringflash.htmlFri, 16 May 2014 15:33:00 GMTSo I was talking with G’MIC creator David Tschumperlé the other day and thought it might be handy to have a way to create a montage of images (similar to the montage command in Imagemagick), but to have more control over the montage layout with automatic image fitting.

In the past, if I wanted to montage a series of images of different sizes, I would do it manually in GIMP. What I was proposing to David was to programatically deal with fitting images given some manual input from the user.

I know that he usually works quite fast, but he blew me away with how quick he got into the idea this time. From describing it one afternoon, it was about a day to get something working. (Add another half a day after I gave him a hard time about making the edges fit regardless of padding… Sorry David!)

That means that it’s now trivially easy to combine multiple images and automatically have them scaled to fit each other, like this:

Just a single parameter change and we can re-orient the images vertically like so:

I used only two images here as a simple example, but it’s not any harder to do this with as many images as your memory will permit…

So let’s have a look at this new filter…

The Montage Filter

To use the filter, you’ll want to load up all of the images you want to create the montage from as layers in GIMP.

After running G’MIC,

Filters → G’MIC…

You’ll need to navigate to the new “Montage” filter:

Arrays & tiles → Montage

Firing up G’MIC to use the Montage filter

The first thing you’ll want to remember to do is to change the “Input layers…“ to something more appropriate (I like to use “All visibles“). Your preview window should now change to show all your images. Handily, G’MIC numbers each of your images for you (this will come in handy later when you’re creating a custom montage layout.

(While you’re here, I also like to change the “Output mode…“ to be “New image“. This way I can go back and easily tweak things as I fiddle.)

Montage type

The first setting you’ll want to take a look at is the Montage type. The options are:

Custom layout

You have complete control over the layout. I’ll cover this in greater detail later.

Horizontal

All of the images will be arranged horizontally, height adjusted to all be the same.

Vertical

All of the images will be arranged vertically, width adjusted to all be the same.

Horizontal Array

G’MIC will create a horizontal arrangement of multiple rows, fitting the images.

Vertical Array

G’MIC will create a vertical arrangement of multiple columns, fitting all the images.

Here are the results of running each of these against my 5 test images:

Horizontal, Vertical, Vertical Array, and Horizontal Array

If one of these orientations will work for you, then you’re all set! If you want more control on how the images are arranged, I go over it a little later.

Merging mode

This parameter has two options: Aligned and Scaled.

The Aligned option will not resize any of the images, and will only align them.

The Scaled option is the one I am most interested in here. This option will automatically scale the images DOWN to fit them in their orientation if the Alignment/scale factor is 0.5 or below. You can have the images upscale as well if you want by increasing the factor greater than 0.5. I personally try to avoid all upscaling, so I leave it at the default (0.5):

Padding

There is also a great option to adjust the padding between images when creating the montage. This value is in pixels. Super handy to allow some space between your images:

Horizontal array with 20px padding between images

Frame

There is also an option to include a colored frame around each of the individual images if you want (I don’t personally use this option - but it’s nice that it’s there!).

Cycle layers

This is a nice option to automatically rotate the images in the stack (effectively swapping through which images belong where).

Output as

This is a very handy option for those of us who may like to fiddle even more after generating the montage. You can output the entire montage as a single layer or as multiple layers for further adjustments (I used this option to move layers around in the first image so I could place text on the canvas).

Custom Layout

Ok, so a quick explanation of how to define your own custom layouts is in order, I think. It may seem daunting at first, but I promise it’s not as bad as it looks!

The command for a custom layout is built up from two things: an identifier for orientation (V or H), and an index number for the image.

It helps to always think of it in terms of two “spaces” where you can add images. So if you were working in a horizontal orientation, you’d have two spaces to designate images (or sub nests) left and right.

For instance, let’s start simply and create a simple 2 image horizontal layout. Assume we want to use images 0 and 1 from our list. We would type the following into the Custom layout input in G’MIC:

H(0,1)

In my case, this would produce:

Custom parameter: H(0, 1)

Now, what if we wanted to have a third image in this row? We would just add another horizontal orientation in place of one of the images. So, if we replace the second image in the command with another horizontal layout we would then have 3 images in a row:

H(0, H(1, 2))

Custom parameter: H(0, H(1, 2))

As you can see, it helps to think of it in pairs. The first command said, put image 0 first, then for the next image, use the horizontal layout of images 1 & 2 (in green).

If we wanted, we could instead have said that we wanted the images on the right to be vertically fit by changing the second H to V:

H(0, V(1, 2))

Custom parameter: H(0, V(1, 2))

Of course, you can sub-nest these layouts as deep as you’d like. So to continue the example, if we wanted to have the bottom right image from above actually be another two images in a horizontal orientation:

H(0, V(1, H(2, 3)))

Custom parameter: H(0, V(1, H(2, 3)))

If you’re ever unsure of which image is which index number, just refer to the G’MIC preview window. The image indices are visible over the images they belong to (super helpful). You can always switch over to horizontal or vertical layout to get an overview of the images that are loaded up.

(New!) Rotation

This is the only problem with working with someone like David… He’s usually working too quickly and adding stuff faster than I can write posts about it! Since I started writing this post, he has already added a neat little feature to the custom code that allows you to rotate any arbitrary image or block by prepending an “R“ to it’s section.

Using the 3 image montage from above ( H(0, V(1, 2)) ), but adding an R in front of the vertical block yields:

H(0, RV(1, 2))

To rotate again, just add another R in front:

H(0, RRV(1, 2))

Conclusion

I don’t often arrange my images like this, but I’m not sure if it’s more because I’m too lazy to manually arrange them or not…

I did look around to see if there were other options briefly after David wrote this, and found something called BlogStop. Apparently this is a piece of commercial software to create a montage and includes some sort of blogging integration. It’s also a $49USD piece of software! So consider a small donation to David if you’ve got a few spare bucks around - I know it makes him happy (I’m pretty sure he’s using donations to buy hot chocolates in his lab while he works…).

I was half joking when I mentioned to schumaml on irc a few months ago that I should come out to LGM2014 and do a photography workshop using GIMP. Half joking turned into half-serious, and half-serious turned into “holy crap, I better buy my plane tickets!“…

The LGM team accepted a workshop proposal by Tobias Ellinghaus and myself to talk about darktable and FL/OSS photography workflows. I was also presenting alongside David Tschumperlé and Jérome Boulanger on a retrospective look at G’MIC over the last couple of years! (The title of the presentation was “A 2012-2013 retrospective of the G’MIC project : New features from artists/developers collaborations“).

To say that I was excited is an understatement! I was finally going to get a chance to meet the GIMP team face to face (I idle in the GIMP channel on irc quite a bit)! I was also going to be able to hang out with David, who I collaborate quite often with. Also, none other than Rolf Steinort was also going to be there!

So after driving 700 miles to South Florida to drop our daughter off with grandma, Dot and I jumped on a plane in Miami! We finally hopped off the plane in Leipzig the next afternoon and explored a small bit of the city in preparation for the photowalk the next morning… (after first making a quick stop at the GIMP apartment where Michael and Femke were working on CoC stuff for LGM).

Photowalk

The next morning was a little rough for me, being jet-lagged by about 6 hours. I finally made it out and headed over to the University where I expected to have a small handful of people to meet (it ended up being a few more than I had anticipated, which was nice).

Kaffeehaus Riquet (Leipzig, Germany)

We had a stroll through town while making a few stops, such as Nikolaikirche (Church of St. Nicholas), the home of the Monday Demonstrations in East Germany. I probably should have done a better job directing the photowalk, but honestly I was mostly busy being enthralled by the city itself…

I mean, how can you not be when you turn a corner to find this:

Nikolaikirche (Church of St. Nicholas) and Tobias

Or seeing this when peeking inside the church:

Ceiling view of Nikolaikirche atrium

Of course, Leipzig is home to Johannes Sebastian Bach and his final resting place just happens to be in this church:

Thomaskirche (St. Thomas Church)

To get ready for my trip, I listened to Toccata and Fugue in D minor a LOT:

Panorama View of Thomaskirche

While walking around the city we also happened into the Leipzig Market. It was a bit of an overcast morning with a sun that was attempting (in vain) to break through the gray cloud cover…

Leipzig Old Town Hall with the sun behing the cupola…

One of the nice thing about overcast days is that the sun gets a perfect diffusion material - clouds! This makes for much softer light and prettier portraits when shot outside. We stopped for a moment for me to bring out my reflectors and talk a little bit about using them in various configurations for fill on days like that.

My favorite model demonstrating using a reflector to brighten shadows

What’s nice about using natural light and reflectors is that you get immediate feedback on what the modifiers are doing to your scene - you can see what the reflector is doing in real-time to adjust and modify to taste.

This was actually funny because we had someone holding the reflector for us, and a group of about 10 people (some with big, fancy gear) all firing cameras at one woman in the middle of the market. This actually got quite a few passer-bys to stop and wonder what we were doing (and I even saw a few people snapping photos with their phones of us!). I wonder if they thought we were papparazzi, or doing a model fashion shoot?

Of course, there were cool things to shoot at some of the vendors…

Flowers in the Leipzig Market

Even cooler to shoot some of the people there as well…

Organ Grinder in the Leipzig Market

First Day of LGM!

I was so busy the first day of LGM meeting new people, seeing faces for the first time, and attending the presentations that I didn’t really grab any photos of the event! (Yet another reason why I’d be a horrible photojournalist…).

There were some fun and great presentations given on the first day, though! Pippin led the proceedings off with the “State of Libre Graphics” giving a nice overview of various projects. Nathan Willis gave a neat statistical presentation on traffic patterns of users across different discussion forms, and Peter Sikking did a great presentation on “UI Design for Full GEGL Integration in GIMP” (slides can be found here):

Of course, immediately following Peter I presented with David Tschumperlé and Jerome Boulanger on a retrospective of G’MIC over the past two years:

There were a ton of other great presentations, and I learned quite a bit (there was cool stuff from the Commons Machinery for instance on contextualizing creative works).

Speaking of David Tschumperlé, it was awesome to finally be able to meet and talk in person (after spending the past year collaborating on a few different things for G’MIC)! We were able to talk about many different things, and during the course of the week Jerome even managed to create a great filter to generate grain from a small sample in G’MIC!

David Tschumperlé poses in front of Thomaskirche…

We wandered around that evening a bit taking in the sights and grabbing some dinner…

No, I have no idea what Jerome Boulanger is pointing at…

Rolf Steinort (Meet the GIMP)!

Here was someone I was also really looking forward to meeting, Rolf Steinort (Meet the GIMP)! Rolf had to work earlier in the week, but was able to catch a train over for the second day of LGM. This was awesome. If you’ve ever spent a lot of time learning great things from someone online, you can imagine how neat it was to finally be able to sit down and spend some time with them.

We spent some time wandering around the city together and talking (he’s German and was able to give us some great history and context to our surroundings). It was a blast!

We even passed by a €1 store where they were selling really inexpensive goods, and I got the idea to build a quick light modifier (I didn’t want to pack too heavily for the trip). I had built a couple of cheap and quick ringflash modifiers previously and thought it might be fun to build one to use during the meeting. So I dropped in and spent about €5 purchasing a pasta straining bowl (colander), some cups and some tape.

I borrowed a knife from Rolf, and while we sat at a cafe getting milkshakes (Milchbar Pinguin) I hacked at the plastic bowl and taped stuff together to build a franken-ringflash. This was a very handy light modifier to have for the LGM party later that evening:

People were patient with me using the ringflash…

Rolf managed to capture a great shot of me…

just as I was getting ready to photograph him (though intimidating to the subject, the light quality is uniquely ring-flash-y):

Rolf Steinort through a DIY ringflash…

One nice thing about the way this ringflash was constructed (not being attached to the camera permanently), is that I can easily just hold it off to the side to use it as a makeshift beauty dish as well:

Yes, many people have asked for a build guide or tutorial for making the same ringflash you see here - I’ll be glad to write one up as soon as I finish processing photos from the trip! So stay tuned!

Some Portraits

Yes, the DIY ringflash was fun to play with, but I really wanted to use the opportunity to grab something a little more polished of the GIMP team. Thanks to Tobias Ellinghaus from the darktable team, I was able to borrow his umbrella and stand to shoot some quick one-light portraits.

I was also able to borrow Rolf’s tripod to hold up my diffusion panel as a makeshift umbrella in a pinch. This is how I shot the sample image I used for the workshop on Saturday:

Image used for the photo workshop on Saturday

Including an outtake that I thought was cute:

I didn’t have the luxury of my own room to setup when it came time to shoot everone else, though. I had to do my best with a small area at the top of the stairs in the University, next to the main meeting room…

Not the most ideal situation, but sometimes a challenge is fun! I setup very close to a single wall with Tobias’ umbrella on a lightstand. The chair for the subjects was about a foot from the wall and the umbrella was about the same distance away. We moved out from the back wall to let it fall to gray (which was tough because umbrellas like to spill a lot of light everywhere!).

In the end I feel like I got some neat portraits out of it.

Rolf sat in for me while I adjusted lighting ratios, and I got a pretty nice photo of him in the process…

GIMP Portraits

The set of portraits that I really wanted to grab while I was at LGM was of all of the GIMP team who were able to attend. I wanted to put faces to the people who were giving their time and expertise to all of us in improving and maintaining such an important piece of software to me and my pursuits.

These are the people working hard to bring us such a great piece of software like GIMP. They donate their talents to the software that many of us use every day (and sometimes take for granted perhaps). So remember to donate whenever you can!

In no particular order:

JehanVilleSimonNullMichaelMitchPeterPippinSven

I can’t thank the GIMP team enough for letting me tag along this year to LGM. It really was wonderful getting to meet everyone!

darktable Portraits

While at LGM I also got to meet and make friends with the darktable team as well! These guys were a lot of fun to hang out with, and Tobias opened the Photo Workshop on Saturday with a great intro to darktable! So I couldn’t pass up a chance to shoot their portraits as well:

TobiasSimonJohannes

I’m actually missing a portrait of Pascal for some reason. I must have spaced out and didn’t chase him down to get him to sit for a quick shot. I’m sorry Pascal!

Before I completely finished wrapping up the last shoot at LGM, Dot had a great idea to shoot the darktable team as an homage to Mick Rocks famous cover for Queen II:

Which led to a photograph so funny that I was laughing the entire time while editing it!

In Conclusion

This was an amazing trip! The opportunity to meet so many smart and talented people working hard on free software was just incredible. Everyone was quite passionate about what they were doing, and so many great ideas and discussions were had! I can’t recommend it enough if you’ve ever considered attending! Just go!

If you want to see the complete set of photos I took while I was there, I have them all in an album on Flickr here:

]]>https://patdavid.net/2014/05/libre-graphics-meeting-2014-in-leipzig.htmlhttps://patdavid.net/2014/05/libre-graphics-meeting-2014-in-leipzig.htmlMon, 05 May 2014 22:13:00 GMThttps://patdavid.net/2014/02/25d-parallax-animated-photo-tutorial.htmlhttps://patdavid.net/2014/02/25d-parallax-animated-photo-tutorial.htmlMon, 17 Feb 2014 18:41:00 GMTI had written last week about building the latest G’MIC beta to test out the fancy-schmancy new patch-based inpainting algorithm that the team had cooked up. In the process of building it and testing it, I thought it might be useful for other GIMP users out there to briefly touch on the subject of installing and managing Script-Fu scripts and Plug-ins.

Plug-Ins/Scripts Folder Location

GIMP has a very handy feature that’s tucked away in the Preferences window, and that is the ability to have GIMP search for Plug-Ins and Scripts wherever you want to put them. You can access this through the Preferences:

Edit → Preferences

There are all kinds of neat settings you can feel free to play with here, but for this post we want to look specifically under the Folders section:

There we will find two sections, one for the location of Plug-Ins and the other for Scripts. These entries tell GIMP the location of each, respectively. I happen to be using one of Partha’s portable GIMP builds so don’t go off by my paths obviously, but the principle is the the same - you can tell GIMP where to look for Plug-Ins/Scripts wherever you’d like on your filesystem.

Adding a New Folder Location

So, let’s say you try downloading a new Plug-In and you’d like to try using it. You may be confused initially about where the Plug-In should be installed or unzipped on your machine. Well, you get to decide where that is if you remember to set a path here.

I will often create a new folder somewhere on my machine specifically to hold Plug-Ins I am trying out. This has the benefit of not mucking up your GIMP install as well. If a Plug-In isn’t working correctly, you can just remove the path from this Preference window to skip trying to use it (or if you decide to upgrade/reinstall GIMP - it won’t muck with your downloaded scripts/plug-ins).

For instance, if I wanted to install the G’MIC plugin, I would create a new folder somewhere to hold it, unzip the files into that folder, and then add a new entry in GIMP to look in that folder for Plug-Ins.

Adding a new path is relatively easy:

Adding a new path for Plug-Ins is simple.

Simply hit the New button, and then the Folder button. Navigate to your directory you want to add, and you’re done.

For example, you’ll notice that my last path for Plug-Ins is where I built my G’MIC beta:

C:\petit-msys-mingw-64bits-gimp28\GMIC-GIMP-PLUGIN-64bit-WIN

This works the exact same way for scripts.

Using Dropbox to Sync

I actually work on multiple machines most of the time. At work I’m using Windows 7, but at home I’m usually running OSX on a couple of machines (with the occasional *nix and Win7 thrown in for good measure). One thing that helps me stay in a consistent environment with GIMP is the second to the last entry in that Plug-Ins folder location list above.

C:\Users\patrickd\Dropbox\GIMP plugins

I use the file syncing service Dropbox. It’s nice in that it will automatically sync the contents of a directory across all the computers I have it setup on. (Of course, there are many other services that do this - but they fundamentally work the same). Two very important folders in my Dropbox account are “GIMP scripts” and “GIMP plugins”. As long as I set each of these folders as a path in my local GIMP install, all the scripts and plug-ins will sync and be available to me, no matter which computer I’m on (just don’t forget that Plug-Ins are usually compiled for a particular OS/architecture).

Just a quick tip at the moment that I figured might be helpful to those that didn’t know about it. “The More You Know”, right?

[Addendum]

+Alexandre Prokoudine pointed me to a post over at Libre Graphics World that not only mentions this same topic, but covers much more as well (brushes and patterns and palettes, oh my!). I highly recommend having a look at that post:

]]>https://patdavid.net/2014/02/getting-around-in-gimp-plug-ins-and.htmlhttps://patdavid.net/2014/02/getting-around-in-gimp-plug-ins-and.htmlMon, 10 Feb 2014 23:22:00 GMThttps://patdavid.net/2014/02/getting-around-in-gimp-gmic-inpainting.htmlhttps://patdavid.net/2014/02/getting-around-in-gimp-gmic-inpainting.htmlTue, 04 Feb 2014 23:33:00 GMTOk, I’m sorry I’ve been so quiet! I’m not Missing in Action, I’ve just been busy with some other things…

As a matter of fact, here are those other things!

Libre Graphics Meeting

I’ve been helping out the Libre Graphics Meeting team where I can. If you’re not familiar with them, the Libre Graphics Meeting is the meeting opportunity for many open-source graphics related projects.

This is the meeting where the hackers, designers, users, and developers of many of the most popular FLOSS graphics tools meet to share ideas and to showcase works. For many projects this is the only time that the teams can actually meet face to face to discuss new ideas and progress.

Personally I’ve been trying to help by writing/copyediting posts on the LGM website. So I haven’t had an opportunity to write here as much these paste few weeks.

If you’re reading this, please consider chipping in anything that you can to help bring these great FLOSS project teams together! Seriously, just a few dollars from each person can really, really make a difference. These are the people that are building tools that make what I do here possible, and the only way to get quality software that respects our freedoms.

Donate to the Libre Graphics Meeting Pledgie Campaign!

FL/OSS Tools in a Photographic Workflow

Sounds fancy doesn’t it? Well, not only should you donate to LGM if you can, but if you have the means you should also attend! There’s a good reason to!

I’m going to be conducting a workshop at the meeting on using FL/OSS tools in a photography workflow. I’ve got a two hour block where I’ll be having a photowalk with attendees to talk about photographic processes and maybe techniques, and then back to the meeting to discuss various methods of processing and editing the photographs using a variety of FL/OSS tools (RawTherapee, darktable, Hugin, LuminanceHDR, G’MIC, Imagemagick, and more!).

Of course, GIMP is missing from that list because I wanted to address them separately.

The GIMP team is graciously sponsoring me to attend LGM this year!

I’ve been slowly updating the tutorials on the GIMP website and attaching much more liberal licenses to them so they can be reused freely. (Yet another reason I’ve been unable to post new stuff here lately, but a good reason!). I was thinking that a look at my photographic retouching process using GIMP might be fun and helpful.

I tend to use many different software depending on what I need to do, but of course I always find myself in GIMP at the end… :)

Consider Attending LGM

So, if you’re able to - consider coming over to Leipzig, Germany April 2-5 to join us! The meeting is free to attend, and there will be many great things to see and learn about. For instance:

G’MIC

Yep, David Tschumperle (creator of G’MIC) will be in attendance along with Jérôme Boulanger! They are going to be giving a great overview of G’MIC along with some looks at the incredible filters available with the language (and how they can push these new filters so quickly out to the community due to a tight relationship with the artists that use it). I believe I’ll also be joining them in this presentation briefly to talk about the film emulation effects released last year.

Rolf Steinort / Meet the GIMP

I’ve heard from the man himself, Rolf (of Meet the GIMP of course), that he’ll also be attending this year! I’m going to try and get an autograph!

darktable

Tobias Ellinghaus will be bringing darktable to its first LGM as well! I know many people using free software for photography use darktable - so here’s a chance to interact with the great folks at darktable!

Magic Lantern

Yep, the folks that are able to bring amazing new powers to Canon cameras through a custom firmware will be attending their first LGM as well! In fact, if you bring your Canon camera with you, they will helpfully get you setup with the firmware while you’re there.

These are just a few of the many, many things that will be presented at this years LGM. There’s tons more, and as I get the time I’m updating the LGM website to showcase new sneak peeks at what’s to come.

Oh, and just to help remind you, don’t forget to donate a little something if you can:

Donate to the Libre Graphics Meeting Pledgie Campaign!

]]>https://patdavid.net/2014/01/libre-graphics-meeting-2014-in-leipzig.htmlhttps://patdavid.net/2014/01/libre-graphics-meeting-2014-in-leipzig.htmlWed, 29 Jan 2014 02:52:00 GMTThe team over at GIMP Magazine have released their latest issue, and check out that handsome gentleman on the cover!
“I’m pretty sure there’s a lot more to life than being really, really, ridiculously good looking.”
— Derek Zoolander

Yep, +Steve Czajka and crew have pushed out yet another great issue of the magazine, and I’m not just saying that because my ugly mug is gracing the cover. This issue has my portrait retouching tutorial with the wonderful Mairi, and a really neat tutorial for emulating the results of an old analog photographic process (really old), Gum over Palladium, by +Christopher Perez. +Debi Dalio also reviews Tux Paint for kids!

Personally, I would have gone for a better looking cover model, like Mairi from the tutorial:

Oh, one last thing. I just had to have a quick go at Christophers tutorial from this issue for doing Gum over Palladium, so here’s the cover image using his tutorial:

]]>https://patdavid.net/2013/12/gimp-magazine-issue-5-released.htmlhttps://patdavid.net/2013/12/gimp-magazine-issue-5-released.htmlWed, 11 Dec 2013 17:33:00 GMTSo I can’t leave well enough alone, as seen in my last post about mean averaging stuff. In that last post I had averaged entire music videos to see what the resulting images would look like.

This time around I took a different path. I wanted to demonstrate what exactly was visually happening when creating these averaged images. For that I turned to the experts (by experts, I mean David Tschumperlé), and this time did all of the image averaging in G’MIC. (So a great big Thank You! to David for putting up with me while I tried to describe what I wanted).

The reason is that I wanted to show the videos turning into the final mean averaged images in realtime, as the video played. For this, David was kind enough to write me a quick G’MIC script that would do the mean average for every frame in the video, and dump the total average for each frame one by one.

Basically, each frame of my new video would be a mean average of that frame and all the frames that came before it.

Once I had all my new frames, I just needed to re-assemble them into a video. For that I turned to my ever-trusty Blender install. There was just enough control in the VSE in Blender for me to quickly do exactly what I wanted.

I created two version of my videos, one where I manually made cuts in places, and then began mean blending over each of the cuts. The other version is a straight run of the video as it’s blending, with the normal video overlayed at a very reduced transparency. By the end of the video, you should see something just like the full mean blend of the entire video.

Enough words, let’s see some images and videos!

Not surprisingly, I had some issues with these being hosted on YouTube. The music is copyrighted, so it may not play in some countries (Germany seems to be having a problem). So I apologize to my German readers.
Also, due to the Content ID program, YouTube automatically places ads on these videos on behalf of the rightsholders, so they aren’t my ads - sorry about them…

Beyoncé

First up is Beyoncé with “Single Ladies (Put a Ring on It)”. Here was the resulting mean average of the entire video:

Beyoncé - “Single Ladies (Put a Ring on It)” (5955 frames)

I did two versions of this video, and the only difference is the music. Here is the original music, with the original video overlayed at small opacity:

I just dropped that into a file in my directory (and named the file “video.gmic”), then ran the rather simple command:

gmic video.gmic -foo \" *.png \"

After a little while, I had all of the cumulative mean averaged frames ready for bringing into Blender to re-mux with the original video and audio tracks!

]]>https://patdavid.net/2013/12/mean-averaged-music-videos-g.htmlhttps://patdavid.net/2013/12/mean-averaged-music-videos-g.htmlThu, 05 Dec 2013 21:20:00 GMThttps://patdavid.net/2013/11/getting-around-in-gimp-luminosity-masks.htmlhttps://patdavid.net/2013/11/getting-around-in-gimp-luminosity-masks.htmlMon, 11 Nov 2013 18:25:00 GMTI’ve had a few questions regarding using the Film Emulation presets I put together with the G’MIC team. Specifically, how to use the emulations while offline. So I figured I would offer some suggestions on how to make this possible at the moment.

Well, David Tschumperlé already fixed this (within a couple of hours of publishing this post, no less). I’m leaving it here for posterity, though.
Thanks David!

The way it currently works is, there is a file for each film emulation type. When you choose one to preview in G’MIC, behind the scenes it will go and download the file to your local temporary directory (where this is depends on your OS).

Now, this is fine for the most part. Unless you don’t have a constant internet connection, or a fast one. Then it becomes a bit of a problem. The reason is that sometimes the contents of the temporary directory might be wiped out on a reboot, which means you’d have to re-download all of the emulation files again.

So here’s a way to get around this problem.

I’m going to show this in Windows 7, as I don’t have a linux box nearby to test this on at the moment. See below for notes on linux use.

Get Files

To begin, you’ll actually need to get some of the .cimgz emulation files. The easiest way to do this is to actually use G’MIC to preview the effect on an image.

Open an image, open G’MIC:

Filters → G’MIC

and go to:

Film emulation

Pick a few to preview. If you’ve never used the type before, you’ll notice a slight lag while G’MIC downloads the .cimgz file in the background, then applies it. When you’ve cycled through a few different emulation types, you’re done.

Move Files Around

Now you will have the .cimgz files on your computer somewhere. In my example (Windows 7), the files are stored in a temporary directory in the %APPDATA% directory. In my case they are here:

C:\Users\{USERNAME}\AppData\Local\Temp

So what I want to do is to move all of the .cimgz files to a more permanent place. To make things simple, I just moved up one directory and created a new folder that I called “gmic-film-presets”:

C:\Users\{USERNAME}\AppData\Local\gmic-film-presets

I then just moved all of the gmic*.cimgz files into that folder.

Symlinks in Windows

Ok, a little trial and error led me to this solution. It turns out you can’t just use a shortcut to the files. G’MIC will still download the files if you do. The solution is to use a proper symlink (which wasn’t available until Vista, I believe). A symlink is just a reference to a file somewhere else on your filesystem (linux users should already be aware of them).

It’s sort of like a shortcut, but it’s not. :)

The only caveat is that you’ll need to perform this next step as an administrator on your machine.

Basically, we are going to create symbolic links from our actual files (in the “gmic-film-presets” directory) to the “Temp” directory.

To do this, we’ll need a windows command line, run as administrator. So click on the “Start” button, and in the search box, type in “cmd”. Right-Click on the “cmd.exe” that comes up, and choose “Run as administrator”.

Once you have a command window, just navigate to the Temp directory:

cd C:\Users\{USERNAME}\AppData\Local\Temp

Ok, the actual command for creating a symbolic link is:

mklink {LINK-NAME} {SOURCE}

For example, if I wanted to link a single file from my new directory, into Temp, I would use this command (from the Temp directory):

Symlink All the Things!

So now we know that symlinks will work, but we don’t want to do this manually for each file.

Turns out it’s one, simple command (assuming you are in your Temp directory):

for %f in (..\gmic-film-presets\*.cimgz) do (mklink %~nf.cimgz %f)

Yep, that’s about it. If you have to reboot your machine, or your Temp directory gets cleaned out for any reason, just re-issue that command. You’ll have access to all of the presets immediately (and off-line).

If you download any new .cimgz preset files that you didn’t already have, just move them into the “gimp-film-presets” directory, and re-run the command.

Linux (and possibly OSX) Users

I haven’t tried this yet on my OSX box to check, but the same principle should work no problem with symlinks. (ln -s …). Can someone with a linux box test this and let us know if it works the same?

Stop the Presses

Well, the problem with having David Tschumperlé as a contact is that as soon as I write about something in G’MIC, he either implements it, or fixes it!

So, a little less than two hours after posting, David has already modified G’MIC so that the emulation preset files are no longer stored in a tmp/ directory, but rather in the users filesystem. So they won’t disappear after a reboot. So this whole post is now moot…

While playing around on the last post for averaging long exposure images, I stumbled across something interesting. Apparently Imagemagick can open video files. At that point I just had to have a go at averaging some music videos.

The results were … interesting to say the least.

These are really worth seeing large, just click the image to embiggen.The links for each video name below will open the video in the page, in case you wanted to watch.

Some of them were really cool though. For instance here’s Beyoncé’s “All the Single Ladies”:

I find it interesting that if you’re familiar at all with these videos, the blends immediately evoke the sense of what you’ll see watching them.

Die Antwoord

Almost completely on the other side of the musical spectrum, we have Die Antwoord. I want to send a special “Thank You!” to Boing BoingerXeni Jardin for turning me onto these guys (I consider it telling that I’ve lost count of the cool things that Boing Boing has led me to over the years).

Creating These

I did mention back at the beginning that it was cool I could load video files directly into Imagemagick. Just one problem: IM likes to load up the entire set of files before doing further operations against them. So trying to load up a full HD video in memory didn’t work so well. SD videos loaded, but took forever to process.

To speed it up I just dumped the videos to files first, then operated on them in batches.

You’ll need FFmpeg and Imagemagick, of course. I also happen to be using Cygwin, because I’m more comfortable doing things in a bash shell vs. windows command line.

Dumping the Video

I dumped the video using ffmpeg:

ffmpeg -i INFILE -y -f image2 output_%05d.png

This is fairly self-explanatory. The %05d tells ffmpeg to name each file with 5 digits sequentially.

So now I have a directory of files called output_00001.png, output_00002.png, etc.

Batch Averaging

As I said, IM will choke up if you try to load it with too much data (thousands of 1080p frames for instance). So I did a first pass of averaging by only generating the averages for 100 files at a time:

The magic part is the options in the FOR command (0,1,8). Basically it means, start counting at 0, increment by 1, and stop at 8. Couple that with the globbing for filename “output_0%i*.png”, and that command will batch up 9 images, averaged across 1000 items at a time.

(The result to the command line will be output_00.png, output_01.png, output_02*.png, etc…)

Thanks for the tip!

Conclusion

Of course, I had to leave you all with one last video. The question is, can you guess which video it is?

Guess the video. Here’s a little hint:
“You wouldn’t get this from any other guy”
]]>https://patdavid.net/2013/09/mean-averaging-music-videos.htmlhttps://patdavid.net/2013/09/mean-averaging-music-videos.htmlThu, 19 Sep 2013 19:24:00 GMThttps://patdavid.net/2013/09/faking-nd-filter-for-long-exposure.htmlhttps://patdavid.net/2013/09/faking-nd-filter-for-long-exposure.htmlMon, 16 Sep 2013 21:27:00 GMTWell, it’s been a busy week. I thought it would be nice to post a small update on the current status of these film emulation presets.

In my first post on these, I described what I was doing. At that time, I had only a few different film emulations to go with it. I released a couple of more earlier this week as well (instant films). Here is the current types of film available, with sample plates at their lowest settings to show what they look like (and a preview of some new stuff coming soon).

But wait, there’s more!

Color Positive (Slide) Film Emulation

There are many out there who love their old slide films, and I had a request for some on the previous post, so here are the slide films that I am working on, and will hopefully be available shortly:

The color positive films included in this next batch (in case the text is too small to read) are:

Agfa Precisa 100

Fuji Astia 100F

Fuji FP 100C

Fuji Provia 100F

Fuji Provia 400F

Fuji Provia 400X

Fuji Sensia 100

Fuji Superia 200 XPRO

Fuji Velvia 50

Generic Fuji Astia 100

Generic Fuji Provia 100

Generic Fuji Velvia 100

Generic Kodachrome 64

Generic Kodak Ektachrome 100 VS

Kodak E-100 GX Ektachrome 100

Kodak Ektachrome 100 VS

Kodak Elite Chrome 200

Kodak Elite Chrome 400

Kodak Elite ExtraColor 100

Kodak Kodachrome 200

Kodak Kodachrome 25

Kodak Kodachrome 64

Lomography X-Pro Slide 200

Polaroid 669

Polaroid 690

Polaroid Polachrome

Color Negative Film Emulation

Here are some other color negative films coming soon also:

The films in this list include:

Agfa Ultra Color 100

Agfa Vista 200

Fuji Superia 200

Fuji Superia HG 1600

Fuji Superia Reala 100

Fuji Superia X-Tra 800

Kodak Elite 100 XPRO

Kodak Elite Color 200

Kodak Elite Color 400

Kodak Portra 160 NC

Kodak Portra 160 VC

Lomography Redscale 100

Black & White Film Emulation

Of course, I had to play with a bunch of different B&W films as well:

All of the B&W films are:

Agfa APX 100

Agfa APX 25

Fuji Neopan 1600

Fuji Neopan Acros 100

Ilford Delta 100

Ilford Delta 3200

Ilford Delta 400

Ilford FP4 Plus 125

Ilford HP5 Plus 400

Ilford HPS 800

Ilford Pan F Plus 50

Ilford XP2

Kodak BW 400 CN

Kodak HIE (HS Infra)

Kodak T-Max 100

Kodak T-Max 3200

Kodak T-Max 400

Kodak Tri-X 400

Polaroid 664

Polaroid 667

Polaroid 672

Rollei IR 400

Rollei Ortho 25

Rollei Retro 100 Tonal

Rollei Retro 80s

Even More?

That is what I have at the moment. I’m looking around for any others that I may like to play with, but for the moment this is quite a bundle. As soon as David Tschumperlé gets a moment, I’m sure he’ll be adding these last set of emulations into G’MIC as well.

As I’ve mentioned before, these might make a good starting off point to finding what works for you and your taste. Experiment and have fun! If you do use these at all, please show them off and share with the community (either over on the GIMP Users community on G+, or over at the Flickr group).