Tag: code

Revamping 1klb comments part two: the database

We’re building a commenting system for a static site blog! Or at least, I’m taking you on a guided tour of my blog commenting system.

In my last blog post I outlined how the commenting system of the blog works, at least at the big picture level. In this post, I’ll go through how we set up the database.

Revamping 1klb comments part one: an overview

A little while back I created a commenting system for this blog. The blog itself is served via a static site generator (specifically nanoc served on netlify), so a commenting system isn’t as simple as putting an html form in the page and hooking it up to a database on the server. Instead, I ended up using a hybrid of netlify’s forms, the web-based database system Fauna DB, and some javascript.

But the issue was that this system didn’t really work that well. Comments got lost in the churn, I got notified kind of poorly, and it was all a bit messy. So a month or so back I completely revamped the commenting system, cutting out the middle-man (in this case Netlify forms), adding some moderation features, improving notifications, and generally making it run smoother.

The end product takes a bit more effort to put into production, but I think it’s worth showing off. In this first post, I’ll do a big picture overview of the whole system.

JAMStack comments (for free) with Netlify and Fauna

Note: This commenting system is now out of date. To find a more up-to-date discussion on the commenting system this blog uses, check out the series of posts starting here.

This site used to have comments through Disqus. But Disqus was a huge third-party javascript drain and resource hog, and I ditched it.

Sublime Text basic plugins

The hard drive on my laptop recently ate itself, and while I was able to recover most of my important data through the magic of regular backup, I did lose a few files. Among them: my directory of custom SublimeText plugins. It’d been a good while since I had to make a Sublime Text plugin, so this was a good refresher course.

While I’ve built a few plugins over the course of time, the two main ones I miss were:

Dugong - kind of ugly mindmapping in javascript

For a (currently undisclosed) project, I decided that it would be a great idea to have some sort of markdown-to-mindmap converter. This is actually a bit of a misnomer - what I wanted was something that would take plaintext, in a format as simple and memorable as markdown, and turn it into a graphical mind map, probably in svg. I’ve been hacking greasemonkey scripts at work, and with that comes at least a base level of competence with javascript: the perfect language for converting a div to an svg, on the fly, in your browser.

The result is dugong. It’s a pretty simple library - no-frills, nice and small, with no dependencies on external libraries. Just download, plug into your webpage, and watch it convert lists to mind maps in front of your very eyes.

Advanced Gnuplot: sizing particles

I’ve previously discussed Gnuplot on this blog, discussing why it’s excellent and demonstrating how to make a semi-decent simple graph using the package. You can learn a lot from Gnuplot by playing with sample graphs and reading the documentation, but I thought I could show off some of the more complex graphs I’ve made over the past year or so, and how I went about crafting them.

The setup

In this post I’ll cover a somewhat complex particle sizing graph I ended up producing for a recent paper1. In the paper we were determining the size of a batch of elliptical nanoparticles, which we could image using scanning electron microscopy (SEM). SEM produces an image of the material at high resolution, in greyscale:

A cocoa bridge to OmniFocus

Over the past week or so I’ve been working on unifying two projects: kanban-fetch and of-store. They have their similarites. both are command-line applications that interact with OmniFocus via ScriptingBridge and do something with the data. Both of them started off as small personal projects, closer to hacks than actual scripts, and have developed considerably due to the fact that since I wrote that article I’ve had people emailing me and asking all sorts of questions, which have forced me to add radical features like actual documentation and the like.

Both scripts kept on doing the same things: working out whether OmniFocus was running, working out which version of OF was running based on its application ID, working out if projects and tasks were completed, saving them to a SQLite database…the natural progression is to take all this common code and turn it into a reference library.

Oh look some writing

This morning Omni Group put out their newest edition of their desktop productivity/task-tracking app OmniFocus to great acclaim everywhere on the internet (or at least everywhere on the internet that cares about productivity applications for OS X, a small but very enthusiastic segment). To coincide with the launch they’ve also started a series called Inside Omnifocus, which explores how a number of people from different walks of life use OmniFocus in different ways to generally be better people. The very nice people at Omni Group decided to extend an invitation to me to write for the site, which I happily accepted.

The site went live this morning (my time), and resulted in the above uptick in visitor numbers. So, uh, hello new visitors!

One foot in front of the other

I’ve been slowly - slowly - plodding away at coding MailSend, my work-in-progress, learn-as-you-go email-sending application. With thesis-writing out of the way I’ve got a bit more time to devote to this project, and while every step is slow as treacle, I am getting somewhere.

Today marks the culmination of several days’ painstaking work getting NSOutlineView to play nice, which finally ended in an IMAP “sent mail” selector that I feel I can be proud of:

  • 1
  • 2
  • ...
  • 5