One month I was a web designer, the next I co-owned an existing tech media company. php[architect] is a boutique publishing brand that is well known in the PHP developer world. When our newly-minted four person company was asked to take over the brand (because the founder wanted to move on), we jumped at the opportunity. We took over a monthly magazine, tech books, training and two national conferences. As the sole designer in a band of developers, I was the most concerned. After several months, we worked out a content workflow (that ended in both digital and print) that made it possible for just four people to run a thriving boutique media company. This is how we did it.
I Can Magazine- and YOU CAN, TOO! (A Case Study of a Boutique Designer)
1. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-191
I Can Magazine—
And YOU CAN,
TOO!
(a Case Study of
a Boutique Publisher)
Kevin Bruce
musketeers.me,LLC
2. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-192
Who am I?
Kevin Bruce
• Designer (Print & Web)
• PHP Developer
• Community Advocate
• Business Cofounder
4. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-194
“PSST!
Hey, buddy!
Want a media company?”
5. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-195
php|architect
• Geared towards PHP
developers
• monthly magazine
• online and onsite training
• online summits
• 2 national conferences
• a library of over 20 tech
books
6. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-196
The Magazine
• Started in December 2001
• In print until 2009, where it
went to digital-only
• Up to 2500 subscribers
PHPA AUG 09.indd 1
8/22/09 3:22:06 PM
7. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-197
a Helpful Editor
Beth Tucker Long
• Developer
• Community Leader
• Editor
• Writer
8. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-198
Processes
SVN
Article in
Ceres
Article in
Ceres
command-line
tool binds issues
to subscribers
accounts on
phparch.com |
Author
(various)
Editing
(Beth)
Layout
(Kevin)
PDF, ePub and
mobi files pushed
to site from SVN
Proofing
Rounds
Proofing
Rounds
All proofing and file
exchange are managed
with the help of Subversion
Imported
into
InDesign
command-line
tool used to
export epub &
mobi |
9. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-199
• A special inhouse markup.
• Authors wrotebooks and
articles in it.
• A commandline program
exported it into epub and
mobi ebook formats.
• Imported into inDesign
with a custom plugin.
Ceres
=t=Chapter Title=t=
Some Text Here, in **bold**, //italics//, //**italic bold**//, **//bold italic//**,
//’’monospaceCode()’’//. ‘’monospaceCode()’’.
=1=A sub-header=1=
- A list
- list item 2
{{figure figure1.jpg}}
{{sidebar something
More stuff here
}}
<code php>
<?php echo “Hello World”; ?>
</code>
<code sql>
SELECT “Hello World” as greeting;
</code>
<code xml>
<?xml version=”1.0” encoding=”UTF-8” ?>
<hello><world /></hello>
</code>
<code html>
<!DOCTYPE html>
<html>
<head><title>Hello World</title></head>
<body><p>Hello World</p></body>
</html>
</code>
<code javascript>
alert(new String(“Hello World”));
</code>
10. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1910
• http://wikipedia.org/
wiki/Markdown
• An open standard simple
format that is slowly
getting embraced by
the digital publishing
community.
Markdown
Markdown Syntax - Headings
• One or more #
• Provide document structure
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
Markdown Syntax - Text Blocks
• Paragraphs are separated by a new line.
• Block Quotes begin with a >.
I should have used lorem ipsum here as an example of text
> And here is another paragraph
I should have used lorem ipsum here as an example of text
And here is another paragraph
Markdown Syntax - Formatting
*italic* _italic_
**bold**__bold__
‘monospace‘
italic italic
bold bold
monospace
Markdown Syntax - Unordered Lists
• Bullets can be +, -, *
• Nested lists are indented by 4 spaces.
- One
* Sub One
- Two
- Three
11. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1911
Converts markup in
one format to another
From
• Markdown
• HTML
• LaText, and more
To
• PDF
• Latex,
• ePub and more...
PanDoc
Pandoc
Read the Instructions for
Installing Pandoc on Windows,
Mac OS X, Linux, BSD
http://pandoc.org/
12. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1912
command-line
tool binds issues
to subscribers
accounts on
phparch.com |
PDF, ePub and
mobi files pushed
to site from SVN
Updated Process
SVN
12 | March 2015 www.phparch.com
12 | March 2015 www.phparch.com
Today, many programmers focus on
their application, not their database.
They think about code—after all, most
of what they do is solving programming
problems, not database problems.
Dry! Theoretical lectures on relational
database theory have little bearing on
modern-day web applications—or so
many seem to think!
FEATURE
Practical Database Design
David Berube
DisplayInfo()
Related URLs:
• Boyce–Codd normal form -
http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form
20 | March 2015 www.phparch.com
Consolidating Doctrine
Migrations
Patrick Schwisow
Doctrine Migrations are a great way to manage changes in your
database structure, but over time migration files can pile up and turn
into an unmaintainable mess. Migration usage is well-documented, but
developers are left to their own devices when it comes to long-term
maintenance. This article outlines a process for cleaning up the mess
and starting fresh with a new base migration with minimal impact on
existing database instances.
FEATURE
DisplayInfo()
Requirements:
• PHP: 5.3.3+
• Doctrine ORM: 2.0+ -
http://www.doctrine-project.org/projects/orm.html
• Doctrine Migrations -
http://www.doctrine-project.org/projects/migrations.html
Other Software:
• MySQL / PgSQL / Oracle / Sqlite
• DoctrineMigrationsBundle -
https://github.com/doctrine/DoctrineMigrationsBundle
Related URLs:
• The Art of Doctrine Migrations (presentation by Ryan Weaver) -
http://www.slideshare.net/weaverryan/the-art-of-doctrine-migrations
4 | March 2015 www.phparch.com
Database Versioning with Liquibase
I think it’s safe to say that database versioning is a subject that
every software developer in the industry will have to deal with
sooner or later. Most development teams have found a way to
deal with schema changes using a tool they either found or built
themselves, which most of the time simply executes all patch files
(or ‘deltas’) that were added since the last time they ran the tool.
This works, and some tools even have some extra-fancy features
like rolling back revisions or tagging certain versions.
Database Versioning
with Liquibase
Harrie Verveer
FEATURE
So people kind of know how to deal with it, but when version numbers collide or conflicts on a
database schema level need to be resolved (especially when merging branches), things get nasty.
We now suddenly have to manually fix our own broken database to a state where it makes sense
again, and we have to open the patch files ourselves and see how we can combine them into
something that works for everybody else, taking into account that some of our users, colleagues,
or environments might already be on a different version number. We have to manually fix it, and it
feels dirty for some reason.
So a while ago, I decided I was going to solve this problem. We did database versioning for our
projects. It kind of worked most of the time, but the manual intervention that was required every
once in a while made it feel like a hack. I decided to go and investigate what solutions were out
there because surely, there must be some sort of magical tool that solves all of our problems once
and for all, right? And if not, I was sure we could look into the problem and build this magical tool
ourselves!
So I took my knapsack and my battle axe +8STR +4DEX, and I went on a quest—the quest to find
the silver bullet solution for database versioning.
Article in
Markdown
Article in
Markdown
PANDOC used to export edited articles to
epub and mobi formats
Author
(various)
Editing
(Oscar)
Layout
(Kevin)
Pandoc
Proofing
Rounds
Proofing
Rounds
All proofing and file
exchange are managed
with the help of Subversion
Imported
into
InDesign
13. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1913
• August 2013, LSI approached us with a
pilot journal program.
• They use their existing book print system
for magazines and journals.
• Program is print on demand with direct
shipping.
Print is dead. Long live Print!
14. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1914
• LSI printed php|architect’s old books. We
had changed to CreateSpace for printing
any new books under musketeers.
• After much research, we had come to the
conclusion that print was just too risky
to try to bring back because no one was
doing POD for journals..
Back Up
(a brief history)
15. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1915
Some adjustments needed to be made for
going to print.
1. Styles (colors) updated for CMYK
2. Font license checks (meaning I finally get
to clean out any old fonts still hanging
around).
3. Considerations for bleeds
4. Facing pages and spreads.
Rerigging
16. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1916
• Gloss vs Matte Cover
• Interior Pages were thin
• A difference with
standard magazines
was the interior was
matte and a bit faded.
The First Test
17. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1917
• Well received
• Many old subscribers
that remembered print
immediately signed up.
• A few “old guard” balked
at the $149/year rate but
most changed their minds
as soon as they had it in
their hands.
Rollout
18. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1918
Revised Process Flow
SVN
12 | March 2015 www.phparch.com
12 | March 2015 www.phparch.com
Today, many programmers focus on
their application, not their database.
They think about code—after all, most
of what they do is solving programming
problems, not database problems.
Dry! Theoretical lectures on relational
database theory have little bearing on
modern-day web applications—or so
many seem to think!
FEATURE
Practical Database Design
David Berube
DisplayInfo()
Related URLs:
• Boyce–Codd normal form -
http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form
20 | March 2015 www.phparch.com
Consolidating Doctrine
Migrations
Patrick Schwisow
Doctrine Migrations are a great way to manage changes in your
database structure, but over time migration files can pile up and turn
into an unmaintainable mess. Migration usage is well-documented, but
developers are left to their own devices when it comes to long-term
maintenance. This article outlines a process for cleaning up the mess
and starting fresh with a new base migration with minimal impact on
existing database instances.
FEATURE
DisplayInfo()
Requirements:
• PHP: 5.3.3+
• Doctrine ORM: 2.0+ -
http://www.doctrine-project.org/projects/orm.html
• Doctrine Migrations -
http://www.doctrine-project.org/projects/migrations.html
Other Software:
• MySQL / PgSQL / Oracle / Sqlite
• DoctrineMigrationsBundle -
https://github.com/doctrine/DoctrineMigrationsBundle
Related URLs:
• The Art of Doctrine Migrations (presentation by Ryan Weaver) -
http://www.slideshare.net/weaverryan/the-art-of-doctrine-migrations
4 | March 2015 www.phparch.com
Database Versioning with Liquibase
I think it’s safe to say that database versioning is a subject that
every software developer in the industry will have to deal with
sooner or later. Most development teams have found a way to
deal with schema changes using a tool they either found or built
themselves, which most of the time simply executes all patch files
(or ‘deltas’) that were added since the last time they ran the tool.
This works, and some tools even have some extra-fancy features
like rolling back revisions or tagging certain versions.
Database Versioning
with Liquibase
Harrie Verveer
FEATURE
So people kind of know how to deal with it, but when version numbers collide or conflicts on a
database schema level need to be resolved (especially when merging branches), things get nasty.
We now suddenly have to manually fix our own broken database to a state where it makes sense
again, and we have to open the patch files ourselves and see how we can combine them into
something that works for everybody else, taking into account that some of our users, colleagues,
or environments might already be on a different version number. We have to manually fix it, and it
feels dirty for some reason.
So a while ago, I decided I was going to solve this problem. We did database versioning for our
projects. It kind of worked most of the time, but the manual intervention that was required every
once in a while made it feel like a hack. I decided to go and investigate what solutions were out
there because surely, there must be some sort of magical tool that solves all of our problems once
and for all, right? And if not, I was sure we could look into the problem and build this magical tool
ourselves!
So I took my knapsack and my battle axe +8STR +4DEX, and I went on a quest—the quest to find
the silver bullet solution for database versioning.
Article in
Markdown
Article in
Markdown
lightningsource.com Issue prints and ships
to individual addresses
uploaded to LSI
PANDOC used to export edited articles to
epub and mobi formats
command-line
tool binds issues
to subscribers
accounts on
phparch.com |
Author
(various)
Editing
(Oscar)
Layout
(Kevin)
Pandoc
Designer loads print
files on LSI’s site
PDF, ePub and
mobi files pushed
to site from SVNProofing
Rounds
Proofing
Rounds
All proofing and file
exchange are managed
with the help of Subversion
Imported
into
InDesign
19. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1919
• LSI now has a UK print facility to enable
faster and cheaper shipping to europe.
We have a seperate upload account at
LSI’s site for uploading files to print at
that facility. This also allowed us to lower
international subscription price!
• We have decided on giving a year’s
subcription to attendees of php[tek] and
php[world]..
Updates
20. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1920
1. Demand stays flat
• Cultivate advertisers where we can to
suppliment low subscription numbers
• Stay with POD
2. Demand increases
• Use a higher end printer that requires
minimums
• Go to a model where we use more
advertisers, cheaper subscription
3. Demand Dwindles...
Future of Print
21. Musketeers.me AIGA Blue Ridge Essentials • 2015-03-1921
Thank You
Kevin Bruce
• kevin@musketeers.me
• kevinbruce.com
• @kevinbruce
• www.phparch.com