Wishing everyone a Merry Christmas and a wonderful New Year. Hopefully you are enjoying today with those who are special to you. Stay tuned in the coming year for more posts from me, but for now I’m just enjoying the holidays with my family.
Though distractions were prevalent these past several weeks, I still have managed to make progress on my book, and am proud to present the next chapter of Data Synchronization: Patterns, Tools, & Techniques. Titled Chapter 4: Access Rights this chapter represents the conclusion of part one of my four-part book on data synchronization algorithms.
Converting a single HTML file to an ePub is straightforward, with many free tools available for this purpose. But, if your goal is to convert multiple HTML files, and only a portion of each file, into an eBook with a proper table of contents, cover image, etc., what do you do?
All of these requirements are necessary for creating a professional ePub, but yet surprisingly no tool existed which could do all of these things without considerable manual effort. Like any good software developer, if no tool exists for a job, and the only other option is manual work, I took the laziest path and created a new tool to get the job done.
That new tool is called html2epub and is a command line app which can:
- Generate a professional looking ePub from a series of web pages
- Strip out unnecessary HTML
- Convert HTML into XHTML as to be compliant with the ePub spec
- Embed images
- Embed Gist code snippets
- Rewrite chapter to chapter links for proper ePub navigation
- Support for Table of Contents navigation
- Support forms-based authentication
I have tried to keep this utility as simple to use as possible, despite its many features. Let’s look at how to get started.
On macOS installing html2epub is greatly simplified by brew. Simply run:
brew install jwhitehorn/brew/html2epub
This will download and install htmlepub, and its dependencies, and register the command in your PATH. With that completed, you can generate an ePub as easily as:
html2epub --url https://www.datasyncbook.com \ --toc ./example/toc.xhtml \ --cover ./example/cover.png \ --contents ./example/contents.json \ --title "Data Synchronization" \ --subtitle "Patterns, Tools, & Techniques" \ --author "Jason Whitehorn"
Deletions and data synchronization is a tough problem, but it doesn’t have to be – especially not with the patterns, tools, and techniques I outline in the latest chapter of my book Data Synchronization: Patterns, Tools, & Techniques. My latest chapter, titled Handling Deletions, covers multiple ways of navigating this problem space and is available for free as a first draft.
The next chapter of my book, Data Synchronization: Patterns, Tools, & Techniques, is available as a rough draft. This latest chapter is titled Delta-based Synchronization and in it, I discuss the various nuances of building differential based synchronization.
The scenario might sound specific, but I am confident you’ve encountered something similar before. You need to construct an array, with a known number of duplicates of a string. Perhaps you’re constructing a template, and need a fixed number of placeholder elements, or you’re parameterizing a query and need a dynamic number of placeholders. In either case, you were probably left writing a rather ugly bit of logic in the middle of a routine that was otherwise focused on the task at hand.
Today is the last day of February – mostly. A day that is overshadowed by the far more popular, but less frequently occurring Leap Day. Why is February 29th called “Leap Day”, it’s not the one being leaped over, that’s poor February 28th – what did it ever do?
Google made big news last week when they announced that Chrome 68 would mark all websites without SSL certificates as “Not Secure”. While the move was highly anticipated by many it will still be a disrupting process for many website operators who have yet to embrace the non-tangible benefits of HTTPS.
Writing a book is a lot of work, but has also been rewarding. For the past month, I have been writing, bit-by-bit, line-by-line, and have progressed to the point where I feel like the first chapter of my book, Data Synchronization: Patterns, Tools, & Techniques, is to a state where I’d feel comfortable calling it a first draft.