publish: Resizing 2500 photos

This commit is contained in:
murtezayesil 2020-08-13 15:31:16 +06:00
parent 906484196d
commit ccc47fb6d9
14 changed files with 573 additions and 9 deletions

View File

@ -0,0 +1,97 @@
title: Resizing 2500 photos
date: 2020-07-13 07:19
tags: code, 100DaysToOffload
summary: We needed to resize 2500 photographs for a website. There is a shell script for that.
status: published
comment:
hundreddaystooffload: 18
I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used [imagemagick](https://imagemagick.org/) to write [desktop-clock](https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock "use imagemagick, figlet and feh for tty-clock on wallpaper"), immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.
``` sh
/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\
| for each image |
| do resize to height=800 |
\___________________________/
O
o \_\_ _/_/
. \__/
(oo)\_______
(__)\ )\/\
||----w |
|| ||
```
# This is a learning opportunity
Since I don't have much of an experience on shell scripting, I was [Duck](https://start.duckduckgo.com/ "DuckDuckGo")ing everything. I learned to do few things during this task.
1. [For loops in shell script](https://duckduckgo.com/?q=for+loop+shell+script "There are many tutorials")
2. Getting [list of files](https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script "I didn't know how to use asteriks 😅️")
3. Correct syntax for [resizing with ImageMagick](https://imagemagick.org/script/convert.php "It ain't magick but it quiet is 😉️")
After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together.
Here is `image_shrinker.v0.1_alpha.sh` :
``` sh
#!/bin/sh
mkdir ../output
for image in ./*
do
convert $image -scale 1000000x800 ../output/$image
done
```
This version has problems which I can't call "feature" 😁️ :
0. Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.
1. Script must be in same directory as images
2. PWD must point to the directory where script is
## Adjustable resolution
``` sh
#!/bin/sh
mkdir ../output
WIDTH=$1 ; HEIGHT=$2
for image in ./*
do
convert $image -scale $WIDTHx$HEIGHT ../output/$image
done
```
This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :
``` sh
#!/bin/sh
if [ $# -lt 2 ]
then
echo "USAGE:"
echo -e "\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT"
exit 1
fi
WIDTH=$1 ; HEIGHT=$2
mkdir ../output
for image in *
do
convert $image -scale $Resolution ../output/$image
done
```
Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️
``` sh
#!/bin/sh
DIR=`pwd`
for image in ./*.*
do
# Below code will scale images to 800px height without breaking aspect ratio
convert $DIR/$image -scale 10000x800 -write $DIR/../output/$image
done
```
It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.

View File

@ -81,6 +81,8 @@
<dd><a href="https://murtezayesil.me/digital-cleansing-nextcloud.html">Digital Cleansing - NextCloud</a></dd>
<dt>Tue 14 July 2020</dt>
<dd><a href="https://murtezayesil.me/digital-cleansing-identifying-services-we-use.html">Digital Cleansing - Identifying services we use</a></dd>
<dt>Mon 13 July 2020</dt>
<dd><a href="https://murtezayesil.me/resizing-2500-photos.html">Resizing 2500 photos</a></dd>
<dt>Sun 12 July 2020</dt>
<dd><a href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html">Digital Cleansing For Better Privacy</a></dd>
<dt>Fri 10 July 2020</dt>

View File

@ -127,6 +127,22 @@
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>

View File

@ -49,7 +49,7 @@
</header><!-- /#banner -->
<section id="content" class="body">
<h1>Authors on Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/author/ali-murteza-yesil.html">Ali Murteza Yesil</a> (17)</li>
<h1>Authors on Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/author/ali-murteza-yesil.html">Ali Murteza Yesil</a> (18)</li>
</section>
<section id="extras" class="body">

View File

@ -51,7 +51,7 @@
<ul>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a> (3)</li>
<li><a href="https://murtezayesil.me/category/personal.html">Personal</a> (5)</li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (9)</li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (10)</li>
</ul>
<section id="extras" class="body">
<div class="blogroll">

View File

@ -241,6 +241,22 @@ You can't play songs from your Spotify account either. Songs on Spotify/Apple Mu
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>

View File

@ -551,7 +551,91 @@ This list may get longer as I remember services I subscribed to but didn't use i
I will start with looking for alternatives to Google Drive.&lt;/p&gt;
&lt;p&gt;If there is any other service you think I should stay away from, you can write to comment toot.&lt;br&gt;
If you have written a blog post as an answer, mention that too.&lt;br&gt;
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.&lt;/p&gt;</content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html">&lt;p&gt;I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".&lt;/p&gt;</summary><content type="html">&lt;p&gt;I previously wrote about &lt;a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family"&gt;how I got became more privacy caring individual&lt;/a&gt; and I tooted about &lt;a href="https://fosstodon.org/@murtezayesil/104480280886518081"&gt;My Master Plan for Privacy of My Family&lt;/a&gt;. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.&lt;/p&gt;
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.&lt;/p&gt;</content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Resizing 2500 photos</title><link href="https://murtezayesil.me/resizing-2500-photos.html" rel="alternate"></link><published>2020-07-13T07:19:00+06:00</published><updated>2020-07-13T07:19:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-13:/resizing-2500-photos.html</id><summary type="html">&lt;p&gt;We needed to resize 2500 photographs for a website. There is a shell script for that.&lt;/p&gt;</summary><content type="html">&lt;p&gt;I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used &lt;a href="https://imagemagick.org/"&gt;imagemagick&lt;/a&gt; to write &lt;a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper"&gt;desktop-clock&lt;/a&gt;, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾&lt;span class="se"&gt;\ &lt;/span&gt;
&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; each image &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; resize to &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;800&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="se"&gt;\_&lt;/span&gt;__________________________/
O
o &lt;span class="se"&gt;\_\_&lt;/span&gt; _/_/
. &lt;span class="se"&gt;\_&lt;/span&gt;_/
&lt;span class="o"&gt;(&lt;/span&gt;oo&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\_&lt;/span&gt;______
&lt;span class="o"&gt;(&lt;/span&gt;__&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\ &lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\/\&lt;/span&gt;
&lt;span class="o"&gt;||&lt;/span&gt;----w &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;This is a learning opportunity&lt;/h1&gt;
&lt;p&gt;Since I don't have much of an experience on shell scripting, I was &lt;a href="https://start.duckduckgo.com/" title="DuckDuckGo"&gt;Duck&lt;/a&gt;ing everything. I learned to do few things during this task.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials"&gt;For loops in shell script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Getting &lt;a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️"&gt;list of files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Correct syntax for &lt;a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️"&gt;resizing with ImageMagick&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. &lt;/p&gt;
&lt;p&gt;Here is &lt;code&gt;image_shrinker.v0.1_alpha.sh&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
mkdir ../output
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale 1000000x800 ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This version has problems which I can't call "feature" 😁️ :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.&lt;/li&gt;
&lt;li&gt;Script must be in same directory as images&lt;/li&gt;
&lt;li&gt;PWD must point to the directory where script is&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Adjustable resolution&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
mkdir ../output
&lt;span class="nv"&gt;WIDTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;HEIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale &lt;span class="nv"&gt;$WIDTHx$HEIGHT&lt;/span&gt; ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$#&lt;/span&gt; -lt &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;USAGE:&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;quot;\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="nv"&gt;WIDTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;HEIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
mkdir ../output
&lt;span class="k"&gt;for&lt;/span&gt; image in *
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale &lt;span class="nv"&gt;$Resolution&lt;/span&gt; ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nv"&gt;DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*.*
&lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="c1"&gt;# Below code will scale images to 800px height without breaking aspect ratio&lt;/span&gt;
convert &lt;span class="nv"&gt;$DIR&lt;/span&gt;/&lt;span class="nv"&gt;$image&lt;/span&gt; -scale 10000x800 -write &lt;span class="nv"&gt;$DIR&lt;/span&gt;/../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.&lt;/p&gt;</content><category term="Tech"></category><category term="code"></category><category term="100DaysToOffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html">&lt;p&gt;I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".&lt;/p&gt;</summary><content type="html">&lt;p&gt;I previously wrote about &lt;a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family"&gt;how I got became more privacy caring individual&lt;/a&gt; and I tooted about &lt;a href="https://fosstodon.org/@murtezayesil/104480280886518081"&gt;My Master Plan for Privacy of My Family&lt;/a&gt;. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.&lt;/p&gt;
&lt;p&gt;I am not the first to do this. There are many privacy friendly alternatives developed by people who care about privacy. It isn't hard to find those &lt;a href="https://alternativeto.net/" title="Crowdsourced Software Recomendations"&gt;alternatives&lt;/a&gt;. Many people went through this journey, which I call "Digital Cleansing For Better Privacy". During my journey, I will document the steps I have taken and write my thoughts about the alternatives I tried.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Digital Cleansing For Better Privacy&lt;/h1&gt;

File diff suppressed because one or more lines are too long

View File

@ -329,7 +329,91 @@ This list may get longer as I remember services I subscribed to but didn't use i
I will start with looking for alternatives to Google Drive.&lt;/p&gt;
&lt;p&gt;If there is any other service you think I should stay away from, you can write to comment toot.&lt;br&gt;
If you have written a blog post as an answer, mention that too.&lt;br&gt;
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.&lt;/p&gt;</content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html">&lt;p&gt;I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".&lt;/p&gt;</summary><content type="html">&lt;p&gt;I previously wrote about &lt;a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family"&gt;how I got became more privacy caring individual&lt;/a&gt; and I tooted about &lt;a href="https://fosstodon.org/@murtezayesil/104480280886518081"&gt;My Master Plan for Privacy of My Family&lt;/a&gt;. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.&lt;/p&gt;
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.&lt;/p&gt;</content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Resizing 2500 photos</title><link href="https://murtezayesil.me/resizing-2500-photos.html" rel="alternate"></link><published>2020-07-13T07:19:00+06:00</published><updated>2020-07-13T07:19:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-13:/resizing-2500-photos.html</id><summary type="html">&lt;p&gt;We needed to resize 2500 photographs for a website. There is a shell script for that.&lt;/p&gt;</summary><content type="html">&lt;p&gt;I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used &lt;a href="https://imagemagick.org/"&gt;imagemagick&lt;/a&gt; to write &lt;a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper"&gt;desktop-clock&lt;/a&gt;, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾&lt;span class="se"&gt;\ &lt;/span&gt;
&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; each image &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; resize to &lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;800&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="se"&gt;\_&lt;/span&gt;__________________________/
O
o &lt;span class="se"&gt;\_\_&lt;/span&gt; _/_/
. &lt;span class="se"&gt;\_&lt;/span&gt;_/
&lt;span class="o"&gt;(&lt;/span&gt;oo&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\_&lt;/span&gt;______
&lt;span class="o"&gt;(&lt;/span&gt;__&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\ &lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="se"&gt;\/\&lt;/span&gt;
&lt;span class="o"&gt;||&lt;/span&gt;----w &lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;This is a learning opportunity&lt;/h1&gt;
&lt;p&gt;Since I don't have much of an experience on shell scripting, I was &lt;a href="https://start.duckduckgo.com/" title="DuckDuckGo"&gt;Duck&lt;/a&gt;ing everything. I learned to do few things during this task.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials"&gt;For loops in shell script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Getting &lt;a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️"&gt;list of files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Correct syntax for &lt;a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️"&gt;resizing with ImageMagick&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. &lt;/p&gt;
&lt;p&gt;Here is &lt;code&gt;image_shrinker.v0.1_alpha.sh&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
mkdir ../output
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale 1000000x800 ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This version has problems which I can't call "feature" 😁️ :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.&lt;/li&gt;
&lt;li&gt;Script must be in same directory as images&lt;/li&gt;
&lt;li&gt;PWD must point to the directory where script is&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Adjustable resolution&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
mkdir ../output
&lt;span class="nv"&gt;WIDTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;HEIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale &lt;span class="nv"&gt;$WIDTHx$HEIGHT&lt;/span&gt; ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$#&lt;/span&gt; -lt &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;USAGE:&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;quot;\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="nv"&gt;WIDTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;HEIGHT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
mkdir ../output
&lt;span class="k"&gt;for&lt;/span&gt; image in *
&lt;span class="k"&gt;do&lt;/span&gt;
convert &lt;span class="nv"&gt;$image&lt;/span&gt; -scale &lt;span class="nv"&gt;$Resolution&lt;/span&gt; ../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nv"&gt;DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; image in ./*.*
&lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="c1"&gt;# Below code will scale images to 800px height without breaking aspect ratio&lt;/span&gt;
convert &lt;span class="nv"&gt;$DIR&lt;/span&gt;/&lt;span class="nv"&gt;$image&lt;/span&gt; -scale 10000x800 -write &lt;span class="nv"&gt;$DIR&lt;/span&gt;/../output/&lt;span class="nv"&gt;$image&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.&lt;/p&gt;</content><category term="Tech"></category><category term="code"></category><category term="100DaysToOffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html">&lt;p&gt;I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".&lt;/p&gt;</summary><content type="html">&lt;p&gt;I previously wrote about &lt;a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family"&gt;how I got became more privacy caring individual&lt;/a&gt; and I tooted about &lt;a href="https://fosstodon.org/@murtezayesil/104480280886518081"&gt;My Master Plan for Privacy of My Family&lt;/a&gt;. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.&lt;/p&gt;
&lt;p&gt;I am not the first to do this. There are many privacy friendly alternatives developed by people who care about privacy. It isn't hard to find those &lt;a href="https://alternativeto.net/" title="Crowdsourced Software Recomendations"&gt;alternatives&lt;/a&gt;. Many people went through this journey, which I call "Digital Cleansing For Better Privacy". During my journey, I will document the steps I have taken and write my thoughts about the alternatives I tried.&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;Digital Cleansing For Better Privacy&lt;/h1&gt;

View File

@ -127,6 +127,22 @@
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>

View File

@ -0,0 +1,214 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Resizing 2500 photos</title>
<link rel="stylesheet" href="https://murtezayesil.me/theme/css/main.css" />
<link href="https://murtezayesil.me/feeds/atom.xml" type="application/atom+xml" rel="alternate" title="Ali Murteza Yesil Atom Feed" />
<link href="https://murtezayesil.me/feeds/rss.xml" type="application/rss+xml" rel="alternate" title="Ali Murteza Yesil RSS Feed" />
<!-- This border added via BLACK_LIVES_MATTER toggle in site settings -->
<style>
body {
border-width: 5em ;
border-color: #000000 ;
border-style: none solid solid solid ; /* top border : none, right bottom left : solid */
}
</style>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body id="index" class="home">
<!-- This banner added via BLACK_LIVES_MATTER toggle in site settings -->
<div style="background-color: black; padding: 1em; margin-bottom: .8em">
<h1 style="text-align: center; margin-bottom: 0em"><a href="https://blacklivesmatter.com/" style="color: #fce21b; font-size: 2em">Black Lives Matter</a></h1>
</div>
<header id="banner" class="body">
<h1><a href="https://murtezayesil.me/">Ali Murteza Yesil <strong>Blog</strong></a></h1>
<nav><ul>
<li><a href="https://murtezayesil.me/pages/about.html">About</a></li>
<li><a href="https://murtezayesil.me/pages/contact.html">Contact</a></li>
</ul>
<form id="search" action"#" onsubmit="javascript:window.open('https://duckduckgo.com/?q='+document.getElementById('keywords').value+'+site:https://murtezayesil.me');">
<input id="keywords" type="text" />
</form>
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/personal.html">Personal</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
<div>
</header><!-- /#banner -->
<section id="content" class="body">
<article>
<header>
<h1 class="entry-title">
<a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> <p>I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used <a href="https://imagemagick.org/">imagemagick</a> to write <a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper">desktop-clock</a>, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.</p>
<div class="highlight"><pre><span></span><code>/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾<span class="se">\ </span>
<span class="p">|</span> <span class="k">for</span> each image <span class="p">|</span>
<span class="p">|</span> <span class="k">do</span> resize to <span class="nv">height</span><span class="o">=</span><span class="m">800</span> <span class="p">|</span>
<span class="se">\_</span>__________________________/
O
o <span class="se">\_\_</span> _/_/
. <span class="se">\_</span>_/
<span class="o">(</span>oo<span class="o">)</span><span class="se">\_</span>______
<span class="o">(</span>__<span class="o">)</span><span class="se">\ </span> <span class="o">)</span><span class="se">\/\</span>
<span class="o">||</span>----w <span class="p">|</span>
<span class="o">||</span> <span class="o">||</span>
</code></pre></div>
<h1>This is a learning opportunity</h1>
<p>Since I don't have much of an experience on shell scripting, I was <a href="https://start.duckduckgo.com/" title="DuckDuckGo">Duck</a>ing everything. I learned to do few things during this task.</p>
<ol>
<li><a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials">For loops in shell script</a></li>
<li>Getting <a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️">list of files</a></li>
<li>Correct syntax for <a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️">resizing with ImageMagick</a></li>
</ol>
<p>After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. </p>
<p>Here is <code>image_shrinker.v0.1_alpha.sh</code> :</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
mkdir ../output
<span class="k">for</span> image in ./*
<span class="k">do</span>
convert <span class="nv">$image</span> -scale 1000000x800 ../output/<span class="nv">$image</span>
<span class="k">done</span>
</code></pre></div>
<p>This version has problems which I can't call "feature" 😁️ :</p>
<ol>
<li>Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.</li>
<li>Script must be in same directory as images</li>
<li>PWD must point to the directory where script is</li>
</ol>
<h2>Adjustable resolution</h2>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
mkdir ../output
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
<span class="k">for</span> image in ./*
<span class="k">do</span>
convert <span class="nv">$image</span> -scale <span class="nv">$WIDTHx$HEIGHT</span> ../output/<span class="nv">$image</span>
<span class="k">done</span>
</code></pre></div>
<p>This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$#</span> -lt <span class="m">2</span> <span class="o">]</span>
<span class="k">then</span>
<span class="nb">echo</span> <span class="s2">&quot;USAGE:&quot;</span>
<span class="nb">echo</span> -e <span class="s2">&quot;\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT&quot;</span>
<span class="nb">exit</span> <span class="m">1</span>
<span class="k">fi</span>
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
mkdir ../output
<span class="k">for</span> image in *
<span class="k">do</span>
convert <span class="nv">$image</span> -scale <span class="nv">$Resolution</span> ../output/<span class="nv">$image</span>
<span class="k">done</span>
</code></pre></div>
<p>Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
<span class="nv">DIR</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span><span class="sb">`</span>
<span class="k">for</span> image in ./*.*
<span class="k">do</span>
<span class="c1"># Below code will scale images to 800px height without breaking aspect ratio</span>
convert <span class="nv">$DIR</span>/<span class="nv">$image</span> -scale 10000x800 -write <span class="nv">$DIR</span>/../output/<span class="nv">$image</span>
<span class="k">done</span>
</code></pre></div>
<p>It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.</p>
</div><!-- /.entry-content -->
<!-- #100DaysToOffload message -->
<p>Day <strong>18</strong> of <a href="https://100daystooffload.com/" title="click to read about the challenge">#100DaysToOffload</a></p>
</article>
</section>
<section id="extras" class="body">
<div class="blogroll">
<h2>blogroll</h2>
<ul>
<li><a href="https://kevq.uk">Kev Quirk</a></li>
<li><a href="https://mikestone.me">Mike Stone</a></li>
<li><a href="https://yarmo.eu/">Yarmo Mackenbach</a></li>
</ul>
</div><!-- /.blogroll -->
<div class="social">
<h2>social</h2>
<ul>
<li><a href="https://murtezayesil.me/feeds/atom.xml" type="application/atom+xml" rel="alternate">atom feed</a></li>
<li><a href="https://murtezayesil.me/feeds/rss.xml" type="application/rss+xml" rel="alternate">rss feed</a></li>
<li><a href="https://fosstodon.org/@murtezayesil" rel="me">Fostodon</a></li>
</ul>
</div><!-- /.social -->
</section><!-- /#extras -->
<footer id="contentinfo" class="body">
<p>Powered by <a href="http://getpelican.com/">Pelican</a>. Theme <a href="https://github.com/blueicefield/pelican-blueidea/">blueidea</a>, inspired by the default theme.</p>
</footer><!-- /#contentinfo -->
<!-- IndieWeb Profile -->
<!-- ToDo : Make IndieWeb Profile auto generating according to site preferences -->
<!-- This profile is created by following https://kevq.uk/how-to-create-an-indieweb-profile/ blog post. Thanks to Kev Quirk -->
<section style="display: none;" class="h-card">
<!-- About me -->
<span class="p-name">Ali Murteza Yesil</span>
<span class="p-note">I'm a student, privacy advocate and SysAdmin wannabe. I was born in Turkey but I live abroad.</span>
<!-- Profile picture -->
<img class="u-photo" src="https://murtezayesil.me/images/avatar_polygon_1.png"/>
<!-- My location -->
<!-- <span class="p-locality">City, Country or Country</span> -->
<!-- Links -->
<a class="u-url u-uid" href="https://murtezayesil.me"></a>
<!-- Mail Template <a class="u-email" rel="me" href="mailto:USERNAME@SERVICEPROVIDER"></a> -->
<a class="u-url" rel="me" href="https://fosstodon.org/@murtezayesil"></a>
<!-- Twitter Example <a class="u-url" rel="me" href="https://twitter.com/USERNAME"></a> -->
<!-- Template <a class="u-url" rel="me" href="https://URL"></a> -->
<!-- Categories -->
<span class="p-category">Blogging</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Privacy</span>
</section>
</body>
</html>

View File

@ -127,6 +127,22 @@
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>

View File

@ -89,11 +89,30 @@
<h2>Comments</h2>
<p>Toot on <a href="https://fosstodon.org/@murtezayesil/104552527725862495">this thread</a> to comment. This blog is a static site. Comments won't appear here.</p>
</article>
</aside><!-- /#featured -->
<section id="content" class="body">
<h1>Other articles</h1>
<ol id="posts-list" class="hfeed">
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 13 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
Page 1 / 1
</p>
</aside><!-- /#featured -->
</ol><!-- /#posts-list -->
</section><!-- /#content -->
<section id="extras" class="body">
<div class="blogroll">

View File

@ -49,9 +49,9 @@
</header><!-- /#banner -->
<section id="content" class="body">
<h1>Tags for Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a> (17)</li>
<h1>Tags for Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a> (18)</li>
<li><a href="https://murtezayesil.me/tag/android.html">android</a> (1)</li>
<li><a href="https://murtezayesil.me/tag/code.html">code</a> (1)</li>
<li><a href="https://murtezayesil.me/tag/code.html">code</a> (2)</li>
<li><a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a> (6)</li>
<li><a href="https://murtezayesil.me/tag/distros.html">distros</a> (2)</li>
<li><a href="https://murtezayesil.me/tag/fediverse.html">fediverse</a> (1)</li>