Sydney, Australia

Font nerd, photo nerd, Linux nerd, Python nerd, web nerd. I make great toasted-cheese sandwiches

  • 2019-08-16T08:14:03Z via Web To: Public CC: Followers

    A long time ago, I read Robert Bringhurst's Elements of Typographic Style, and decided to make a CSS style-sheet that would try to implement as many of his recommendations as possible - limited line lengths, a consistent vertical rhythm, that kind of thing. Recently I thought to try it on my phone, and it turned out I needed to tweak it a bit for mobile compatibility.

    After tweaking, I decided to use GitLab Pages to make a demonstration website, and here it is:

  • 2019-07-10T13:58:54Z via Web To: Public CC: Followers

    I normally use mutt for reading and writing emails, because being able to access my email from anywhere via ssh is too cool to pass up. However, sometimes I want to read or write HTML mail, so I boot up Evolution.

    How is it that Evolution has been in development for this many years, and when I select some text and hit Delete, it still sometimes deletes the entire rest of the email? And sometimes hitting Undo doesn't bring it back - it just makes other weird changes to the text that I never made.

  • 2019-03-06T03:35:10Z via Web To: Public CC: Followers

    Today my phone downloaded an "Android System WebView" update whose changelog advertised "bug fixes and speedy performance improvements". That seems like an odd way to phrase it; I wonder if it originally said "SPDY performance improvements" (i.e. performance improvements for the SPDY protocol that was deprecated in favour of HTTP/2) until a copy editor/translation team got hold of it.

    McClane likes this.

    Sounds likely 😁

    JanKusanagi at 2019-03-06T14:30:56Z

  • 2019-02-11T14:48:58Z via Web To: Public CC: Followers

    My Android phone offered to update to Android 9 today, so I said "sure!". It turns out Android 9 is pretty cool, but it adds a date banner to the top of the home screen, and a search box to the bottom. Both these widgets seem to depend on the Google Assistant app for their functionality, but I've disabled that app (I have quite enough Google in my life already, thank you) so they just sit there inert and immovable.

    I guess I should be grateful that Google stuff can be disabled and the things that depend on it degrade more-or-less gracefully, but I'm a bit annoyed at the waste of screen real estate.

    McClane likes this.

    I really can't imagine using a regular-from-the-manufacturer Android πŸ˜…

    JanKusanagi at 2019-02-11T15:25:06Z

    I wanted to avoid weird "value added" cruft from the manufacturer, but I'm open to third-party addons and extensions. What do you use?

    Screwtape at 2019-02-12T00:59:56Z

    Oh, I have an old phone with CyanogenMod.

    But if I had a more modern one, it would have to be with LineageOS or a similar system, never Android "as is".

    JanKusanagi at 2019-02-12T02:00:31Z

  • 2019-02-06T08:16:44Z via Web To: Public CC: Followers

    Some people, when they have to lay out text in a terminal emulator, think "I know, I'll call wcwidth()!" Now they have two problems.

    AJ Jordan, McClane likes this.

    McClane shared this.

    Something called "WC width" is messed up πŸ˜†

    JanKusanagi at 2019-02-06T15:29:33Z

    McClane likes this.

  • 2018-12-18T11:33:04Z via Web To: Public CC: Followers

    Your password must contain a capital letter, a lower-case letter, a number, a punctuation mark and an emoji.

    McClane likes this.


    JanKusanagi at 2018-12-18T13:16:23Z

  • 2018-12-12T08:10:18Z via Web To: Public CC: Followers

    Apparently Microsoft has finally changed the Windows 10 terminal colours from the traditional Windows 3.1 16 color palette to something a bit more readable.

    Unfortunately, GNOME Terminal doesn't exactly make it easy to set a custom palette. There's a lot of cool colour schemes in the world and a bunch of weird colour-scheme formats; it seems like there's a great opportunity for somebody to write a tool to convert between them.

    Aaaah, the wonderful world of Konsole and Yakuake 🀘

    JanKusanagi at 2018-12-12T13:05:37Z

  • 2018-11-03T04:22:47Z via Web To: Public CC: Followers

    Somebody filed a bug on a Python library I wrote ages ago, so I'm back in the Python ecosystem for a bit.

    I wanted to parse a filename from the command-line, and the standard library's argparse module has a FileType helper that does just that, and handles the "dash means stdin" convention and everything. Huzzah!

    Unless you need to read from the file in binary mode, in which case you get bitten by Issue 14156, created and a bugfix created in 2012 and not yet resolved. *sigh* ❌ likes this.

  • 2018-11-03T02:43:09Z via Web To: Public CC: Followers

    I've been on a real Coldplay kick recently. I know they're soulless pop music and (even worse) last decade's soulless pop music, but man, their first album is super-chill and easy-going and just a little bit wistful, and I keep coming back.
  • 2018-09-27T01:38:11Z via Web To: Public CC: Followers

    "cc1plus: warning: unrecognized command line option β€˜-Wno-unknown-warning-option’"

    Ah, software development. ❌ likes this.

    Well, at least in software development, the tool actually complains when there's something wrong xD

    JanKusanagi at 2018-09-27T01:47:10Z

  • 2018-09-20T23:43:25Z via Web To: Public CC: Followers

    An update on the Alacritty pasting thing: my issue got closed as a duplicate. Following links to other issues,
    • 2018-03-03: the problem is introduced (a regression)
    • 2018-05-08: the regression is reported
    • 2018-05-08: a PR is created fixing the regression
    • 2018-05-09: a concern is raised about the approach of the PR
    • 2018-05-11: the PR is updated, addressing the concern
    • up until today, four months later: crickets chirping
    Ah, open source. :/
  • 2018-09-20T04:13:08Z via Web To: Public CC: Followers

    The GPU-accelerated terminal "Alacritty" recently got updated to support scrollback, so my biggest reason for not wanting to try it out went away.

    McClane likes this.

  • 2018-09-14T08:14:51Z via Web To: Public CC:

    Currently trying out Sudo as a terminal font. I like how it's got a bit more personality than most monospaced fonts, but is nearly as crisp and compact as Envy Code R.

    McClane likes this.

    Good name, not at all confusing xD

    JanKusanagi at 2018-09-14T11:44:22Z

  • 2018-08-02T12:58:20Z via Web To: Public CC:

    I've been feeling down on myself recently because I've had all manner of programming stuff I wanted to achieve, but rarely got much done on any given day, and wasn't really enjoying it as much as I used to back in the day.

    Today I was plugging away, and to my surprise I was really getting into it - figuring out how to make things happen, trying stuff and learning. Then I said to myself "ah, but before I dive in and make changes, I should write a bunch of tests to ensure I don't cause regressions" and within twenty minutes of starting that, all my motivation had drained away again.

    I mean, I'm not going to *stop* writing tests, but maybe I need to figure out a way to interleave test-writing and fun stuff?

    Unit testing sounds like a real PITA xD

    JanKusanagi at 2018-08-02T13:42:41Z

  • 2018-06-06T06:02:49Z via Web To: Public CC:

    Spoiler: Debian comes with a lot of neat packages, and Wine is cool.

  • 2018-06-04T02:58:16Z via Web To: Public CC:

    The task-list feature in Evolution (GNOME's email client) defaults to showing both complete and incomplete tasks. There's a built-in filter to show only complete tasks, and one to show "active" tasks (whatever that means; apparently I have no active tasks), but apparently no option for "show me the list of things I need to do", so I added it myself as a custom search.

    Evolution doesn't bother to remember when custom searches are active, so every time I switch back to the "task" view, I have to choose it from the searches menu again.

    I get the distinct impression this feature is designed for a use-case I don't have, not for basic to-do tracking.
    OK, GNOME also includes an app called "gnome-todo" that reads the same task database (so all my tasks are already there), but (a) it defaults to hiding completed tasks, and (b) there's menu option for "clear all completed tasks" so right there that's a dramatic workflow improvement.

    Screwtape at 2018-06-04T03:03:53Z

  • 2018-05-23T12:34:42Z via Web To: Public CC:

    I'm trying to write a GTK+-based UI for my favourite terminal-based editor, Kakoune. Kakoune heavily uses its own completion menus, so I couldn't really use the existing GTK+ popup menus, but rather added my own that matched Kakoune's expectations.

    Under X11, this is fine and works beautifully.

    Under Wayland, well...
    • Wayland (or GDK's Wayland backend) tells every window its position is (0,0), so I can't make a menu change direction if it would pop up off the screen.
    • Wayland (or GDK's Wayland backend) always reports the full size of the monitor rather than cropping off the space used by launchers/docks/etc., so I can't prevent my menu from overlapping those either
    • Thanks to client-side decorations, when I ask "how big is my window" I get a rectangle whose origin is a little bit up and to the left of my actual drawing area, so my menu always appears a bit up and to the left as well.
    • GTK+'s built-in menus suffer none of these problems, because GDK provides a special function that does exactly what I want, but it's private and unstable so it's not listed in the documentation and I can't call it.
    I really thought that since GTK+ 3.x was declared stable, it'd be ready and complete by now. Maybe GTK+ 4 will actually work for me? ❌ likes this. ❌, ❌, ❌ shared this.

    Β» Screwtape:

    β€œ[...] Thanks to client-side decorations [...]”


    JanKusanagi at 2018-05-23T13:06:17Z

    Screwtape likes this.

  • 2018-05-15T13:48:54Z via Web To: Public CC:

    Ah, GTK+. I wanted to receive mouse-up events, so I connected a callback to the "button-release-event" event, and nothing happened. I added GDK_EVENT_BUTTON_RELEASE_MASK to my widget's event mask, and still nothing happened. Then I added GDK_EVENT_BUTTON_PRESS_MASK, and even though I didn't have a callback for it, my button-release events started firing.

  • 2018-05-09T12:17:49Z via Web To: Public CC:

    I'm guessing not a lot of people here will be interested, but just in case: if you're interested building software with Rust but the official "rustup" toolchain installer doesn't quite meet your needs, I've written a bunch of libraries to help you build your own, customised toolchain installer, and written an article that shows you how to put them together:

  • 2018-05-01T08:36:59Z via Web To: Public CC:

    You know what's super-awesome for writing prose documentation?
    • Using inotify-tools ("inotify-tools" in Debian) so that when I save a source file in my editor, the HTML version is automatically rebuilt.
    • Using livereload ("python3-livereload" in Debian) so that when the HTML version is built, it automatically reloads in my browser.
    I'd previously experienced livereload as part of the mkdocs site-building tool, but I only recently discovered that it was a separate thing I could use anywhere. Definitely making more use of this in the future.

    Ben Sturmfels, ❌ likes this. ❌, ❌, ❌ shared this.

    Similar to inotify-tools there's , which I love because of its minimal and very unix-philosophy interface. ❌ at 2018-05-02T03:58:02Z

    Screwtape likes this.

    Wow, entr looks super-handy!

    Ben Sturmfels at 2018-05-02T06:51:17Z