Posted on

Inkscape – Open Source Vector Graphics

Inkscape is an amazing vector graphics editor. It is free and open source and works on a variety of platforms, including Linux, Windows and OSX. Inkscape replaces Corel Draw and Adobe Illustrator and can read their files, and is a first class citizen among these other editors. > This page will be semi-regularly updated to put my own Inkscape experiences into words. Last updated 19-Mar-2019.

Inkscape on Linux (Debian)

Install Inkscape from flakpak:

sudo apt install flatpak -y
sudo flatpak remote-add --if-not-exists flathub
sudo flatpak install flathub org.inkscape.Inkscape
sudo flatpak update -y

Adjust the shortcut to run flatpak run org.inkscape.Inkscape

Inkscape on OSX

Unfortunately the mainstream OSX release runs on xQuartz which is slow and doesn't support the standard OSX keystrokes and menus. Plus the windowing is not flexible enough. The main branch has continued development while the idea is to get a native release working with Gtk 3, but it is unclear if or when that will take place. For years I have used an old 2013 release from Valerio Aimale. There is now a 2017 release for Inkscape 0.92.2 but it doesn't run on OSX 10.01 (Yosemite), so I am unable to test or use. While s_uv is working on a next version of OSX with Gtk integration (called OSX Menu), it still is wrapped in xQuartz, with the same issues. As of mid-2018 I no longer use OSX, so things may have changed since then.

Inkscape Features and Functionality

  • Inkscape Keyboard and Mouse Reference I use Inkscape as a drawing and illustrating tool and also for editing images in terms of compilations, extraction and svg-ification, logos, book covers, basically everything under the sun. As with any tool, getting efficient with Inkscape is a discovery process with a learning curve. As well, I happen upon a variety of features that continue to amaze, including:
  • Barcode generation: > Extensions > Render > Bar Code
  • etc. Inkscape supports extensions including:
  • Inkscape Map Inkscape SVG files to HTML image map or coordinate list
  • Inkscape Table Support
  • Etc.
Posted on

Server-Side Analytics and NoJS

The current system of analytics tracking is so very broken, let us count the ways:

Most solutions require third party trackers

  • These are easily blocked by third-party ad blockers/privacy tools
  • They are mostly javascript (and javascript can be disabled)
  • They are a privacy nightmare, even when implemented properly
  • They slow a site down by increasing http requests and the overhead of additional offsite requests

Most self-hosted solutions are equally bad

  • Most self-hosted solutions, including open source, require either a cloud service, (again, the problems above),
  • or a full application with mysql as a database (large overhead for small, low-volume websites).

Return of Weblog Analysis

What is needed, with a bit of fine tuning, is a basic weblog analysis. After all, most of what is desired can be managed through http headers, including using session and tracking cookies, all accessible from well-configured weblogs. In turn weblogs can be parsed and information structured and placed into additional logs and/or sqlite databases, which can then be accessed via clients for realtime or reporting data.

Apache log content available

Request information

  • Host
  • URL
  • Query String
  • Referer

Requestor information

  • Client IP address (which can be then compared with GeoIP)
  • Date/time of request
  • User-agent
  • Cookie information

HTTP Cookies

Here is where the meat and potatoes are located. Of course initial requests may not have cookie data, but subsequent requests certainly can, including session (encrypted even) and user tracking (clickstream) cookies, including encrypted usernames/passwords. Shopping carts can be included in cookies (and therefore in http log files), and even properly annotated internal links. And all this without any javascript.

Apache per user Sessions

Apache supports user sessions, and also encryption of those sessions prior to being written to a database or http cookies.

Where Javascript is Needed

CSS Media Queries can help with responsive design detecting a viewport, but if a click needs to be detected or intercepted by the browser, without a new page being requested, that needs javascript. For example, if an image were to be a preview screen for a video, and on-click a video player were to repalce the preview image, and play, that would require javascript. If however, a new page were to be loaded, which also included a video player, and that video to begin playing, that would not require javascript.

The Calculated Payoff of no Javascript

If the cost of calling a new page were reduced below that of loading javascript, and then calling that javascript, then javascript would not be needed. In the case of the video player example above, if an html5 video player implemented minimal javascript, then it could outperform (even when requiring a new page to begin playing a video).

Posted on

Xiaomi – Brand on the Rise

In my household we have been introducing Xiaomi products for the past six months. Overwhelmingly positive, but not without a hiccup here and there. In general, there is an odd mixture of: quality, design, and value. I say odd because generally those things don't go together. Great price, good looks, and works well. Not perfect, but nothing is. Xiaomi may have much bigger rivals, especially in China, but they have such a strong combination that they are able to compete with, and in some cases beat out such giants as Samsung in markets like India.

Continue reading Xiaomi – Brand on the Rise

Posted on

Colorblindness Online Marketing


Colorblindness affects approximately 5-8% of the population, mainly males. The visualization of these kinds of colorblindness is eye-opening, to say the least. The most common form of colorblindness is deuteranomaly, which is red-green. The colorblindness simulations show the color red as indistinguishable from a certain shade of green. Actually to my eyes the dichromatic treatment renders both green and red as amber or ochre. Which means that yellow, orange, green, and red are seen as a light yellow to dark yellow spectrum, with purple as a darker form of blue. This means that the use of red and green as distinguishably different should be avoided. The use of red-yellow distinctions or green-yellow distinctions could work. Also now that the blue-purple distinction also gets muddled, which is not useful for the dark blue link and purple visited-link color standard in html.

Online Marketing

There are three online marketing graphical components which should be made colorblind-safe * Company logo and other visual brand design elements * Website color scheme, including background, headers, subheads, links, and visited links * Any graphical banner advertisements used anywhere on the web Just like the company or brand name and website URL, which may not be changeable, the company brand colors and logos may be off-limits to optimization. However, any kind of navigation or non-core imagery should be viewed through the lens of the colorblind customer.

Rules of Thumb

Some rules of thumb can be generated from these research findings * Do not mix green with either red or orange * Use a darker green against light backgrounds, as light green appears as yellow * Do not mix blue and purple, and avoid shades of blue to purple, they won't stand out * Use the VischeckJ tool (below) which will show how differentiated a given logo and graphic scheme is from competitor brand visuals As per the usual, the idea is to be different, but in a good way.


  • ImageJ and VischeckJ
  • For colorblind people, the What Color tool helps identify colors on a screen for those who cannot do so visually
  • Visicheck has an algorithm called "Dalton" which changes colors to make the distinctions between colors more noticeable for the colorblind
  • Visicheck also has online tools to check websites and images
Posted on

Evolution is Adaptation, not Fate

Evolution is about adaptation (and natural selection) but the part most interesting is the adaptation that is possible in our individual lives. This does not mean we can become another species in one generation, but that we are an adaptive organism. Some folks talk about evolution in the same terms as fate. While this is correct (insofar as it is our fate to be human with specific attributes which are the result of evolution), it is much less important that what we can change and how we can leverage what we have into achievement. Innovation Continue reading Evolution is Adaptation, not Fate

Posted on

Fonts, Typefaces, Typography

  • Note: All else being equal, select TTFs if they are hinted, and OTF fonts if not.
  • Note: Symlink in fonts to /usr/share/fonts and fc-cache -fv in Debian and other Linux.
  • Note: For managing fonts in Debian, see Managing Fonts in Debian

Fonts, Typeface, and Typography -- what a mess. Not only does one have to repeat, essentially, the history of typography and letterpress printing to understand all this, but most fonts, like software, are protected and licensed in strange ways, which can increase risk. And so, we turn to Open Source and Open Content licensing as well as interesting, beautiful and most of all useful typefaces to use these days. Note that this page is updated on occasion.

Font Editors - Free and Open Source

There are two interesting open source font projects, the venerable FontForge and the relatively new and modern TruFont. FontForge also has a lovely Book Design with Fontforge.

Glyphs and Glyph Mapping

In short: characters are what you type, glyphs are what you see.1

Complex Characters

In many Southeast Asian languages, along with other South Asian-derrived scripts, there are complex characters which include overlay positioning of characters.

Kerning and Ligatures

There is not only special glyphs kerning (spacing) between specific sets of glyphs (e.g., x and each rounded glyph (a,c,d,e, etc.)), and ligatures, which are essentially unique hybrid glyphs representing two or my glyphs positioned next to each other (e.g., ff, fi, etc.).

Unicode Character Charts

Unicode specifies character charts and language blocks.

TrueType and OpenType

OpenType is an improvement over TrueType and can act as a wrapper around TrueType fonts, as well as extend their functionality through advanced glyph handling, as well as cross-platform compatibility.

OpenType vs. TrueType - 5 common misconceptions

While this video is useful, it does not take into account that OpenType is not a superset of TrueType and there are some features in TrueType not available in OpenType (e.g., hand-hinting), and being an older font format, there may (still) be more tools that work better with it.2

Digression into Languages, Scripts, Keyboards, Characters, Glyphs

First we start with languages, which may have one, more than one or no scripts (entirely verbal languages). Scripts consist of characters and glyphs, characters being discrete marks and glyphs being semantic. In many cases a glyph can be made up of multiple characters, and can also be modified in some way (kerning, position, etc.) based on combination.

Keyboards map keys to characters, but the specific font can have mapping tables which produce these custom glyphs when in some kind of proximity.

Fonts of Importance

The ultimate goal will be working toward a nice set of typefaces which will support various scripts and collectively be a great toolbox for the creation of most kinds of documents and publications.

Types of Typefaces

  • Serif: Humanist - Caslon, Linux Libertine, Linux, Biolinum, Gentium
  • Sans Serif: Geometric - E.g., Beteckna, Futura
  • Sans Serif: Grotesk - E.g., Nimbus Sans, Franklin Gothic URW, Helvetica
  • Sans Serif: Humanist - E.g., Gill Sans, Verdana, Open Sans, Gentium

While this appears useful, and is based on the Vox-ATypI classification, the criticism that this is outdated, that small differences separate different categories, and ultimately that these categories are unhelpful in any meaningful and practical sense.

OTF has within it a different set of categories that can be used, including:

  • OS2 Width Class: From Expanded to Condensed
  • OS2 Weight Class: Standard style from very light, thin to heavy, black and
  • PANOSE Family: Any, No fit, Text and display, Script, Decorative, Pictoral
  • PANOSE Serifs: Degree and type of serif (from normal sans through a variety of options)
  • PANOSE Weight: Standard style from very light, thin to heavy, black
  • PANOSE Proportion: From Expanded to Condensed

Thai Typeface Typography

In the exercise of comparing and categorizing Thai typefaces, a few categories could be seen as helpful:

  • Sans, aka Sans Serif (though not are all Sans in the same way)
  • Serif (though sometimes difficult to see a big difference with some similarly shaped Sans, e.g., Google's Noto Sans and Noto Serif
  • Slab Serif (I prefer Block as it is more descriptive)
  • Script (handwritten)
  • Blackletter (aka Gothic, a more apt term), can include caligraphic fonts
  • Another category which is similar to script, but is more geometric and angular (hence Angular)
  • Monospaced (fixed width, typewriter)
  • Stylized (very special fonts that expand beyond these basic categories into a category of their own)

Also this video from Cadson Demak is useful:

And some photosets from Flickr:

Licensing of Fonts

Fonts on the Web

For the web, where reading is quite important, websites should spend as much time on thinking about legibility as the recent typographic refresh on Wikipedia.

Typography Web Applications

There are quite a few interesting web applications for typography that may be useful.

Posted on

Kindle Paperwhite 4th Gen

I've used a Kindle since the Kindle Keyboard (3rd gen), and since then purchased and used the DX for a while (the much larger model). On 06 September 2012 the Kindle Paperwhite was released and I registered mine on 10 September. I broke that model within six months by wedging it in a bag that had too many objects in it, but Amazon sent out a replacement free-of-charge (which included free shipping, and I live outside the United States).

Continue reading Kindle Paperwhite 4th Gen