News

This page explains what I’m working on and what I have planned. You can subscribe below to recieve a newsletter at the start of each season. Please don’t hesitate to contact me if you have any questions.



To do

Finish Feed template
  • Create folder with public domain material, ideally would be about a unified subject yet contain images, code snippets, mathematics, essays, quotes and links
  • Tell Chris and John about Archive and Feed templates when they are released
Record new demo video
  • Finish video script in brochure/readme.txt
  • Work out how a photographer might use Blot, does lightroom work well?
  • Tidy up fontarchive.org

Fix bug with local editing which wipes metadata and route for views inside templates without package.json
  • Write script to catch template views with incorrect routes
  • For example '/archives.html'. Are other pages affected? /search.html? Is this an underlying bug with locally edited templates?

Add white background to folder in favicon

Deploy strict metadata change and tell Tamara

Finish script to identify long-expired users with blogs to safely delete.
  • 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.

Add image partial template which would render inside each entry to provide ways to access exif, etc.
  • Tell Stuart
  • Tell Nash that it's possible to have full screen images and sized text.
Rebuild all the thumbnails and cached images for every blog
  • Weird things happened to the ferox blog – it was not attached to its user owner… Can we reproduce bug locally with production dump?
  • The stores contain old urls, e.g. /_image_cache/…” even though we have updated new entries
  • This might break something? What if the cached images are no longer available?
  • I'm worried there are old references to blotcdn in the thumbnail data stores too, my purge-cdn script did not account for that…
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…
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

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

Work more on Tim's template

Translate Paul's template into Blot

Fix bug with case sensitivity for tag folders. Need to recursively check all directories for proper case when extracting tags then tell Thomas and Steve and Michael

Fix bug in Alex's draft and speed up its build time

Catch 404s in Google search results and set up redirects

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

Add support for checkboxes and tell Matt and Shridhar and Nash

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.
  • Determine cause of Markdown converter failure for Dropbox/Apps/Strange encoding bug
  • Fix encoding bug with greek URLs then tell Rodericus know
  • Fix bug with template tags in blog post and tell Shibel

Investigate log-in issue. Does this only happen when I reboot the server? There's no reason sessions should expire any sooner than say after a week of inactivity. Tell Marcus

Tell Marcus when it's possible to switch from annual to monthly billing

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 with case-sensitivity when transfering from Git to Dropbox and tell Shantesh and Ish
  • Fix bug which occurs when you change your username while using the Git client (caused by the broken repo url) and tell Koen
  • 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
  • Finish support for RFC3339 dates and tell Shawn.
  • Handle edge case of date surrounded by quotes, e.g. Date: '2018-01-02' and tell Amit
  • Fix bug parsing ISO8601 date format and tell Thomas
  • Fix bug with how the date parser. It doesn't handles a space (or lack of space) between the date and the time. For example, '2017-08-27 18:16:59' works but '2017-08-27-18:16:59' doesn't
Markdown bugs
  • 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

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

Add Q and A section to site where users could post

Disable access to s3 blogs bucket

Improve scheduler
  • Adds a command to restore database from backup.
  • Adds a scheduled task to flush old backups using app/scheduler/backup/remove.js in branch 'scheduler' which was ported from the old remove method of the upload module
  • Adds offsite (i.e. non AWS backups)
  • Rotates log files

Wait a month and then delete s3 blogs bucket

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?

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

Finish converting Jack's site from Hugo to Blot using this Wordpress-style export view for a Hugo template.

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

Create a status page and uptime monitor and tell Amit. I like this style (just a JSON response)

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

Generate thumbnails for gifs and tell Mike

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

Add way to filter entries by post type (e.g. photo) and tell Justin.

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

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


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

Write script to download all the redis data + files for a particular blog, then restore it in my local environment. The hard part will be using Redis's DUMP command.

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
Fix Transformer bugs
  • 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
  • Handle query strings in path to image files
Add notification emails for monit events
  • Include secure one-time link to reboot the AWS instance?
Research state of static site generators
Improvements to brochure
  • Write new view renderer for express which would allow middleware like render_tex and would save templates to disk pre- mustache render but post minifyHTML.
  • Add integration tests for brochure site to test sign up flow
  • Create credits page listing the names of the people involved in all the open source software used by Blot
  • Add latest news item from footer
  • Clean up error messages in logs for public site
  • Personalize the documentation for logged in users
  • Add script to fetch 404s with interface to set up redirects
  • Tooltips for lock and CVC on sign up page
  • Loading state for submit button on sign up page
  • Unify dashboard header style post-payment
  • Navigation collapse on mobile devices
  • Fix formatting guide
  • Prune unused font-face declarations from CSS passed to dashboard
  • Use blotcdn for video and other static files
  • Logo spacing from Chrome tab
  • Fixtags across site
  • Favicon with white background for folder
  • HTML minifier
  • CSS compressor
  • JavaScript minifier
  • Custom video player on index page
  • Add types and examples to items on reference page
  • Add a resource page to the documentation with guides like Chad's and Martin's guide to citations
  • Make formatting guide searchable
  • Make reference page searchable
  • Generate high quality optimized favicons from new logo
  • Extract SVG of logo which can be used to produce hover effects, and on black
  • 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
  • Ask for critiques

Set NODE_ENV environment variable to production

Add support for HTTP2

Fix bug with question mark in image name, e.g. drag and drop 'x?y.jpg' into a blog folder.

Fix bug with question mark in image path's name inside a markdown file, e.g. embed a file 'x?y.jpg' in a markdown file.

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

Finish re-write of template system
  • Local editing
    • Fix bug with title and partials in local editing then tell Luke and Frank
  • 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 when the name of a locally-edited template in your blog's folder updates
  • 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 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 titlecase helper function?
  • 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
  • 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
  • Add persona/cargo style customization buttons
    • Add font picker and tell Michael
    • Serve previews of templates from a domain with HTTPS
    • Add iframe of site in edit page of template editor
    • Work out how to make live modifications quickly to a CSS file for preview purposes
  • 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
  • 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
Subscription refactor
  • Add support for subscriptions via PayPal
  • 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
Improvements to backup system
  • Add hourly local redis rdb dumps
  • Add script to roll back into hourly local db dumps and remote backups
  • Delete backups older than a month from s3 automatically
  • Archive logfiles with backups and wipe on a rolling basis

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:
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?

Add tool to services page which would ensure that all posts in the folder had a date as part of their filename or metadata. Tell Nash

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.

Port Jane hugo theme to Blot and tell Jack and Josh on micro.blog

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 Microformats in the default templates. Tell Amit.

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

Add support for HTTPS on preview subdomains

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

Templates to translate:
  • Anders Norén

  • Radek Kozieł

  • 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.

  • 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

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
  • Multi-file posts with the same name but different extension (image.txt and image.jpg)
  • Markdown Write a pandoc compatible markdown converter in javascript to resolve some of the performance issues with pandoc. Perhaps just use Markdown-it

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 Roy's friend Tim.

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


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

Add support for other payment methods
  • Bitcoin and tell Chaz
  • Paypal
Support embedding an image in a post by copy-pasting the Dropbox share link

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?

Review Fathom analytics and get back to Marcus

Improvements to 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?
Thumbnail generator
  • Generate thumbnails for GIFs / SVG thum
  • 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 Open Graph
Search engine
  • Improve search engine results and tell Tim

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

NGINX
  • Recompile nginx with neccessary dependencies for auto-ssl instead of openresty?
  • Install nginx fail2ban & http2

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

Investigate commento as an alternative to Disqus

Automate setting up application environment using /etc/profile.d:

sudo echo export BLOT_CACHE=true” > /etc/profile.d/blot.sh sudo chmod +x /etc/profile.d/blot.sh

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

Migrate code from require('../../../') to shortcuts in node_modules

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
Daily update email
  • Move generator from scripts to app folder such that the server no longer depends on anything in /scripts
  • Allow configurable timezone for when I travel?
  • Write integration test

If entries share publish date, sort them by blot creation date

Enable hyphenation again then tell rodericus

Add option to enable hard line breaks in Markdown parser?

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

Incorporate typographic features from Textile?

Queue scheduled entries in redis somehow to make each server less stateful

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

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

Follow up with Eli about work on the documentation and user's guide

Add URL rewrite feature, e.g. rewrite /randomColor to /public/randomColor

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

Investigate atompub support for Marsedit and tell Chet

Investigate PubSubHubbub support and tell Thomas

Look into how Jekyll does data files and possibly support

Add .lhs support and tell Roy

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

Add support for github style checkboxes and tell Christian

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

Consider allowing users to buy domains on Blot through DNS simple

Distribute static built blogs on dat or something similar

Internationalize i8n and tell Christian about Portuguese and Simon about French

Done

  1. Tweaked layout of homepage to match new nav
    3 days ago
  2. Updated colors for folders in documentation
    3 days ago
  3. Added colors to subscription script
    3 days ago
  4. Updated parameter in subscription script
    3 days ago
  5. Updated script to fetch subscription from Stripe
    3 days ago
  6. Updated fetch subscription script
    3 days ago
  7. Logs more information about subscription from stripe
    3 days ago
  8. Updated logging
    3 days ago
  9. Updated comment in identifiable blogs script
    3 days ago
  10. Updated each user script
    3 days ago
  11. Updated user subscription script
    3 days ago
  12. Comments
    3 days ago
  13. Updated script to fetch latest version of subscription from stripe
    3 days ago
  14. Added scripts to identify expired users
    3 days ago
  15. Updates sitemap
    3 days ago
  16. Fixed sitemap
    3 days ago
  17. Fixed layout
    3 days ago
  18. Updates design of guides page
    3 days ago
  19. Fixes broken link
    3 days ago
  20. Updated domain guide
    3 days ago
  21. Fixes broken link to guide to setting up a domain
    3 days ago
  22. Updated logging for emails sent in development mode
    3 days ago
  23. Fixed development email rules
    3 days ago
  24. Updated email settings in development mode
    3 days ago
  25. Adjusted logic for emailing me about new blogs
    3 days ago
  26. Updated navigation
    3 days ago
  27. Created guides section in documentation
    3 days ago
  28. Tweaked layout of news page
    3 days ago
  29. Round corners for passwords too
    3 days ago
  30. Updated homepage copy
    3 days ago
  31. Removed unused views
    3 days ago
  32. Fixed contact link in logged out page
    3 days ago
  33. Moved features from the how page to the home page
    3 days ago
  34. Changes to colors of background
    3 days ago
  35. Fixed log in pseudo link hover state
    3 days ago
  36. Updated homepage copy
    3 days ago
  37. Consolidated margin for paragraphs without titles above them
    3 days ago
  38. Updated link color on NGINX error page
    3 days ago
  39. Added new information about billing to daily update email
    3 days ago
  40. Added information on revenue billed monthly
    3 days ago
  41. Fixed formatting of daily update email
    3 days ago
  42. Added information on last 24 hours to daily update email
    3 days ago
  43. Added income to daily update email
    3 days ago
  44. Updated conditions to email me about a recovered subscription
    4 days ago
  45. Added more emails for subscription notifications
    4 days ago
  46. Removed email notification for failed payments
    4 days ago
  47. Fixed grammar in created blog email
    4 days ago
  48. Updated email notifications for new blogs
    4 days ago
  49. Updates email of customer on stripe
    4 days ago
  50. Finalized summer newsletter
    4 days ago
  51. Updated newsletter readme
    4 days ago
  52. Removed shelljs
    4 days ago
  53. Updated webhook script
    4 days ago
  54. Roll back changes to other files
    4 days ago
  55. Updates error handling on dashboard
    4 days ago
  56. Updated check for content-type
    4 days ago
  57. Updated reset password copy for users without passwords
    4 days ago
  58. Tidied up log-in routes
    4 days ago
  59. Adds password reset link to log-in form
    4 days ago
  60. Fixed display of featured sites
    4 days ago
  61. Updated video link on homepage
    4 days ago
  62. Improved play video button on homepage
    4 days ago
  63. Updated console template page
    5 days ago
  64. Improves design of page for templates
    5 days ago
  65. Updated homepage copy
    5 days ago
  66. Updated documentation
    5 days ago
  67. Updated style of video overlay on homepage
    5 days ago
  68. Fixed layout on sign up page
    5 days ago
  69. Updated links in sidebar
    5 days ago
  70. Tuned up copy on about page
    5 days ago
  71. Moves acknowledgements under archives page
    5 days ago
  72. Updated acknowledgements page
    5 days ago