Existing cloud solutions all have issues:
- There are free services like Google, if you don’t mind them rooting through your data to learn about you.
- There are free ones like Apple, if you don’t mind your data in a walled garden with access to it only on their terms and their hardware.
- The open-source solutions are dodgy, where they exist at all.
- Paid solutions are costly.
Seeking a private, reliable, free, self-maintainable solution
for my-data-everywhere, I developed Devious Cloud. Set up a private
Subversion or Mercurial repository for your cloud. Point
Documents/Cloud on each of your machines at it. And the
cloud command and friends do the rest.
And in case you’re away from all your machines, you can
access your data on the web, where it’s secured behind an
2018–10–15: r26 has been promoted to general
release. r27 adds an
--unformatted option to
now, and is development releases.
r22 fixed Mercurial hooks and missing/empty calendars. During
install for Mercurial, it now creates a
the PATH captured (otherwise Mercurial provides a minimal PATH to
the hook when invoked). If you already created a .dcloudrc,
you’ll probably want to set PATH there.
For Subversion, the commit hook has moved to
~/bin/dcloud-post-commit, like for clients and
Mercurial. The installation creates a stub
Repositories/hooks/post-commit that captures HOME,
PATH, and USER, then invokes the
script. Remove the existing script before install to have the
new-style stub created.
Although DCloud doesn’t have a formal address book format, you can keep your contacts in a plain-text file with entries separated by a blank line. There’s a remarkably utilitarian search command that’ll display matching “paragraphs”. A few aliases and you can repurpose the command for other uses. See: pn(1) man page (pdf)
$ pn winsted clerk 860-379-2713 Winsted Town Hall - vital records department (birth certificates $5) Town Clerks Office 338 Main Street Winsted, CT 06098
As a bonus,
pn also searches Google address books
goobook is installed.
Make your to-do lists using Markdown’s tasks lists.
tasks.py utility scans files, extracts
to-do items, and writes them in HTML with appropriate CSS-ready
mark-up. And it has options to remove complete tasks, or move them
to a separate file (with an optional date) to keep a history of
work completed. It understands subtasks, so works in progress
remain untouched until the whole job is finished. tasks(1)
[ ] This is a to-do item [ ] Polish the cat - [x] Acquire cat polish - [x] Acquire cat - [ ] Wash cat - [ ] Get first aid - [ ] Polish cat [x] Tune the fish
iCalendar (RFC 5545) is fantastic for sharing calendars, but
most calendar apps are a pain in the ass. Everything has to go into
a certain field. Do you long for the days of the TRS-80 Model 100,
SCHEDL was a front-end for a text editor with a
grep? You want queue(5) format, which can be wrangled into
iCalendar or HTML by queue2ics, or
viewed from the command line with now(1)
2018-05-01 Holiday Beltaine - shag like it's the first of May @ My Favorite Sex Club 2018-05-05 13:00 Sink some mayonaise @ stream out back of Discordian HQ 2018-05-09 19:00 SciFi Night - Jessica Jones @ Mike's house 2018-05-11 16:00 - 21:00 Game night @ Ye Olde Gaming Centre - Settlers with Lori and Roy 2018-05-13 17:00 Surf the web http://perette.barella.org
And just in case you want to go the other way, queue2ics can read iCalendar and write queue files.
DCloud documents are just documents in a revision control system–so not only do you get one document everywhere, you get an automatic history of changes. You can just add/modify documents using your revision control commands, or use the cloud(1) wrapper.
When updates are pushed into your cloud, the server constructs a web page containing some or all your documents. Set up a web server of your own, or provide an upload script to shove the website to your hosting site. publish_cloud(1), view pictures
DCloud is written in Korn Shell and Python 3. Perl code has been eradicated.
History & Colophon
DCloud was refined into a package as result of moving off the Mac in 2018.
pn dates to my first UNIX machine, a second-hand
AT&T 3B1 named Unixslut, circa 1993.
developed in the late 90s or early 2000s on Selantia, a Wintel
Linux box, to deal with the quickly growing numbers of Internet
passwords around that time.
queue2ics was originally a Perl script developed
2008ish on an iBook G4 named Mugenshi, for a file format that
evolved in the late 1990s for a TRS-80/Linux file synchronization
system. The format organizes my calendar to this day.
queue2ics was rewritten and cleaned up in Python in
now was originally a shell alias for
<file>. It was replaced with a shell script that
improved formatting around 2013. Terminal-size aware behavior and
other enhancements were added in 2018.
both originally coded in Korn shell in 2018, but were both
rewritten to make the code more manageable.
also written in 2018, but remains in Korn shell. All were developed
on a Thinkpad E570 named Lenora running LinuxMint 18.3, with
portability testing on a mid-2009 MacBook Pro named Stefanie
running El Clownian, and server-side testing on a 2008 MacBook
named Frank running Snow Leopard.
The web calendar styles, 12/24 hour time switching, and category switches were originally developed for the Rochester Kink Society website around 2009.