• Evening walk, with the currawongs out in force. This one was nice enough to let me take a photo.

    Currawong in profile standing on grass
  • If you’ve checked out the 12 Days of Web (HT to @mandaris for sharing), and you were curious as to why popover is an attribute rather than a HTML tag, this section from OpenUI’s post about the feature explains the reason.

    In short:

    a content attribute allows behavior to be applied to any element

    while maintaining semantics of that element:

    Semantics are provided by elements, and behaviors are confered on those elements via attributes. This situation is exactly analogous to contenteditable or tabindex.

    Yeah, okay. I can see why it was done that way.

  • Looking at the Elm language after reading this post from Jim Nielsen. Looks interesting, especially the model-view-controller pattern it’s uses for building web UIs. Yes, it’s not an approach that’s unique, and yes, it’s more-or-less the same pattern as one would use with React and Redux1. But I like how it seems baked into the language design. Not sure if that is was an accident (such a pattern generally works well with functional languages) or intentional, but the language seems quite suited for it. I’d be curious to try it out.

    And that’s why I’ll never be rich: I’m not focused enough. One could argue that I don’t need to play around with another frickin’ technology, given that I’ve played with Stimulus, Svelte, and vanilla JavaScript recently; not to mention all the others I’ve tried. Best to use one and master it.

    But curiosity, and my magpie need to look at new shiny things, just gets the better of me. Plus that elusive sense of trying to find that “perfect way” of building web-based UIs that I’m sure most JavaScript frontend devs are looking for, even with the knowledge that no such way exists.

    Ah well. ๐Ÿคท

  • No system design survives first contact with the user.

    (with apologies to Helmuth von Moltke the Elder and Correlli Barnett, and probably a bunch of others).

    Today, I was the user.

  • Conlextions #95

    ๐ŸŸฆ๐ŸŸฆ๐ŸŸฆ๐ŸŸฆ
    ๐ŸŸช๐ŸŸช๐ŸŸช๐ŸŸช
    ๐ŸŸจ๐ŸŸจ๐ŸŸจ๐ŸŸฉ
    ๐ŸŸจ๐ŸŸจ๐ŸŸจ๐ŸŸจ
    ๐ŸŸฉ๐ŸŸฉ๐ŸŸฉ๐ŸŸฉ

    Solve Time: 2 minutes, 18 seconds

    Argh! So close to a perfect score.

  • A fun part of preparing for product demos is coming up with fanciful names for organisations. Today it was a video production house that specialises in “content”. I gave it the name “Content Mill Productions”. I even gave it a logo, using DALL-E.

    Generated DALL-E image of a logo for a fake organisation. Prompt: A corporate logo for 'Content Mill Productions'. The logo features an old-fashioned windmill, representing tradition and history, as the central element. Surrounding the windmill is a prominent banner with the studio's name 'Content Mill Productions' in a clear, professional font. The design is modern yet classic, combining elements of both to create a unique and memorable logo. The color palette is sophisticated, with a blend of navy blue, white, and a touch of gold to add a hint of elegance.

    Not that clever, but good enough for a demo.

  • I’ve been watching that YouTube video about plagiarism that was mentioned on the latest episode of Shop Talk (some other podcast I listened to recently may have also mentioned it, although I can’t remember which one). I’m only an hour in โ€” it’s more than 3 hours long so it’ll take me a couple of days to watch the whole thing โ€” but it’s been fascinating. It’s quite something to see how blatant some of these cases of plagiarism are. ๐Ÿ“บ

  • Some follow-up on my Docker issues. Found that setting concurrent downloads to 1 and bumping up max retries helped stabilised the pull a bit. It was then possible to let the download run in the background with (some) confidence that it was less likely to die on me. Details posted on Working Set.

  • Wish Docker’s image pull was smarter. Any download failure will cause the command to exit, even if other downloads are in progress. It also re-downloads images that were already pulled and extracted in the last invocation. Can’t it just reuse downloads it got five minutes ago? Is that so hard?! ๐Ÿ˜ 

  • Looking forward to hearing more about Apple’s new Journalling app. I have no good reason why: it’s very unlikely I’d start using it myself. But I am curious to see how it measures up to Day One. I’m also curious to know how portable the entries are, whether you can export them to other apps.

  • Never underestimate the software project that works. It might be the crappiest bit of code you’ve ever written; if it does the job, it’s worth 10x the code you haven’t written, even with your grand designs of quality code.

    Relatedly: try to get the system you want on the first version.

  • Today’s infrastructure related question: is the water level of this (artificial) lake too high, or is the bridge just too low?

    An artificial lake, covered in some form of red water plant, with a road bridge that is about 50 cm close to the water line.
  • ๐Ÿ”— Link previews or ads

    Itโ€™s thoughtful posts like this that keeps me on Micro.blog.

    Also, chalk me up as one whoโ€™d rather keep link previews out of the timeline. I posted a link in Discord and the preview was so obnoxious I wish I could hide it (really Discord? Why canโ€™t I hide it?).

  • Ivy’s been soliciting for head scratches by rubbing her head over people’s palm. It’s a technique that tends to work.

    A while cockatiel on an open palm with her head resting on the fingers. The photos taken within a room.
  • Conlextions #89
    ๐ŸŸจ๐ŸŸฆ๐ŸŸฆ๐ŸŸฆ
    ๐ŸŸฆ๐ŸŸฆ๐ŸŸฆ๐ŸŸฆ
    ๐ŸŸจ๐ŸŸจ๐ŸŸจ๐ŸŸจ
    ๐ŸŸฉ๐ŸŸช๐ŸŸช๐ŸŸช
    ๐ŸŸฉ๐ŸŸช๐ŸŸช๐ŸŸช
    ๐ŸŸช๐ŸŸช๐ŸŸช๐ŸŸช
    ๐ŸŸฉ๐ŸŸฉ๐ŸŸฉ๐ŸŸฉ
    Solve Time: 2 minutes, 5 seconds

    If Mike Oldfield released “Mistake” as part of Crises (and in the 1960s instead of the 1980s), I probably would’ve gotten a better score. ๐Ÿ˜›

  • It’s going to be one of those days where it feels like I’ll get nothing productive done. Where I’m just running about trying to address problems in our Dev environment so I could use actually use the thing we’re building. Maybe I should take any attempt to reverse entropy in any way as a win. ๐Ÿ˜ฎโ€๐Ÿ’จ

  • Test Creek: A Test Story With Evergreen.ink

    Had a play with Evergreen.ink this afternoon. It was pretty fun. Made myself a test story called Test Creek which you can try out (the story was written by me but all the images were done using DALL-E). The experience was quite intuitive. I’ve yet to try out the advanced features, like the Sapling scripting engine, but the basics are really approachable for anyone not interested with any of that. Continue reading โ†’

  • ๐Ÿ”— PlayStation is erasing 1,318 seasons of Discovery shows from customer libraries

    The realization has forced people to more deeply scrutinize their digital media purchases and subscriptions and how they value digital content. It’s also leading to calls for investment in hard copies of media.

    I still believe that it’s possible to have a (semi-)perminenant representation of media in the digital realm. You just need to make sure it’s in an open, non-DRMed, file that exists on your file system. I know, easier said than done. But it might be time for me to be better here than I have been.

  • ๐Ÿฅ›๐Ÿฆœ

    Should state that both vessels hold ordinary tap water.

  • Amusing to see myself signing up to a new service. They either donโ€™t offer to save my billing information, or they do and Iโ€™m like โ€œNEVER!โ€ Then I start using it and liking it. Eventually I start getting low balance reminders and Iโ€™m like โ€œwhy didnโ€™t you offer to save my billing information?โ€ ๐Ÿคฆโ€โ™‚๏ธ

  • Another, slightly modified, DALL-E image. This one’s based on real events (i.e. what happened today during my walk).

    A slightly modified DALL-E image. Prompt: an old industrial sign, like one seen in a factory. The sign should have an icon of a person with a hard hat on in silhouette. To the right should be black text days since I hit my head on a log. Below that is a metal card with the number zero. The zero be made to look like it's removable, like it's on metal pegs.
  • Spent a little more time working on my idea for Dynamo-Browse this week. Managed to get it somewhat feature complete this weekend:

    I probably should say a few words on what it actually is. The idea is to make it quick and easy to run pre-canned queries based on the currently selected item and table.

    Let’s say you’ve got a table with customer information, and another table with subscription information, and they’re linked with some form of customer ID. If you wanted to see the subscriptions of a customer, up until now, you’d have to copy the customer ID to the paste-board, change the currently viewed table, then run a query to select the subscription with that customer ID. It’s not difficult but it’s extremely tedious.

    This change is meant to streamline this. Now, in a script function, you can define a “related item” provider which, if matched against the currently displayed table, will be given the currently selected item, and will return a list of queries that will display items related to the current item (depending on whatever definition of “related” will be). This will be presented to the user as a list. When the user chooses the item, the query will run and the results will be displayed.

    Here’s an example of the script used for the screencasts:

    ext.related_items("business-addresses", func(item) {
        return [
            {"label": "Customer", "query": `city=$city`, "args": {"city": "Austin"}},
            {"label": "Payment", "query": `address^="3"`},
            {"label": "Thing", "table": "inventory", 
                "query": `pk=$pk`, "args": {"pk": "01fca33a-5817-4c27-8a8f-82380584e69c"}},
        ]
    })
    
    ext.related_items("inventory", func(item) {
        sk := string(item.attr("sk"))
        return [
            {"label": "SK: " + sk, "table": "business-addresses", 
                "query": `pk^=$sk`, "args": {"sk": sk}},
        ]
    })
    

    Notice how the last business-addresses item specifies the “inventory” table, and that the “inventory” provider actually uses an attribute of the item. Here’s a screencast of that working:

    This feature has been on the idea board for a while. I was trying to work out how best to handle the pre-canned queries, especially considering that they will likely be different for each item and table. Some ideas I had were adding additional UI elements that the user could use to configure these queries. These would go into the workspace file, a sort of an embedded database which is created for each session. This was pretty crappy, especially when you consider that workspaces usually only last until the user exists. It was only a few weeks ago when I considered using the scripting facilities to implement this (which, honestly, shows how much it remains under-utilised).

    Anyway, I’ve only just finished development of it. I’d still like to try it for the various related items I tend to use during my day-to-day. We’ll see how well it works out.

  • Walked the Tuggeranong Lake this morning. Perfect day for it. The Eurasian Coots were making the most of it.

    Large flock of Euroasian Coots swimming towards a pier of which other birds were preening. Buildings and a footbridge by the waterline in the background. Close up of the Euroasian Coots.
  • ๐Ÿ”— Hardcore Software 065. SharePoint: Office Builds Our Own Server (link pay-walled)

    Yes, believe it or not, Iโ€™m reading about how SharePoint was built. I never had a lot of experience with SharePoint myself: although I did work at places which used it, I tried to stay away from Office documents as much as I could, sticking to things like wikis. And yes, I can understand why others may find it pretty crummy (the post gives a few examples of how crummy). But I did find some ideas SharePoint had quite interesting, such as the “everything is a list” concept. I do appreciate this consistent through-line in the product design, much like Unix’s “everything is a file” philosophy. I also like the fact that this extends to user-defined lists, like a very simple database.

    Anyway, this paragraph caught my eye:

    The idea of Office extended by a website for each Office user and team was incredibly important simply because it made using Office better. It was also a vision we had from the time we acquired FrontPageโ€”everyone should have their own place on the web where it is easy to keep their work and share it with others. We were clearly too early. As we will see it was not just that the world was not ready, the world was anti-ready. SPS fit with the products of the era that remained top-down, complex, and under the full control of IT.

    I yearn for the day when organisations make it easy for any employee to whip up an internal webpage for their team. Documents and wikis are nice, but theyโ€™re just so limiting in how they show information. The freedom to use real web technologies to present something as best you think you can, while also keeping the data โ€œin houseโ€ (password protected, stored on servers the company controls, etc) is just an area on office tech that’s missing.

    Case in point: I would love to be able to build a website showing the the status of backlog items that I can share with my team. I donโ€™t want to manage the raw data myself: thatโ€™s all being tracked in Jira anyway. But Jira sucks, and itโ€™s really difficult to show an overview of work, especially when they span multiple epics. Having something like a simple dashboard which will pull Jira ticket status and display them as maybe progress bars would be great.

    But where am I to host this? Probably not best to do so on the open web.

    See also the idea of small databases.

  • Notice this eastern bearded dragon on my walk today. Not something I usually see during my day to day (granted, I’m not walking my usual routes at the moment). It certainly saw me though.

    An eastern bearded dragon on the ground in the alert pose