Ideas for side projects
Here's a list of ideas, tagged up with the relevant experience level, learning style and motivation, and suggestions for ideas that fit with your current role in publishing. If any of these ideas sound interesting but you need more guidance and input, don't hesitate to reach out on the #SideProjectSummer hashtag on Twitter! Here's the key:
- BeginnerIf this is your first time coding, start here.
- IntermediateTry these if you are familiar with HTML and have read some tutorials.
- AdvancedSuitable if you have contributed to one or more technical projects already, such as a website, some XML scripting, an automation project or a web app.
- Prefer learning by doing If you like learning by doing, these ideas are for you.
- Prefer tutorials If you prefer step-by-step guidance, try these.
- Prefer learning with others Suitable if you prefer learning in a group setting.
- Motivated by visuals If creating something visual pleases you, try these.
- Motivated by data If creating structured data pleases you, try these.
- Motivated by knowledge If the thrill of knowing new things is enough to spur you on, try these.
- Editorial Your editorial skills will stand you in good stead for tackling these ideas.
- MarketingParticularly relevant if you're working in marketing or sales.
- Rights Helpful if you're working in contracts, rights and royalties.
- Design Great if you're a designer wanting to develop tech skills.
Learn Enough To Be Dangerous Motivated by knowledge Beginner Editorial Prefer tutorials Follow this incredible set of short courses. Because tech is the new literacy.
The Rails Tutorial Intermediate Prefer tutorials Marketing Build Twitter with your own human hands. (The course is how @has_many_books got started in programming.)
Develop your knowledge of tools Motivated by knowledge Prefer learning by doing Beginner Discover the tools that already exist, and become that invaluable member of the team who knows about tech! Try out HexFiend to manipulate large data sets without your machine freezing. Try this deep learning colourizer. Use Open Refine to disambiguate data sets. Use XSLT to manipulate ONIX. Or install Chrome DevTools to take a deep-dive into the code behind websites.
Codebar Beginner Prefer tutorials Prefer learning with others This can't be done on Friday afternoons, but if you prefer learning in a group, go along to a Codebar event. There are events planned for Summer 2020 in Glasgow, Norwich, Kent, London, Oxford, Bristol, Birmingham, and Brighton with more to be announced.
Write your own static website Intermediate Prefer learning by doing Marketing Use a static site generator such as Middleman, Gatsby or Hugo. Or if you prefer to avoid using a framework, you could copy the code of this Side Project Summer website, or the code of our one-page website called JustSimply.dev about technical writing, which are pure HTML and CSS, and use it as the basis for your own. Try hosting your website on Netlify for free.
Set up your own custom domain Beginner Prefer tutorials Marketing Learn Enough Custom Domains to Be Dangerous is a free tutorial that shows you how to host your website at www.example.com instead of at example.someonesdomain.com — in other words, at a domain you control and that no one can ever take away. Bonus subjects include custom email addresses and website analytics.
Write your own book website using ONIX data Beginner Prefer tutorials Marketing Design Editorial The General Products team ran a Day of Code at the last FutureBook conference, which saw 40 publishers create their own book marketing website from raw ONIX metadata. All the materials are available online for you to follow at your own pace, which are in-depth and step-by-step. The website is worth a look for inspiration, anyway, as there is a great showcase of the delegates' creations.
Make your own marketing information sheet generator from the Google Books API Intermediate Prefer learning by doing Marketing Design The General Products team wrote this code to generate marketing information sheets for a seminar. You could take a copy and edit it to make it your own. Here is the code.
Learn about variable fonts Motivated by knowledge Prefer learning by doing Motivated by visuals Design Beginner Learn about variable fonts and be the font of all knowledge (sorry) about this emerging new area at work.
Make an InDesign catalogue using ONIX Intermediate Prefer learning by doing Marketing Design Follow these instructions to use ONIX metadata as the basis for a professional-grade catalogue.
Scrape Amazon for data Advanced Prefer learning by doing Motivated by data You can write code that visits an Amazon web page, finds the tags you want, and saves the data. Google for "ruby web scraper".
Level up with macros Beginner Prefer learning by doing Motivated by knowledge Prefer tutorials Everyone has things they have to do in familiar programs that are repetitious. Ditch the drudge by writing macros – programs that automate some of those actions. Google "Excel macros", "Photoshop droplets", and "Word macros" for inspiration and tutorials.
Edit ePub files Intermediate Prefer learning by doing Editorial Motivated by visuals An ePub is a zipped-up website. Open it with a ZIP file decompressor (e.g. Springy on the Mac) and change its colours, font and layout.
Write interactive fiction Intermediate Prefer learning by doing Motivated by data Editorial A website is a collection of web pages linked by hyperlinks: ideal for a choose your own path book!
Use Filemaker or Access Beginner Prefer learning by doing Motivated by data Editorial Rights Learn how databases work and build something useful: maybe a database of your authors related to the books they've written? Or a table of your media contacts tagged with their areas of interest, so you can search for suitable reviewers by area of interest? Or a list of rights by territory so you can query where you have still got rights to sell.
Write software Advanced Prefer learning by doing Motivated by data Ruby is often used as part of Ruby on Rails to make websites, but you can write pure Ruby programs, too. Ruby 2D is a good place to start.
Learn the basics of web layout design with CSS
Prefer learning by doing
Motivated by visuals
Fancy a break from using InDesign and want to dive into code? Then CSS is here to help! In website design, there are two approaches to organising your content: through Flexbox or Grid. These two games will help you understand the basics of how they work, so you can apply them to your own website. For Flexbox, check out Flexbox Froggy. For Grid (advanced but powerful), have a look at Grid Garden (registration required).
Do a pull request to add your idea here!
Prefer learning by doing
Pull requests are how you contribute to open source software, so use SideProjectSummer to practice how they work. Follow the instructions on cloning a website on GitHub to take a local copy of this website. Copy and paste this
<p></p> block. Edit it to add your own idea, and copy code from elsewhere in this file to add the relevant colourful badges.
Then open a
pull request on GitHub, and the General Products maintainers will review it, suggest any changes, and ultimately
merge it in.
Add your project to this website Intermediate Prefer learning by doing Marketing Design Follow the instructions on cloning a website on GitHub to take a local copy of this website. Edit the showcase.html file, copying and pasting the example already there to add your own project. Then open a pull request on GitHub, and the General Products maintainers will review it, suggest any changes, and ultimately merge it in.
Be inspired by other publishers turned coders Beginner Motivated by knowledge Prefer learning with others Editorial The Bookmachine Talking Tech event in May 2020 featured me (Emma Barnes, @has_many_books) as host and Jamie Bowman (@jreecebowman), John Pettigrew (@John_Pettigrew), Tanu Shelar (@tanuandbooks) and Lucy Monie Hall (@LucyMonie): all publishers-turned-coders, who shared their stories of how and why they learned to code. Members can watch the video of the event on the Bookmachine website. Here are the resources shared by Lucy Monie Hall at the event: