News

You can receive a newsletter at the start of each season summarizing what we are working on and what we have planned. Please contact support if you have any suggestions.


To do

Improvements for customers
  • Faster server, with SSL termination across CDN
  • Better templates
    • Better customization options
  • Easier import and export
Improvements for template developers
  • Better more consistent documentation
  • Improve template engine itself
  • Improve source code for templates

Work on Lisa's template wireframe

Finish YAML support
  • select 1000 random files from blot
  • check parsed metadata remains the same
Add action to lint code with jshint and eslint
  • any other static code analysis tools?
  • separate code to check for broken links, run in parallel

Simplify local dev setup for David and write guide

Server changes
  • Write useful benchmark tool for Blot
  • Add memory monitor
  • Migrate to lower-cost r6gd.xlarge instance, which is not possible using the AWS console due to some difference in architecture (intel vs. amazon chip?).
  • Work out how to detect stray build processes. There were a bunch of zombies consuming memory on Blot's server. Work out how to kill them safely
  • Experiment with different EBS types, perhaps try to use ephemeral disk more since lower latency?
  • Take full advantage of attached SSD
    • use rsync/inotify to synchronize 'source of truth' EBS disk with the local SSD cache then modify NGINX to check the synced folder on the /cache disk
    • on boot we would gently copy across all /blogs folders and the /static directory in background task

Migrate from mailgun to SES, mailgun's javascript sdk seems like a mess.

Improvements to Wikilinks feature:
  • Write documentation and tell Roberto
  • test with non-[[Wikilinks]] options in Obsidian
  • add support for other (non-Obsidian) wikilink styles (i.e. title-based?)
  • use the location of the nearest .obsidian directory to determine the 'root' against which to resolve styles?
  • look up the config in the the nearest .obsidian directory to determine whether shortest, relative or absolute wikilinks are in use?
  • test with all Obsidian new link settings (shortest, relative and absolute)
Improvements to Dropbox client
Use postcss to compile template CSS
Template engine plan
  • create data/blogs/blogID/templates directory
  • show error message on preview-of subdomain
  • only allow valid templates to get stored in data/blogs/blogID/templates, used for live site?
    • maybe we only store in redis valid templates, live site pulls

Fix bug with a once-scheduled post, based on the file's path or previous date metadata. The post remains scheduled even if the date is removed, and even if it is then rebuilt.

Add support for .tiff images

Improve templates
  • Run sites and templates through lighthouse and observatory
  • Fix bug setting font-size on magazine template and tell David
  • Fix bug in image zoom and tell Cameron
  • Fix bug with close button in magazine template and tell Samuel
  • Respond to Michael's thoughtful emails about the template system
  • Tell these people about new templates, and to subscribe to newsletter:
  • Fix bug with 'Previous' page link in Magazine theme and tell Alex
  • Fix column formatting for layout.css on default template and tell Ryan
  • Fix Diary template mobile issues and contact Jonas and Brandon
Improve dashboard
  • Align styles with brochure (merge view directories?)
Record new demo video
Improve brochure
  • Finish mobile design

Fix bug with tokens inside blog posts and follow up with Karoly

Resolve issue with Pandoc and footnotes and aria and role attributes. Can this be fixed simply by updating pandoc or do we need to prune these attributes ourselves?

Improve server-side scheduled tasks:
  • Write task to identify and delete long overdue users
  • Back up postgres database

Fetch dimensions of images even if optimize and cache is disable, so that image zoom can work. Tell Joshua

Improvements to metadata extractor:
  • Make it possible to set the slug-part of a URL for a post and tell George and follow up for post in Questions
  • Improve date parser to use time from file creation date if it's within the same day as the date specified in metadata and follow up with Nicolas
  • Fix bug with Menu: metadata – that empty value example will cause a post to become a page.
  • Fix summary generator such that a subtitle is used for summary text (i.e. an h2 directly following an h1) We still want to prevent the scenario in which a later h2 becomes the summary, though. Notify Jessica and rebuild Jessica's site

Reduce image compression settings and tell Joshua

Improve questions section of site, in approximate order of importance:
  • store version history of the question and answer edits
  • question tagging, including a list of all tags, and popular tags
  • give the 'ask' and 'answer' textarea inputs the full functionality of the GitHub issue/PR comment inputs (i.e. code snippets / preview / copy/paste screenshots from clipboard)
  • email notifications (There's an existing system in place for sending emails in app/helper/email)
  • upvoting for topics and upvote-based ranking on the topic index
  • show vote count and answer count next to each question on index
  • add a filter for topic index to show questions by: 'Newest', 'Active', 'Unanswered', 'Votes'
  • 'run code snippet' feature / similar to trinkets.io

Consider adding support for nested page structure
  • generate nested menu items from nested folders in /pages

Add support for .doc using libreoffice and tell Kyle

Consider adding a global 'ignore' setting on services page of dashboard?
  • could ignore all '.jpg' say, or all 'index.html' files, etc.
Consider adding 'default metadata' option to dashboard
Redirect URLs with trailing slash when possible (i.e. not directory browsing) to fix possible duplicate content penalties and tell Marius
  • Add rel=canonical to all the default templates, or fix the issue that Blot serves the same thing to URLs with a trailing slash, and without.
  • If we do add rel=canonical, make sure to consider the situation where someone mounts a page to the index of their site, e.g. /page/1 and / will now be different.

Add way to nest tags / hierarchy for tags and tell Uzoamaka

Investigate potentially TeX-related escaping issues and tell Anthony and Roy

Adjust the chargeForRemaining function in create-blog such that the balance is added or deducted from the proration charge.

Fix duplicated entry in tag page for Marco the example is here

Rewrite transformer
  • Speak HTTP properly, respect backoffs, use/send eTags
  • Share information across blogs?
  • Improve transformer so it checks a file's MTIME against a stored value before rehashing the file?
  • Adjust interface to accept a number of directories. Make it 'unaware' of blog IDs?
  • Add method which accepts a path or URL and flushes what is stored for it, update the rebuild entry script
  • Cache errors. When a post contains multiple identical links to images that timeout/404, the thumbnail generator should only make 1 attempt to fetch them. Right now we have a post that is filled with identical broken image links (in this case to a spacer.gif) can suck up the build process for hours.
Improve brochure
  • Finish breadcrumbs scroll on mobile (make sure scrollbars are invisible) on Firefox Windows and tell Paul and Rakhim
  • Generate high quality optimized favicons from new logo
  • Extract SVG of logo which can be used to produce hover effects, and on black
  • Loading state for submit button on sign up page
  • Unify dashboard header style post-payment
  • Write build scripts which can be run to produce results checked into git
    • inline css in blot.css
    • inline css in katex.css?
    • base 64 encode and inline small images on homepage
    • Optimize all images in image directory
    • compute content hashes then Use blotcdn for video and other large static files
  • Add integration tests for brochure site to test sign up flow
  • Add guide to useful text editors like this one recommended by Andrew
  • Personalize the documentation for logged in users
  • Tooltips for lock and CVC on sign up page
  • Prune unused font-face declarations from CSS passed to dashboard

Add a timeout of 15 seconds for building posts.

Add a 'page link format' option to the dashboard – the link format now only applies to entries. Tell Mike

Tweak {{slug-without-diacritics}} in permalink format such that ö” becomes oe” instead of o” and tell Domink

Fix bug with date metadata on Vincent's blog and follow up. I suspect it's to do with the ordering of date tokens.

Add queues and progress bars to entry building, client-switching and follow up with Jacopo

Expose issue with invalid JSON in package.json for locally-edited template on dashboard and tell Jason

Fix bug with particular emoji and tell John

Fix case-sensitivity issue for relative (and absolute?) paths to files in folder in production and tell Marco

Add custom metadata to turn off/on search indexing on specific post or page and tell Hani

Test cloudflare analytics integration from scratch and resolve issue with diklein.com

Prevent long-overdue users from accessing the service, then tell Matvey

Add support for arbritary template folder location – any subfolder could be a template folder if it contains a valid template.json file. Tell Bernardo

Generate proper favicons from uploaded avatars (to prevent streched favicons when non-square avatars are uploaded)

Experiment with GitHub actions setup
  • Look into potentially useful actions for code quality / linting / automtatic dependency updates
Improvements to server infrastructure
  • Work out way to recover from expired cert in the cache. To reproduce, consider a member who signed up, connected example.com, then moved the domain to another service. The attempt to renew the cert for example.com will fail. When the user re-registers with Blot, for some reason open-resty-auto-ssl will serve an old certificate. I followed these steps to reset but we should automate this
  • Create DMARC record for Blot https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail https://docs.aws.amazon.com/ses/latest/DeveloperGuide/dmarc.html
  • NGINX doesn't appear to be following the symlinks created by node.js to serve the contents of each blog's folder and the contents of each blog's static directory. Is this a permissions issue? Is now finally the time to set up users with appropriate permissions for blot, nginx, build etc…

Improve the automatic title generated for screenshots with default MacOs filename from 'at 14:40pm'

Add support for posts generated from Excel files, would generate a table. Use this library?

Improvements to backup system
  • Add hourly local redis rdb dumps to /cache
  • Test maintenance mode
  • Add script to roll back into hourly local db dumps and remote backups

Use blurhash to generate placeholders when lazy loading images and tell David and Marius

Add status page information to news page:
  • customize the design of this page a little (could we self-host on a different service, e.g. linode, a page which makes an API call to updown?)
  • embed a brief status history in the brochure site somewhere
  • link to this status page in the 502 bad gateway error page
Improvements to template editor
  • Add layout options to template editor for native templates
  • Work out how to make live but saveable modifications for preview purposes on the template editor
  • Add background patterns to template editor tools, tell Ish
Work out how to cache 404s at the NGINX level
  • I tried extending express-disk-cache to store images inside /https/blot.im/missing/foo-bar.html but I can't set a 404 status code for the specific tryfiles directive which could match that file.
  • The application server ends up spending a lot of time serving 404s
Improvements to template engine
  • Make date-format settings template specific and tell Mike I forked the Archive template but did not install it. And yet, changing settings like Hide the publish date for your posts” affected the currently installed template.“”
  • Add 'group by' function which would allow you to group posts by month/ year in the same way that {{#archives}} lets you and tell Jay
  • Local editing
    • Fix bug with title and partials in local editing then tell Luke and Frank
  • Add way to iterate over public and private pages to allow sitemap to work properly and tell Rodrigo
  • Fix bug with template editor which resets content of a view. Follow up with Nathan who has extensive steps to reproduce, and John
  • Allow the name/slug of a template to change and tell Marcus and Pratik and Brad when the name of a locally-edited template in your blog's folder updates
  • Allow ordering of posts by file name and tell Jacopo
  • Add way to query list of posts using SQL? Something like jsql com/mail/u/0/#inbox/1588e3df7489b554)
  • Add support for 'creating' a template inside '/Templates/'
    • Tell Myron and Ryan and Jussi on Twitter when it is possible to rename the folder created for a template in local editing.
  • Support template views inside a subfolder inside template folder, e.g. {{> partials/footer}} and then tell Nash
  • Add support for the setting of custom headers (e.g. to enable CORS) and tell Roy
  • Add support for listing files in arbritary folders (e.g. use a custom folder as a 'public' folder) and tell Nash
  • Move to uuid based template IDs instead of slug
  • Add way to list directory contents and tell Diego
  • Move to data directory for templates
    • Serve the template directory as a static folder, allowing things like favicon.png and humans.txt to not become blog posts. Follow up with Jamie
  • Re-do url redirector to use route-parser and properly support regular expressions
  • Add support for paginated list of entries on other pages and tell Kevin and Eli and Sven and Nikhil and Adam and Madino and Ryan
  • Add dynamic querying of entry list and tell Naoki
  • Fix bug with filtering paginated list of entries and tell Roy and Josh and Logan
  • Add a popular entry list
  • Add a related entry list and tell Thomas know
  • Add way to list files at a path and tell Matt
Re-send receipt when the customer changes their email after initial payment, pre-account creation.
  • Once stripe allows programmatic receipt delivery
Improvements to developer guide
  • Tell Pedro
  • Add a simple 'Beginners guide' to HTML and CSS, which would rely on Blot's functionality as a static file server.
Improvements to entry builder
  • Adjust title metadata extractor to fallback to file name rather than first sentence of file if the post does not contain a title tag. The current behaviour has suprised a number of people. If this breaks John's template create new first_sentence property of entry to use on the template.
  • Fix bug with slashes in tags and tell Dave
  • Generate a list of titles which you could use to generate a table of contents and tell Zach
  • Use time draft was moved into blog folder for entry created/publish date, rather than the time the draft file itself was created. Tell Kerim and Shibel
  • Parse Word Document subtitles as h2 and tell Matt
  • Add way to filter entries by post type (e.g. photo) and tell Justin.
  • If entries share publish date, sort them by blot creation date
  • Fix issue with teaser generator that locks up a build process, sometimes for 10+ seconds.
  • Fix bug with blockquotes and tell Kerim. Multiple >” symbols on the blank paragraphs between other quoted text are not formatting properly.
  • Fix bug with indented code in pre tags and tell Michael
Improvements to git client
  • Remove git folder when switching to Dropbox client and tell Jamie
Improvements to dashboard
  • Fix bug with file list on dashboard in Safari and tell Ryan
  • Fix missing error messages on overdue subscription payment form

Finish template translation offers

Think about appeninding file extension to make requests with query strings cacheable
  • think about emptying cache directory, LRU. But how do we handle .css?query=x?
  • nginx will have to look up a series of extensions -> $requestURI, $requestURI.html, $requestURI.xml, $requestURI.css, $requestURI.js

Fix bug with script to import wordpress posts and follow up with Simon

Improve the markdown converter:
  • Add plugin option to enable hard line breaks in Markdown parser? Tell Wil
  • Fix bug with nested Markdown and tell Martin:
    • This is a picture of me testing **Sonikebana**, a nine channel sound piece for mobile loudspeakers that respond when moved. Photo (and artwork) by [Anna Chapman Parker](http://www.annachapman.co.uk)
  • Extend the Markdown converted to add support for Ulysses highlighting and iAWriter highlighting syntax, using the example files provided by Marco. Tell Marco
  • Fix bug which injects

    tags into the following:

    and tell [Vanessa](https://mail.google.com/mail/u/0/#inbox/FMfcgxwLswJQjKhnLpNZzfPhJZpVtcph)

Finish script to identify long-expired users with blogs to safely delete and free up space.
  • Sort by date expired
  • Write script to safely delete blogs
    • wipe blog folder
    • wipe static directory
    • wipe all keys

Ignore files inside 'assets' inside .textbundle directories to improve support for textbundles and tell Thomas.

Rebuild all the thumbnails and cached images for every blog


Add more fonts to font picker:
  • Abel
  • Alegreya
  • Alte Haas Grotesk
  • Authentic Sans
  • Avara
  • Averia Serif Libre
  • Bagnard
  • ANRT Baskervville
  • Chivo
  • Cormorant
  • Computer Modern (entire family)
  • Crimson Text
  • Darker Grotesque
  • DINosaur
  • DM Sans
  • Eb Garamond
  • ET Book
  • Euler AMS
  • Faune
  • Fjalla One
  • Fondamento
  • Golos Text
  • Halibut Serif
  • Happy Times at the IKOB
  • Helmet Neue
  • iA Writer Quattro
  • Infini GF
  • Inter
  • Interstate
  • Inria fonts
  • JetBrains Mono
  • Junicode
  • Karla
  • Le Murmure
  • Lincoln Mitre
  • Libertinus
  • Literata
  • Lunchtype
  • Messapia
  • Michroma
  • Mister Pixel
  • Montserrat
  • Neuton
  • Nunito
  • Optician Sans
  • Ortica
  • Oswald
  • Pilowlava
  • Pinyon Script
  • Plex
  • Quicksand
  • Roboto
  • Rosario
  • Recursive
  • Routed Gothic
  • Rubik
  • Space Grotesk/Mono
  • Spectral
  • Syne
  • Terminal Grotesque
  • TeX Gyre
  • Typewriter Condensed
  • UnifrakturMaguntia
  • Violet Sans
  • VCR OSD Mono
  • Vollkorn
  • Work Sans
  • Wremena
  • Young Serif

Add support for YAML-style custom metadata. Consider using something like StrictYAML or Graymatter. Tell Shibel and Casey and Amit and Martin and Kyle and Brett and SKYue and Eric and questions

Add support for paying with Bitcoin and tell Chaz and Anita

Add support for paths to static files with a trailing slash then tell Sean

Add copy button to code snippets in <pre> tags and tell Atif

Add support for Ulysses .ulz file format and tell Nash

Add support for Ulysses image syntax and tell Konstantin

Consider adding a {{titleLink}} property to each entry, which extracts a link from the {{titleTag}} for use in RSS feeds, etc. and tell Guy

Add new template lambdas
  • Whitespace trimming and tell Chad
  • Number formatting (e.g. add commas to int.) and tell Chad

Add way to filter archives page by year or month and tell Chad

Add a cool bookmarklet which drafts a post a la this demo

Add broken link check for all email templates for logged in and logged out users

Fix bug with rename detector which caused old permalinks not to redirect to their latest version and tell Shibel
  • To reproduce, create file 'foo.txt' with title and permalink 'foo'
  • Then turn off server
  • Then rename file to 'bar.txt', and edit title to 'bar' at the same time
  • we expect /foo to redirect to /bar, but it doesn't

Tell Thiago once it's possible to create stand-alone HTML pages whcih don't become blog posts.

Make it possible to search entire page on web template editor and tell Precious. At the moment, only the text on the viewport is searchable.

Follow up with Shibel about how to ignore arbritrary paths and keep clean URLS (no underscores). Sitewide .blotignore file?

Fix bug with image zoomer on mobile devices and tell Alessandro

Adjust length of slug to use as few words as possible until collision and tell Chet

Fix bug with handling of queries and tell this person.

Fix post encoding bugs
  • Fix Kevin's URL encoding bug. Each entry's url property is not encoded as a URI component on the server but it needs to be.
  • Fix encoding bug with greek URLs then tell Rodericus know
  • Fix bug with template tags in blog post and tell Shibel

Fix bugs with RSS feeds validation. Perhaps extend absoluteURLs helper function? Tell John

Fix bug with Rodrigo's Word Document files

Fix bug with image minification which produces larger file than source file and tell Jan

Fix Git client bugs
  • Fix bug which occurs when you change your username while using the Git client (caused by the broken repo url) and tell Koen and Andre and Josh and Ryan
  • Work out how to pipe custom error messages down
  • Pipe custom message when you change a blog's handle (breaking repo url)
  • Tell Koen about the broken repo URL fix
Date parser bugs
  • Fix bug parsing ISO8601 date format and tell Thomas

Performance improvements
  • Streamline and cache loading of data on dashboard
  • Ensure node.js server has one process per CPU
  • Ensure nginx is handling all static file delivery
  • Detect CPU intensive functions in node.js process

Reply to Jamie about gitwatch and other newsletter suggestions

Improve scheduler
  • Adds a command to restore database from backup.
  • Rotates log files
Remove dependence on AWS
  • Adds offsite (i.e. non AWS backups) backups
  • Write out plan to move off AWS
    • DNS
    • EC2
    • S3 for backups
    • Cloudfront for CDN
    • backup blogs folder + db somewhere offsite at least once per week
Metadata parser

Implement hidden link section on Menu page under profile settings. Default links not on the menu would appear there, making it easy to restore them in future. Tell Josh

Think about adding way to add/edit files from the dashboard directly, bypassing need for a client. Tell Jamie about the decision. What about a web-based client for Blot with a basic text editor, posts listed on sidebar, conventional tag interface?

Disable redirect to HTTPS for blogs by default (to ensure old browsers without SNI work) but ensure all prominent links to the blog on dashboard use HTTPS

Finish public share url for templates and tell Marcus and Chad and Nash.
  • Create simple reference to original template that is uneditable by default (but forkable, like default Blot templates). This would mean the template would auto-update.

Move away from reds and investigate good full text search options

Improve Ghost importer and tell Vin

Add new variable for last-build-time for a blog, and use this forin the sites' RSS feeds. Tell Shawn

Redirect old draft URL to live published post and tell Shibel

Improve 404 log page on Dashboard
  • Add button to clear 404 log and tell Jamie
  • Add frequency indicator for each route 404 log and tell Jamie
  • Add filtering by date to 404 log and tell this person

Add hasBreakpoint property to entry to allow greater control over display of {{{teaser}}} and tell Pratik

Add way to auto-refresh page during template development on preview subdomains. Tell Ryan

Add support for nesting multiple layout tags e.g. {<>} {||} Y” and tell Marius

Add support for 2FA (Two factor authentication) then tell Luke, Max, Chaz and Tom.

Improvements to Git client
  • Add support for LFS and tell Jamie
  • Backdate existing commits (perhaps set file ctime using info from git log?) This would sidestep the frustration experienced by Gavin when he imported an existing repository.
  • Fix bugs with git removed / renamed file unit test on Travis
  • Extend sync lock during long syncs
  • Write test to simulate process dying and restarting mid-pull. Does the client recover? What happens if a pull fails midway? Does git recover?
  • Write tests for a series of random client operations (pull, add, push, move, reset, delete) that can be seeded and reliably re-run in the case of failure.
  • Move to neat promise chain api when 2.0 comes out
  • Test that client must keep sending new entries and deleted entries when it recieved an error from entry.build otherwise you get ghost posts…
  • send nice error message with instructions for 413 request too large: git reset HEAD^” etc…
  • Thoroughly document:
  • Tidy up tests and reduce size and runtime
  • This client should acquire a lock on the blog's folder before doing stuff to it more generally, especially during initialization etc…
  • what happens if user changes their handle? will pushing break?
    • I want them to be able to keep using their old one until someone else claims it, then I want 401 unauthorized, please reauthenticate with new username… but the remote path will be wrong?
  • Rate limit authentication route?
Dropbox client
  • Add integration test with a dropbox Webhook call. I want to not push some code which would prevent syncing user folders.
  • Does client.remove support the removal of folders? If not, make it so and add a test
  • Add a step to authentication flow which says: 'there is already a folder called 'Your blog title' in your Dropbox, would you like to use that?' then overwrite the files inside. This prevents the proliferation of confusing 'Your blog title (1)' when you re-authenticate.
  • Add a progress bar to the dashboard when writing existing files to Dropbox. It takes a while and confuses people.
  • Adding an additional blog to existing app folder under constant webhooks failed. New blog had correct folder but old blog still used root. I guess we need to acquire a lock on ALL blogs interacting with that dropbox account.
  • Extend sync lock during long syncs
  • Write test to simulate process dying and restarting mid-pull. Does the client recover?
  • Write tests for a series of random dropbox client operations (pull, add, push, move, reset, delete) that can be seeded and reliably re-run in the case of failure.
  • Look into getAccessTokenFromCode on DBSDK repo to avoid the mess in get_account.js https://github.com/dropbox/dropbox-sdk-js/issues/64
  • Gracefuly retry wrapper around Dropbox
  • Can we write to a folder_id instead of a path? It would be nice to be able to move the blog's folder even when writing the initial files to it, for example…
  • This should be simple once we copy the exisiting state of the blog folder across. But right now it doesn't really do much. It resets the local server folder. Then resyncs.
  • Update to latest version of Dropbox client.
  • Make the folder in Dropbox rename automatically when the user changes the username for one of their multiple blogs?

Add media-query to prevent typeset hanging punctuation on small screens (it looks weird) and tell Shibel

Make Redis performance improvements
Restructure application folder
  • make serving static files from NGINX easier?
    • ln /data/blogs/{blogID}/folder /data/cache/{hostname}/folder/…
    • ln /data/blogs/{blogID}/static /data/cache/{hostname}/static/…
  • consolidating the data stored about each blog
  • Specfic ideas:
    • Move cache directory from /cache to /data/cache
    • Move blog's folder contents from /blogs/{blogID} to data/blogs/{blogID}/folder
    • Move static files directory from /static/{blogID} to /data/blogs/{blogID}/static
    • Move db directory from /db to /data/db
    • Move logs directory from /logs to /data/logs
    • Remove /tmp directory and instead use os.tmpDir
Switch to streaming JSON parser. There are npm modules that offer asynchronous JSON APIs. See for example:
  • JSONStream, which has stream APIs.
  • Big-Friendly JSON, which has stream APIs as well as asynchronous versions of the standard JSON APIs using the partitioning-on-the-Event-Loop paradigm outlined below.
Add notification emails for monit events
  • Include secure one-time link to reboot the AWS instance?
Research state of static site generators

Investigate support for xattr to read image metadata on Blot? Or source for dragged images?

Set NODE_ENV environment variable to production

Add support for HTTP2 and tell Ryan

Fix bug with makeTeaser for ~/Dropbox/bug.html which locks main process painfully

Fix bug with rename catcher which allows two posts to share a guid. It caused a bug with Disqus comments. To reproduce this bug: Rename an entry. Create new entry with old name. Both entries have same GUID.

Fix bug with .emf files in Word Document and follow up with Todd. Can we convert EMFs? Can we pass a flag to pandoc to let them deal with it? Is this just caused by Tiff files? I need a Windows machine to test this.

Could we have multiple clients attached to one blog?

Use the –trace-sync-io command-line flag to determine if Blot is using any sync methods inappropriately

Replace some of the assert() tests which run every time the server starts with Jasmine tests that run via npm test.

Generate list of external API dependencies and follow changes for each

Add simple minimal version of Blot that could be npm installed, then tell Pedro who is frustrated editing templates locally with the git client

Make sure color schemes have enough contrast

Subscription refactor
  • Different payment methods per blog
  • Seperate blog subscriptions behind the scenes to avoid the crazy calculations. Think of them like domains, you wouldn't do what Blot is doing for those…
Add nice import step under 'Services' and as part of sign up
  • Create importer script for John's posts from flickr
  • Create importer script for tumblr text files and tell Sawyer
  • Create importer script for Weebly and tell David
  • Finish Ghost template import for Kingi
  • Map excerpt metadata to summary for Jekyll converter importer
  • Look into how Hexo has written imports for blogger, joomla, rss, wordpress.
  • Add importer for Twitter and sell Sawyer

Create script to export Blot sites to common formats like Wordpress and let Roberto know

Move to Linode?

Increase price to $5 per month for new customers. This will not affect existing customers in any way.


Create an API for Blot
Create a mock version of these websites and send an email showing the folder structure for them. Offer to convert entire site in return for a link on Blot's homepage:

Search HN for popular indie-blogs and contact the authors with similar offers.

Allow logged in users to see public homepage. Perhaps use dashboard.blot.im for dashboard?
  • Add a slack.com style dropdown on the public homepage for logged in users which takes them to the dashboard for their sites.

When the user's blog does not have a client, client.write and client.remove need to remove the files from the source folder. Create some kind of local client which we fall back and use when none is configured?

Work out how to host podcasts on Blot and tell Adrian

Add support for IPv6 and tell Raul

Client.write does not propogate sync errors… to demonstrate this, revoke dropbox token then try to enable local editing.

Re-enable image minifier and fix the bugs it creates

Can we keep the pandoc child_process running and pipe stuff in and out for speed? Measure before after to ensure this helps

Webloc converter
  • Generate screenshots as thumbnails for webloc posts perhaps using pupeteer and PNG8, which seems efficient for screenshots and tell Tom
  • Download the webpage for bookmark files and try to extract title + summary
Prune package.json

Cluster the main process. How will I verify that there is not statefullness somewhere in the server? I also want the main 'server' running on different threads to the CPU intensive stuff like image processing. Will this fix the bug with additional child processes if main process runs out of memory? Something wasn't being killed during the Nash WAV bug of August, 2018. There were duplicate node rebuild processes running.

Fix bugs with RSS feeds validation. Perhaps extend absoluteURLs helper function? Tell John

Add support for Dropbox Paper .paper files and tell Emad

Make improvements to template editor color picker:
  • Think about customizable svg icon colors?
  • Expose array of rgb values for selected color so we could adjust opacity of color in template, for borders, light text etc: {{#text_color}} color: rgba({{r}}, {{g}, {{b}}, 0.5); {{/text_color}}
  • Random color button
  • Recommended presets for color scheme as a whole
  • Swatches
    • used on other templates

Add support for Micropub in Blot's API. Tell Amit.

Add an EXPIRY to the log entries for a blog's 404 log

Reconsider default slug length or add new short slug property and tell Josh

Set up Dependabot to automate dependency upgrade PRs

Follow up with Christian about DataValet blocking

Work out why Pandoc cannot handle 'linked' images (instead of conventionally embedded images). For instructiosn on reproducing bug, see SG's email and follow up when resolved.

Self-hosting documentation then tell Jake and Mohammed and BP and Rado and Nuno and Omaid and Jarod and Francesco and Aryan and Todd and Anita

Review pCloud as a potential client and tell Omaid and Anders

Review Dropmark as a potential client and tell Rado

Add option to sort posts by filename alphabetically and tell [Steve](https://mail.google.com/mail/u/ 0/#inbox/FMfcgxwJXpTLwnKwSRTFKRqXKNgQkFDv)
  • How do we share info, like a link on a menu, or a header image across templates? Could there be a shared info repository that templates could access?
  • add support for dynamic partials to make collections possible, e.g. {{> /:tag.html}} ?
  • Add neat interface to customize blog level variables?
  • How do we transition from a global menu to one that the templates have control over? How do we share existing links between templates? How do we deal with the order of pages in a user's folder?
  • How do we transition from a global date display format to one that templates have control over?
  • Port the jekyll template Neocactus to Blot and document the process then tell Robert
  • Install and test a few of these static site generators
  • Make templates file or folder based
  • Consider making file-based template directory a git repo and using this to implement basic undo-redo functionality.
  • Disable re-rendering for locals
  • Add better customization options
  • Local template editing does not clear cache
  • Use Hogan for precompiling and rendering templates?
  • Parse tokens and params from routes and tell Jason
  • Add way to allow all entry lists to access {{#months}} sorting options just like the archives page.
  • Tell Marco when arbirary list sorting is ready
  • Fix Frank's strange template bug
  • Warn users that underscore will not work for hidden pages
  • Fix _ entries to true public files, tell john & other folks who depend on the menu: yes, page: no side effect
  • Tell Rodrigo don't write previews for _ posts
  • Add support for fetching only some properties of an entry (ideally only those that are used). prevent some properties from being fetched in some lists (html, for example in all_entries). Would be a good candidate for hgetall or hget?
Improvements to Dashboard
  • Add a broken link checker
  • Make dashboard requests idempotent to prevent multiple form resubmits, multiple new blogs created accidentally? More information about idempotent requests
  • Indicate that some posts' permalink will not change (if metadata) on the dashboard when setting the blog's permalink format. Tell Chet.
  • Dumb quotes are still smartified, even without typeset enabled, possibly by pandoc?
  • Undo option for form changes
  • Add transactional emails notifying user of changes to their email or password.
  • Implement a flags page for toggling all the settings (including hidden ones) for a given blog
  • When a user pastes the whole tracking script into the preferences page on the dashboard, strip out everything except the ID which we need… perhaps create a page explaining what is happening before doing this.
  • Handle noscript on dashboard / signup gracefully (remove all dashboard js?)
  • Allow users who are restarting an account with multiple blogs to disable some before restarting.
  • Take a look at Notion and Cargo for some neat ideas

Add support for native PDF embeds in posts, just put a link to a PDF or a path, e.g. /_assets/file.pdf –> would become a nice embed.

Add support for native MP3 embeds in posts, just put a link to an MP3 or a path, e.g. /_assets/file.mp3 –> would become a nice embed then tell Luke and Nash and Andy and Charlie and Konstantin

Fix bug with footnote links in a teaser from #frag to {{permalink}}#frag

File converters / codecs
  • Video posts (.mp4)
  • OPML files and tell John
  • Audio posts (.mp3 for now?) and tell Kevin
  • Multi-file posts from inside one folder? 'Folder>' Tell Kevin, Nash and Roberto and Calvin and Ariel and Lara
  • Multi-file posts with the same name but different extension (image.txt and image.jpg)

Expose exif data on Photo posts? See if you can add comments to image metadata and tell Riley, also tell Mike

Add password protection for blogs then tell Ed, this person, this person, Modomiro and Julian and Raph and Tara and Phil and Florian and Roy's friend Tim and Kaleb and Lotus and Khaled and Noel and Franz and Justin and Kyle and Devan and Anita and Emerald
  • Should we just go all the way and support htaccess? Add URL rewrite feature, e.g. rewrite /randomColor to /public/randomColor?
Write new clients to sync blog folders

Allow Blot to fallback to client.read if the file does not exist on the blot server. Say the harddrive is wiped, we still would like to serve blog files

Sync
  • Re-implement folder verification feature and make use of the local content hash computation script to verify we have the correct version of a given file
  • Make the sync / rebuild proceses run with unpriviledged user permissions to ensure shit isnt fucked with user input… – Re-instate feature to check if a rogue sync took down the server and run sync on a seperate process
  • Add method to pause syncing and prevent future syncs then use this method with the create/remove blog migration too.
  • Ensure sync script is run by less priveledged user (just access to /tmp ? /blogs/{{ID}})?

Add soundcloud embeds then tell Jonas, Nashp, and Anders and Richard

Add are.na embeds and tell Marco


Increase price to $6 per month for new customers. This will not affect existing customers in any way.

Buy the .com
  • Remember to bump LetsEncrypt rate limits if needed
  • Remember to transfer Dropbox webhooks to new domain on the Dropbox developers console

Incorporate

Support embedding an image in a post by copy-pasting the Dropbox share link

Thumbnail generator
  • Prioritize faces in crop
  • Try to crop out ruined borders. E.g. when making a square crop of a rectangular image with a border, crop into the image as well to remove the border-on-three-sides effect
  • Extract color palette too for the image
  • Offer imgix style API for embedding thumbnails

Consider supporting org-mode and tell Rashawn

Consider supporting Open Graph
Search engine
  • Improve search engine results and tell Tim

Add support for entry property with escaped double quotes, tell Jay

NGINX Install nginx fail2ban & http2

NGINX limit client request size to 1mb, only have large limit on git push endpoint.

Add a file dependency / dependents list to each entry then use this to rebuild dependent entries when, for example, a public image is updated.

Add support for comments via webmentions like Disqus and tell Amit and Luke

Migrate code from require('mime') to require('mime-types') since it doesn't use a global default type. Remove the mime node module.

Use <select> optgroup on timezone select dropdown to subdivide zones by current time, and steal the presentation format used by basecamp.

Move to pretty IDs for everything

Enable hyphenation again then tell rodericus

Move all unit tests which run on server start (the helper folder is littered with these, CMD+F for 'require('assert') into CI tests.

Re-enable CSP on blot site in a way that works in Safari

Expose list of rendering errors on dashboard

Push archives feature

Plugins
  • Fix image caption plugin to be semantic using
  • Ensure Youtube plugin still functions if apis fails

Menu needs concurrency or atomic operations (so we can build posts in parallel)

Look into how Jekyll does data files and possibly support

Think about responsive images and optimizing at request time and tell Marius and Jan


Consider allowing users to buy domains on Blot through DNS simple

Consider distributing static built blogs on dat or something similar

Add internationalization (i8n) and translation into other languages:

Consider adding embedabble support for giphy URLs and tell Nash

Consider adding educational pricing and tell Matt with my decision.

Consider adding support for Microformats in the default templates

Consider adding JSONFeed to default templates. Tell Jamie

Consider using sshfs for server and for users

Consider establishing bug bounty program

Consider adding simple server-side analytics and tell Tom and John and Romain

Consider adding simple commenting system and tell Precious

Consider supporting SASS and tell Max

Consider supporting Micro pub and tell Jamie

Consider offering newsletter service and tell David and Nash

Consider adding a crop of a livestream of the sky above me to the contact page. Possibly sourced from something like this. Just like this: https://sistercitynyc.com/

Consider adding support for PubSubHubbub support and tell Thomas

Consider atompub support for Marsedit and tell Chet and David

Consider incorporating typographic features from Textile?

  1. Done on May 7, 2021
    1. Added test case for new titlecase behaviour
    2. Fixed nested nodes in titles with titlecase plugin
    3. Removed string trimming in titlecase helper
  2. Done on May 6, 2021
    1. Added script to check metadata
  3. Done on May 4, 2021
    1. Added Sönke to the homepage
  4. Done on Apr 30, 2021
    1. Includes inline code tags in summary text
  5. Done on Apr 29, 2021
    1. Auto-formatted code
    2. Further tweak to random post script
    3. Tweaked random post script
    4. Added script to select random files
  6. Done on Apr 28, 2021
    1. Bump node redis client
    2. Tweak indentation
  7. Done on Apr 26, 2021
    1. Tweak git endpoint bandwidth limit
  8. Done on Apr 24, 2021
    1. Fixed close button in Safari for picture, scrapbook and portfolio templates
  9. Done on Apr 23, 2021
    1. Fixed close button on portfolio and picture templates
    2. Fixed close button on scrapbook template
    3. Fixed close button on picture template
  10. Done on Apr 22, 2021
    1. Enables rest of test suite
    2. Fixed issue with two wikilinks on one line
    3. Fixed issue with Wikilinks and paths to files containing square brackets
    4. Fixed bug with nested wikilinks
  11. Done on Apr 21, 2021
    1. Tweaked NGINX resolver settings for resty-auto-ssl
  12. Done on Apr 20, 2021
    1. Added active syncs to dashboard
    2. Further tweaks to server dashboard
    3. Updated dashboard script
    4. Updated scripts
  13. Done on Apr 19, 2021
    1. Added script to issue random requests
    2. Updated dashboard
    3. Added script to run server locally
  14. Done on Apr 17, 2021
    1. Added server dashboard
  15. Done on Apr 16, 2021
    1. Tweaked scripts
    2. Fixed broken path to test utility function
    3. Refactors tests and adds spec for link metadata with and without URLs
    4. Fix issue with Link metadata containing URLs
  16. Done on Apr 15, 2021
    1. Updated title
    2. Added test for the rebuilding of dependent entries
    3. Refactor set and fix issue with dependent rebuilds
    4. Added tests for wikilinks
  17. Done on Apr 14, 2021
    1. Fixed issue with const
    2. Handle incorrect type of arguments passed to transformer
    3. Handle img without src in caching plugin
    4. Fixed bug with thumbnail generator
    5. Added dependencies to plugins
    6. Added test case for wikilink conversion
  18. Done on Apr 13, 2021
    1. Tweaked module loading
    2. Implements wikilinks
    3. Added notes on mystery downtime
  19. Done on Apr 12, 2021
    1. Updated nginx config
  20. Done on Apr 10, 2021
    1. Fixed write.as importer
    2. Fixed calculation of daily requests served
  21. Done on Apr 9, 2021
    1. Fixed bug with accessing property of undefined entry object
    2. Fixed CDN check
    3. Added write.as importer
    4. Added substack importer
  22. Done on Apr 7, 2021
    1. Added script for toggling image caching settings
    2. Fixed datestamp script
  23. Done on Apr 1, 2021
    1. Helper refactor
    2. Further tweaks to nginx logging
    3. Disables flaky tests
  24. Done on Mar 31, 2021
    1. Logging refactor
    2. Refactors nginx config
    3. Prevents the double calling of a callback passed to email function
    4. Removed more logging
    5. Removed logging
    6. Disable gradient on safari
  25. Done on Mar 30, 2021
    1. Cleaned up error handling in questions:
    2. Cleaned up gradient on magazine template
  26. Done on Mar 29, 2021
    1. Update log rotate script
    2. Updated log rotate script
    3. Cleaned up scripts
    4. Finished log rotation script
    5. Added dry-run log rotation script
    6. Added stats polling to logs
    7. Removed 404 script
  27. Done on Mar 23, 2021
    1. Final tweak to spring newsletter
    2. Fixed email newsletter script
    3. Finished spring newsletter
  28. Done on Mar 19, 2021
    1. Updated readme for newsletterS
    2. Added spring newsletter
  29. Done on Mar 18, 2021
    1. Change status code of redirects to 301
    2. Updated redirects
    3. Updated copy
    4. Added catch for pathDisplay
  30. Done on Mar 17, 2021
    1. Updated script to set pathDisplay
    2. Added new redirects to brochure
    3. Fixed bulk redirect editor
  31. Done on Mar 16, 2021
    1. Fixed broken link
    2. Allow external redirects
  32. Done on Mar 15, 2021
    1. Disable unreliable local client test
    2. Further tweak to queue keys
    3. Improved queue keys
    4. Updated metadata for pictures template
    5. Updated tagged view on picture template
    6. Added tagged view to picture template
    7. Added fair queue
  33. Done on Mar 12, 2021
    1. Added pathDisplay to model for entry
  34. Done on Mar 11, 2021
    1. Fixed bug using Dropbox client with case of tags extracted from path
    2. Fixed scheduled entries
    3. Fixed rebuild script
  35. Done on Mar 10, 2021
    1. Fix drafts test
    2. Added test for drafts
  36. Done on Mar 9, 2021
    1. Reverts fix to use of flush
  37. Done on Mar 8, 2021
    1. Tweak to logging
    2. Added logging to git client
    3. Updated logging
    4. Pass error code from worker
    5. Fixed flush deprecation warning
  38. Done on Mar 6, 2021
    1. Increases request file size
    2. Fixed image zoom inside columns on various templates
  39. Done on Mar 5, 2021
    1. Fixed order of replies after edit
  40. Done on Mar 4, 2021
    1. Fixed stat
    2. Exposes updated time
  41. Done on Mar 3, 2021
    1. Removed stderr check
    2. Updated endpoints test
  42. Done on Mar 2, 2021
    1. Minor fix
    2. Improved breadcrumbs for search reesults
    3. Added better questions search
    4. Added naive questions search
  43. Done on Mar 1, 2021
    1. Fixed featured site
    2. Updated featured sites
    3. Fixed comments on pages for templates
  44. Done on Feb 27, 2021
    1. Updated error handling on brochure
    2. Added hover effect to form button
    3. Updated endpoints tests
    4. Roll back changes to augment
    5. Refactor build worker creation:
    6. Initial idea for reducing number of build workers
  45. Done on Feb 26, 2021
    1. Added 404 script
    2. Updated notes
    3. Refactor of zero-downtime code
    4. Uses cluster module to allow us to reload the server without downtime
  46. Done on Feb 25, 2021
    1. Updated redirector
    2. Redirects broken links on brochure
    3. Updated 404 finding script
    4. Added 404 short circuit to CDN
    5. Updated brochure
  47. Done on Feb 24, 2021
    1. Uses sprite for featured site images
    2. Removed unneeded image
    3. Removed unused tool on brochure
    4. Updated tests for markdown converter
    5. Removed ampersand double escaping from markdown converter
    6. Updated questions page copy
    7. Fixed citation tests
    8. Fixed citeproc usage
    9. Looks for tests in nested directories
  48. Done on Feb 23, 2021
    1. Updated notes on postgres
    2. Added postgres to load/save state scripts
    3. Updated sanity check for enforcing the local running of dangerous scripts
    4. Fixed always visible breadcrumbs container
    5. Fixed sticky 'on this page' section
    6. Further updates to featured sites
  49. Done on Feb 22, 2021
    1. Improvements to brochure
    2. Improve UX of log-in redirect
    3. Updated sidebar
    4. Updated news page
    5. Updated featured site candidates script
    6. Fixed question previews and ask question action
    7. Added copy of old default template to archived templates page
    8. Updated question page copy
    9. Rename new question to 'ask question'
    10. Added edit button to questions and answers
    11. Lints questions route
    12. Disable typesetting helper inside textareas and inputs on brochure site
    13. Stickies unanswered questions
    14. Updated brochure site design:
  50. Done on Feb 20, 2021
    1. Consolidate color scheme on brochure
    2. Cleaned up notes
  51. Done on Feb 19, 2021
    1. Updated metadata guide
    2. Updated template copy
    3. Tweaked who-uses section
    4. Improved news page layout
    5. Fixed link on privacy page
    6. Visual changes to questions
    7. Changed ordering of questions
    8. Remove duplicate about page

Done (RSS)