diff --git a/back.svg b/back.svg deleted file mode 100644 index 8c0fe43..0000000 --- a/back.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - -
- Instructions
- Scan the QR code above and paste the contents into the address bar of a web browser like Firefox, Chrome, or Edge to get started
-
-
- - ./back.svg - ./build.sh - ./front.svg - ./readme.html - ./fc.svg - ./bc.svg -
- - - Using QRnZine v0.1 For Self-replication - https://github.com/mlaga97/QRnZine - - - - - - - - ./p1.svg - ./p2.svg - ./p3.svg - ./p4.svg - ./p5.svg - ./p6.svg - - - - - - - - - - -
diff --git a/bc.svg b/bc.svg deleted file mode 100644 index b8197ec..0000000 --- a/bc.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - -
-

This zine was made with QRnZine, a collection of SVG templates and scripts for building zines which contain the means of their own reproduction.

-

By unfolding this zine and turning the page over, you should find a set of QR codes containing instructions and source code that can be used both to replicate this zine, as well as to create your own zines with their own self-replicating abilities.

-
-
-
diff --git a/build.sh b/build.sh index 3766f4a..26c607e 100755 --- a/build.sh +++ b/build.sh @@ -1,22 +1,18 @@ -rm *.png *.zip - function h() { echo "data:$1;base64,`cat $2 | base64 -w0`" | qrencode -t png -o $3.png; } -zip t1.zip back.svg build.sh -zip t2.zip front.svg readme.html +for i in `seq 1 4`; do + zip c$i.zip c$i.svg + h application/zip c$i.zip c$i +done -zip c1.zip fc.svg bc.svg -zip c2.zip p1.svg p2.svg -zip c3.zip p3.svg p4.svg -zip c4.zip p5.svg p6.svg +zip t1.zip readme.html build.sh +zip t2.zip main.svg clean.sh h text/html readme.html i1 h application/zip t1.zip t1 h application/zip t2.zip t2 -h application/zip c1.zip c1 -h application/zip c2.zip c2 -h application/zip c3.zip c3 -h application/zip c4.zip c4 -rm *.zip +chromium --headless --disable-gpu --no-pdf-header-footer --print-to-pdf=output.pdf main.svg + +./clean.sh diff --git a/c1.svg b/c1.svg new file mode 100644 index 0000000..6e5c147 --- /dev/null +++ b/c1.svg @@ -0,0 +1,26 @@ + + + + + +
+

This zine was made with QRnZine, a collection of SVG templates and scripts for building zines which contain the means of their own reproduction.

+

By unfolding this zine and turning the page over, you should find a set of QR codes containing instructions and source code that can be used both to replicate this zine, as well as to create your own zines with their own self-replicating abilities.

+
+
+ + + https://github.com/mlaga97/QRnZine + QRnZine v0.2 + + + + +
+

QRnZine

+

A Toolkit for Creating Zines That Contain the Means of their Own Reproduction

+ An "artistic" exercise in abusing QR codes as a method for memetic self-replication +
+
+
+
diff --git a/c2.svg b/c2.svg new file mode 100644 index 0000000..52ae38b --- /dev/null +++ b/c2.svg @@ -0,0 +1,27 @@ + + + Page 1 + + +
+ Preface/Disclaimer +

This zine and QRnZine itself are pretty technical in nature and assume that the user is fairly technically advanced going in, with at least basic familiarity with command-line tools and editing of programming, scripting, and markup languages.

+

The intent of this zine is mostly to explore how a few interesting tools work together to make this document possible, but skips over a lot in the process to fit the medium.

+
+
+ + + + Page 2 + + +
+ Introduction +

Link rot is very real and photocopiers don't come with an easy edit button.

+

That's basically the problem QRnZine is intended to fix.

+

If you could put the source code of a zine within the zine itself, other people could hopefully more easily replicate, modify, and create zines built using that one as a template.

+

But how do you fit the source code for a zine inside itself?

+
+
+
+
diff --git a/c3.svg b/c3.svg new file mode 100644 index 0000000..411a7a5 --- /dev/null +++ b/c3.svg @@ -0,0 +1,26 @@ + + + Page 3 + +
+ SVGs +

First we'll need to have a template to start with...

+

SVG (Scalable Vector Graphics) is an XML-based vector image format.

+

If you already know HTML, SVG is super easy to wrap your head around and start modifying, but comes with some handy extra tools for making things like print documents like this one.

+

SVG seems like a good choice to use for building a document template.

+
+
+ + + + Page 4 + +
+ QR Codes +

Getting code onto and off of paper easily is a pain if you're relying on manually copying between the two.

+

Fortunately, this problem is largely avoided using barcodes and 2d barcodes like QR Codes, the ubiquitous 2d barcode solution that pretty much everyone has a scanner for in their pocket.

+

The biggest QR codes can store about 3kB of text, which is decent, but not quite enough for us.

+
+
+
+
diff --git a/c4.svg b/c4.svg new file mode 100644 index 0000000..9be3cc0 --- /dev/null +++ b/c4.svg @@ -0,0 +1,26 @@ + + + Page 5 + +
+ Data URIs +

Data URIs are a special URL format that allows for data to be stored directly in the URL itself, without any backing server.

+

They usually look like:

+ data:text/html;base64,... + data:image/png;base64,... +

and are often embedded within webpages, but can be used by themselves and can contain more-or-less any file format, including (quite handily) zip files.

+
+
+ + + + Page 6 + +
+ Putting It All Together +

By putting SVG source into zip files, placing zip files into data URIs, putting data URIs into QR codes, and referencing the QR codes in the SVG source, we can magically store the source code of our zine in the zine itself more-or-less losslessly.

+

Some caveats apply, like needing software to process SVGs, QR codes, and the automation scripts, but those are hopefully less fragile than a difficult-to-edit PDF with a broken link.

+
+
+
+
diff --git a/fc.svg b/fc.svg deleted file mode 100644 index 67ceec8..0000000 --- a/fc.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - -
-

QRnZine

-

A Toolkit for Creating Zines That Contain the Means of their Own Reproduction

- An "artistic" exercise in abusing QR codes as a method for memetic self-replication -
-
- - - https://github.com/mlaga97/QRnZine - Version 0.1 - -
diff --git a/front.svg b/front.svg deleted file mode 100644 index a3b33bb..0000000 --- a/front.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - p1.svg missing! - p2.svg missing! - p3.svg missing! - p4.svg missing! - - - - - - - - - - - p5.svg missing! - p6.svg missing! - bc.svg missing! - fc.svg missing! - - - - - - - - - - diff --git a/main.svg b/main.svg new file mode 100644 index 0000000..8f28eee --- /dev/null +++ b/main.svg @@ -0,0 +1,65 @@ + + + + + + c2.svg missing! + c3.svg missing! + + + + + + + + + c4.svg missing! + c1.svg missing! + + + + + + + + + + + + + +
+ Instructions
+ Scan the QR code above and paste the contents into the address bar of a web browser like Firefox, Chrome, or Edge to get started
+
+
+ + ./readme.html + ./build.sh + ./main.svg + ./clean.sh + ./c1.svg +
+ + + + + + + ./c2.svg + ./c3.svg + ./c4.svg + + + + Using QRnZine v0.2 For Self-replication + https://github.com/mlaga97/QRnZine + + + + +
diff --git a/output.pdf b/output.pdf new file mode 100644 index 0000000..38e32ed Binary files /dev/null and b/output.pdf differ diff --git a/p1.svg b/p1.svg deleted file mode 100644 index 1f0392b..0000000 --- a/p1.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - Page 1 - - -
- Preface/Disclaimer -

This zine and QRnZine itself are pretty technical in nature and assume that the user is fairly technically advanced going in, with at least basic familiarity with command-line tools and editing of programming, scripting, and markup languages.

-

The intent of this zine is mostly to explore how a few interesting tools work together to make this document possible, but skips over a lot in the process to fit the medium.

-
-
-
diff --git a/p2.svg b/p2.svg deleted file mode 100644 index dc91afc..0000000 --- a/p2.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - Page 2 - - -
- Introduction -

Link rot is very real and photocopiers don't come with an easy edit button.

-

That's basically the problem QRnZine is intended to fix.

-

If you could put the source code of a zine within the zine itself, other people could hopefully more easily replicate, modify, and create zines built using that one as a template.

-

But how do you fit the source code for a zine inside itself?

-
-
-
diff --git a/p3.svg b/p3.svg deleted file mode 100644 index e48d228..0000000 --- a/p3.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - Page 3 - - -
- SVGs -

First we'll need to have a template to start with...

-

SVG (Scalable Vector Graphics) is an XML-based vector image format.

-

If you already know HTML, SVG is super easy to wrap your head around and start modifying, but comes with some handy extra tools for making things like print documents like this one.

-

SVG seems like a good choice to use for building a document template.

-
-
-
diff --git a/p4.svg b/p4.svg deleted file mode 100644 index b0a49d3..0000000 --- a/p4.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - Page 4 - - -
- QR Codes -

Getting code onto and off of paper easily is a pain if you're relying on manually copying between the two.

-

Fortunately, this problem is largely avoided using barcodes and 2d barcodes like QR Codes, the ubiquitous 2d barcode solution that pretty much everyone has a scanner for in their pocket.

-

The biggest QR codes can store about 3kB of text, which is decent, but not quite enough for us.

-
-
-
diff --git a/p5.svg b/p5.svg deleted file mode 100644 index 8ace46b..0000000 --- a/p5.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - Page 5 - - -
- Data URIs -

Data URIs are a special URL format that allows for data to be stored directly in the URL itself, without any backing server.

-

They usually look like:

- data:text/html;base64,... - data:image/png;base64,... -

and are often embedded within webpages, but can be used by themselves and can contain more-or-less any file format, including (quite handily) zip files.

-
-
-
diff --git a/p6.svg b/p6.svg deleted file mode 100644 index a79b29b..0000000 --- a/p6.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - Page 6 - - -
- Putting It All Together -

By putting SVG source into zip files, placing zip files into data URIs, putting data URIs into QR codes, and referencing the QR codes in the SVG source, we can magically store the source code of our zine in the zine itself more-or-less losslessly.

-

Some caveats apply, like needing software to process SVGs, QR codes, and the automation scripts, but those are hopefully less fragile than a difficult-to-edit PDF with a broken link.

-
-
-
diff --git a/readme.html b/readme.html index 5d03c29..55391cd 100644 --- a/readme.html +++ b/readme.html @@ -1,15 +1,14 @@ -

Nice to see you!

+

It worked!

The weird looking URL you just used is a "Data URI" and it allows you to put data right into the URL with no server.

-

There are more QR codes in the zine that have more data URIs, with zip files instead of web pages. When the stuff inside all of the zip files is combined, there should be enough there to build and modify the original zine on most linux systems, or to use as a template for creating a totally new self-replicating zine.

+

There are more QR codes in the zine that have more data URIs, with zip files instead of web pages. When the content of all of the zip files is combined, there should be enough there to build and modify the original zine using a linux computer, or to use as a template for creating a totally new self-replicating zine.

Replication/Modification Instructions
-- Get all of the zip files from the other QR codes in the zine onto a Linux PC or similar and extract all of them into one directory
+- Get the other zip files from the other QR codes in the zine onto a Linux PC and extract all of them into one directory
- Run ./build.sh in that directory (you may need some extra packages)
-- Open front.svg and back.svg in a web browser and it should render a print-ready version of the original zine
-- Use a text editor to edit p1-p6.svg, fc.svg, and bc.svg -- Use build.sh again to update front.svg and back.svg
-- Remember to refresh your browser!
+- Open output.pdf to view a print-ready version of the original zine
+- Use a text editor to edit c[1-4].svg to modify the zine content +- Use build.sh again to update output.pdf

Updates/Help
-https://github.com/mlaga97/qrnzine +https://github.com/mlaga97/QRnZine