-
It looks like the early reviews of Apple’s Journal app from those who blog and journal already (in other words, those in the practice of writing regularly) is that the app is quite basic, and although the entry suggestions are nice, the writing experience is not as good as Day One. I guess that’s good news for Day One, in that there’s no risk of them being sherlocked.
But Automattic shouldn’t rest on their laurels. There are a few things I’d like to see them add to Day One, such as image captions (oh, I really wish for image captions) and maybe a nicer reading experience when you just want to browse your journal (the sidebar and editor just doesn’t work for me when I just want to browse the entries).
So, yeah, Day One position looks to be secure; but that’s no reason why it couldn’t be made better.
-
Iโm still really enjoying Matthias Ottโs Own Your Web newsletter. I recommend checking it out, even if youโve got a personal site. Each issue usually has some great links to other blogs and resources about maintaining a personal site.
-
I realise I’ve been posting a lot about Ivy, and not a whole lot about Archie. So to even the scales a little, here’s a video of Archie receiving a head scratch this morning.
-
Evening walk, with the currawongs out in force. This one was nice enough to let me take a photo.
-
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
contenteditableortabindex.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.
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?
-
๐ 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.
-
Conlextions #89
๐จ๐ฆ๐ฆ๐ฆ
๐ฆ๐ฆ๐ฆ๐ฆ
๐จ๐จ๐จ๐จ
๐ฉ๐ช๐ช๐ช
๐ฉ๐ช๐ช๐ช
๐ช๐ช๐ช๐ช
๐ฉ๐ฉ๐ฉ๐ฉ
Solve Time: 2 minutes, 5 secondsIf 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).
-
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-addressesitem 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.