Instagram filter used: Normal
Blog
-
Sample book, freshly bound at the Asquith Press
The Asquith Press is quite nifty, with its print-on-demand Espresso Book Machine. I’d like to work out ways to feed it quality input using only open source tools, as for now they only recommend MS Word and the pricey Adobe suite. There’s no reason that you couldn’t produce the required PDF/X files in LibreOffice or Inkscape.
Instagram filter used: Normal
Photo taken at: Toronto Reference Library
-
q absolves data sins and makes CSV queries easy
The cryptically-named q (it also bills itself as being able to “Run SQL directly on CSV files | Text as Dataâ€) is very nifty indeed. It allows you to run SQL queries on delimited text files. It seems to support the full SQLite SQL dialect, too.
I used to frequently query the IESO‘s Hourly Wind Generator Output report (which now hides behind a JS link to obscure the source URL, http://www.ieso.ca//imoweb/pubs/marketReports/download/HourlyWindFarmGen_20160122.csv). Now that the file has nearly 10 years of hourly data and many (but not all) wind projects, it may have outlived its usefulness. But it does allow me to show off some mad SQLite skills …
The first problem is that the file uses nasty date formats. Today would be 23-Jan-16 in the report’s Date field, which is filled with the ugh. You can fix that, though, with a fragment of SQL modified from here:
printf("%4d-%02d-%02d", substr(Date, 8,2)+2000, (instr("---JanFebMarAprMayJunJulAugSepOctNovDec", substr(Date, 4,3))-1)/3, substr(Date, 1, 2)) as isodate
The above data definition sets the isodate column to be in the familiar and useful YYYY-MM-DD ISO format.
A related example would be to query the whole CSV file for monthly mean generation from Kingsbridge and K2 Wind projects (they’re next to one another) for months after K2’s commissioning in March 2015. Here’s what I did in q:
q -T -O -H -d, 'select printf("%4d-%02d", substr(Date, 8,2)+2000, (instr("---JanFebMarAprMayJunJulAugSepOctNovDec", substr(Date, 4,3))-1)/3) as isomonth, avg(KINGSBRIDGE) as kavg, avg(K2WIND) as k2avg from Downloads/HourlyWindFarmGen_20160122.csv where isomonth>"2015-03" group by isomonth'
which gave the results:
isomonth   kavg   k2avg 2015-04   12.7277777778   37.4569444444 2015-05   8.94623655914   67.6747311828 2015-06   6.05833333333   66.6847222222 2015-07   3.96370967742   45.372311828 2015-08   6.34811827957   67.436827957 2015-09   7.29027777778   79.7194444444 2015-10   14.5658602151   128.037634409 2015-11   15.9944444444   130.729166667 2015-12   17.6075268817   152.422043011 2016-01   19.6408730159   163.013888889
Neat! (or at least, I think so.)
-
If death is not the end …
Alan Rickman reads Robyn Hitchcock’s poem “If Death is not the End …¨
Update: Robyn posted a better recording via twitter: audioBoom / Alan Rickman reads If Death Is Not The End
-
Self-similar petals
Original drawn in hand-coded PostScript from a path worked out using InkScape. Translating from InkScape’s SVG paths to PostScript is slightly annoying: PS uses Cartesian conventions, while SVG inverts the Y-axis. At least the SVG path commands map well to PostScript: m → moveto, c → curveto, Z → closepath, S → stroke.
There’s no magic to this figure. Each row of petals is half the length of the row outside it. As there are 6 petals arranged in a circle, each petal is 60° of arc. To make the half-step between rows, the petals are rotated 30°, so the rows have to be scaled by sin 30°, or ½.
Instagram filter used: Normal