-
🔗 Daring Fireball: OpenAI Help Center Describes What Is Wrong With the New ChatGPT
These three paragraphs, from OpenAI’s own Help Center, sound more like a critic’s scathing review of what’s wrong with the new ChatGPT “super” app than a guide to how to use it.
I read those paragraphs and was reminded of the complex feature sets that came from various flavours of commercial software from the 90’s, usually from Microsoft. Here’s an AI slop impression:
-
Was writing “Airbus” in a message and mistakenly typed a P instead of a B. Found the results amusing, so I fired up ChatGPT’s image generator:
-
Okay, I too tried out ChatGPT’s new image generator, mainly it’s graphics design capability. Got it to generate a logo for our bocce club. I’m impressed by the results: it’s pretty much what I imagining.
-
It lives!
-
Playing Around With MacOS Image Playground
Trying out MacOS Image Playground. Continue reading →
-
Gallery of Fake Logo For Test Organisations
A collection of humorous fake logos for test organizations is created for work-related purposes, primarily showcasing film and media production studios. Continue reading →
-
Two weeks ago, I tried that GenChess thing that Google Labs released. When prompted, I asked for a chess set to be made with pieces resembling Australian birds. What it produced was a little underwhelming, but I was curious to know what Gemini itself could produce when prompted for a single piece: an image of a pawn shaped like a cockatiel.
Here’s the prompt:
Please generate a photo realistic image of a 3D pawn chess piece which looks like a cockatiel. The piece must look like it is made with wood. The image must be generated with a white background and with a parallel projection.
And here’s the result:
Not bad. Certainly better than what I could produce. And it’d be fun playing with such a set should one actually existed1.
It got me thinking as to what birds I’d choose if such a chess set were made in real life. My current idea is cockatiels as pawns, emus for kings (large and mobile, and important enough for such a role) and maybe cassowary as queens (also large and mobile, and actually quite dangerous in real life). I haven’t got positions for the other roles just yet.
-
Might be that such a set does. I haven’t actually looked. ↩︎
-
-
One other thing I did was finally address how galleries were being rendered in RSS. If you use the Glightbox plugin, the titles and descriptions get stripped from the RSS. Or at least it does in Feedbin, where all the JavaScript gets remove and, thus, Glightbox doesn’t get a chance to initialise. I’m guessing the vast majority of RSS readers out there do likewise.
So I added an alternate shortcode template format which wraps the gallery image in a
figuretag, and adds afigcaptioncontaining the title or description if one exists. This means the gallery images get rendered as normal images in RSS. But I think this sacrifice is worth it if it means that titles and descriptions are preserved. I, for one, usually add description to gallery images, and it saddens me to see that those viewing the gallery in an RSS reader don’t get these.Here’s the shortcode template in full, if anyone else is interested in adding this:
<!-- layouts/shortcodes/glightbox.xml --> <figure> <img src="{{ .Get "src" }}" {{ if .Get "alt" }} alt="{{ .Get "alt" }}" {{ end }} {{ if .Get "title" }} title={{ .Get "title" }} {{ end }} /> {{ if or (.Get "title") (.Get "description") }} <figcaption> {{ if .Get "title" }} <strong>{{ .Get "title" }} {{ if .Get "description" }} — {{end}}</strong> {{ end }} {{ .Get "description" | default "" }} </figcaption> {{end}} </figure>I’ve also raised it as an MR to the plugin itself. Hopefully it get’s merged and then it’s just a matter of updating the plugin.
-
Removing personal identifying information from logs is a laudable goal, but it does make troubleshooting issues in prod rather difficult.
Source of meme image -
And that makes it the third time this week that I encountered a bug involving DynamoDB that was avoidable with a unit test that actually used a proper database.
(To be fair, this time is was my fault: I haven’t got around to writing the unit test yet).
-
I’ll bring the lighter fluid. #burn-all-computers-to-the-ground
(sorry, it’s been one of those days 😼).
-
Phograms
Originally posted on Folio Red, which is why this post references "a new blog".
Pho-gram (n): a false or fanciful image or prose, usually generated by AI*
There’s nothing like a new blog. So much possibility, so much expectation of quality posts shared with the world. It’s like that feeling of a new journal or notebook: you’re almost afraid to sally it with what you think is not worthy of it.
Continue reading → -
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.
-
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.
I would recommend not writing too much on a single card. Keep it to maybe two or three paragraphs. Otherwise the text will start to flow over the image, like it does on one of the cards in this story. Evergreen.ink does keep the text legible with a translucent background. But still, it’s just too much text.
Continue reading → -
Another, slightly modified, DALL-E image. This one’s based on real events (i.e. what happened today during my walk).
-
Got an idea for a new feature for Dynamo-Browse. Began working on it this evening, starting with the UI:
Recorded using VHS.
-
Trying out the image generator in ChatGPT (which I think is just DALL-E). A few friends of mine will get this reference.
Prompt: an image of a griffin playing bocce in the park with two other people. -
This conversation with @Gaby got my creative juices flowing so I though I’d put together a small video tutorial for using the GLightbox plugin by @jsonbecker. There have been a few updates with the plugin so how I use it might be slightly out of date. Either way, please enjoy.
-
After having some success getting my early QBasic programs running in the browser I had a bit of a look this morning to see if I could do the same for my Delphi apps. I found a project called BoxedWine which looks promising. Seems to be a minified version of Wine that that runs in browser using WASM.
I downloaded the example and had a bit of a play around with a Tetris clone I built. It worked… to a degree. It was a little slow, and some of the colours were off. But it ran, and was actually usable.
I did another test with an app that used OpenGL, which was less successful.
I think some of the OpenGL shared objects are not in the minified Wine distribution it was using. It might be possible to include them: there are instructions, and a few demos, on how to load files from the full Wine distribution on demand.
Anyway, not sure if I’ll pursue this further but it was a fun little exercise nonetheless. I’m pretty impressed that this is even possible at all. The Web stack is pretty freaking awesome.
-
Spent some time today building a site for my Go utility packages. A feature I’ve decided to add is a Go template playground, where you can test out Go templates in the browser. Not something I’ll use everyday but I’ve occasionally wished for something like this before. Could be useful.
-
Early Version of This Blog
I was looking for something in GitHub the other day when I found the repository for the first iteration of this blog. I was curious as to how it looked and I’d thought that I’d boot it up and post a few screenshots of it.1
It started life as a Hugo site. There a two reasons for that, with the first being that I didn’t have the patients to style a website from scratch, and Hugo came with some pretty nice templates. I chose the Vienna template, which seems to have fallen out date: many of the template variables no longer work with a modern version of Hugo. I’m also please to see that I did end up customising the header image — a photo taken in Macedon of the train line to Bendigo — although that’s pretty much all I customised.
Continue reading → -
Lava Stream
Another random hack today, but this one sort of developed over the week.
It all started last Monday. I was doing an exploratory task around single-sign on. I read Scripting News that morning, and I was thinking about the style of writing Dave Winer has adopted for his blog: short notes made across the day, sort of like a running commentary on what he’s working on and what his thinking. I wondered if this would work for my job: having a way to write your thoughts down, even if they’re rough, so you can build atop them. Also works when you need to look back on what you were thinking or working on later on.
Continue reading → -
A Lisp-based Evans Wrapper
I wanted an excuse to try out this Lisp-like embedded language Go library that was featured in Golang Weekly. Found one today when I was using Evans to test a gRPC endpoint and I wanted a way to automate it. Hacked up something in 30 minutes which takes a method name and a Lisp structure, converts it to JSON and uses Evans to send it as a gRPC message.
As the afternoon progressed, I added some facilities to send HTTP GET and POST methods with JSON request bodies, plus some facilities to set some global options.
Continue reading → -
I got a little bored today so I added task progress indicators to this Obsidian roadmap thing I built for work.
What the task progress indicators look like. When a task is created, but is not yet scheduled, it appears as an outlined rectangle. It turns into a grey rectangle when it’s added to the sprint. It then changes colour as the task progresses through the software lifecycle; turning purple while it’s being developed, blue while it’s being tested, and finally green when it’s ready for release.
They’re implemented as embedded SVG images, added directly to the note much like the span element used for status labels.
Move the insertion point over the the SVG image to edit the markup. It’s nice being able to add embellishments like this. Obsidian treating notes as regular files on the file-system is a huge advantage for these sorts of automations. No need to learn how to make a plugin; just write a shell script1 that’ll output Markdown, schedule it to run a couple of times a day, and you’re good to go.
-
Mahjong Score Card Device
I’ve recently started playing Mahjong with my family. We’ve learnt how to play a couple of years ago and grown to like it a great deal. I’m not sure if you’re familiar with how the game is scored, and while it’s not complicated, there’s a lot of looking things up which can make scoring a little tedious. So my dad put together a Mahjong scoring tool in Excel. You enter what each player got at the end of a round — 2 exposed pungs of twos, 1 hidden kong of eights, and a pair of dragons, for example — and it will determine the scores of the round and add them to the running totals. It also tracks the winds of the players and the prevailing winds, which are mechanics that can affects how much a player can get during a round. The spreadsheet works quite well, but it does mean we need to keep a bulky laptop around whenever we play.
Continue reading → -
Shutting Down Blogging CMS
Ditching the CMS I was using for this blog is actually quite liberating. It means I don't have to spend any time trying to bridge the feature gap for what I need for a basic blogging CMS, and could focus on other projects. For example, I spent this evening working on "awstools": mainly coming up with a new name for it. I really can't use "awstools" as AWS is a trademark.
Continue reading →
-
The Podcast Favourites App
In today’s issue of “useless apps that nobody but me would want to use”, I’ve managed to get a version of the Podcast Favourites app built and deployed. I’ve been using it for the last few weeks and it works quite well.
Here are some screenshots of it, starting with the main screen you see when you log in:
As you can probably guess, I listen to a lot of ATP. 😁
Continue reading → -
An idea for that micro-bulk-image tool: instead of prioritising uploads, maybe prioritise processing of already uploaded images. Things like cropping, optimising, etc. after the upload, and then re-uploading it.
-
Hmm, I’m wondering if Broadtail needs a mode for downloading the audio of a video only, and uploading it to a podcasting service like Pocketcasts. I did this twice before, and now wish I can do it again. Third time is when a pattern is emerging.
Also, a bit of a deviation to finish the current work outstanding for Feed Journaler. Much of it is trying to get the Markdown translator working with Write.as post, mainly to deal with posts without titles, and to strip any hashtags that appear in the first and last paragraph. The code is a real mess. I should probably spend some time cleaning it all up.
-
A snapshot of the indie-web style project mentioned yesterday:
This is just static HTML and JavaScript at the moment. The idea is that each of these “cards” can be rearranged by direct manipulation. So I spent most of this morning trying to get drag and drop working in JavaScript.
After hooking up
dragenteranddragleaveevent listeners to the Stimulus controllers bound to each of the cards, I found that the controllers were getting enter and leave events continuously as the dragged element was moved over them. These enter and leave events occurred almost immediately, making it difficult to indicate a drop-zone just by reacting to the events themselves. Setting a class on enter and then removing that class immediately on leave meant that the class was never shown.Turns out this is because the events were being sent for all the subelements of the card. Moving the dragged element from the card padding to the text field resulted in an enter event for text field, followed immediately by a leave event on the card element.
This means that in order to do any form of indication, some element tracking is required. I’m currently using a counter to do that, which will increment by one when a
dragenterevent is received and decrement by 1 ondragleave. It sort of works — I’ve got to fix it when the drop event occurs — but I get super concerned about the counter getting out of sync and the indicator being stuck “on” when the dragged element is completely outside it.One other thing I could try is having some form of set tracking each of the entered and exited elements and using the set length to determine whether to show the indicator. I trust that the browser will guarantee that a
dragleavewill always follow adragenterevent sent to the element. 🤔 -
Revising the micro-bulk-uploader project. I’ve been reading a lot about IndieAuth and Micropub formats and I got really excited about it. I figured this would be a good project to try them.
In short, this is a bulk image uploader. It’s primarily tailored for Micro.blog, but since these formats are standards in a way, there’s no real reason why it couldn’t work for other services.
Basically, the idea is this:
- User authenticates with their website.
- They are presented with a set of file uploads, which they can used to prep their images. They can reorder their images (ideally using drag-and-drop) and write some alt text.
- Once they’re happy with the images, they click “Upload”.
- The server will upload the images and then generate the HTML to produce a gallery (or just a list of images if they so prefer).
I have a few goals for this project:
- To ship a hosted service for others to use. The goal is to get into the practice of shipping software for other people. This is the principal goal: it must be usable by others. Otherwise, there’s no point doing this.
- To get a working version out the door in two weeks for others to start trying. Two weeks is April 1st, which should be achievable.
- To learn about the Indypub formats, specifically IndieAuth and Micropub.
-
I think it’s time to close the “Untitled Summer Project”, the service I was working on to upload files to S3 for publishing on Drummer.
The goal — despite not being entirely public — was to have a service that could be used by others to upload images to S3 for the purpose of publishing them to their blog, particularly blogs published using Drummer and served through Old School. I was hoping to have something that I could share with others by the end of Summer.
Well, now it’s Autumn, and I’ve made very little progress on it since early February. So it’s time to cut my losses and shut it down.
I think there were a number of factors that resulted in the failure of this project:
- I wasn’t using it enough to get excited about it. I mean, I was using to manage my uploaded pictures for workingset.net, but I was only doing so occasionally.
- Apart from not using it, I wasn’t getting much out of the project itself. There wasn’t anything exciting about the project from a purely coding standpoint (apart from doing image resizing in the browser using WASM, which might come in handy for some other projects), and if I was getting nothing from using the project myself, there was no other intrinsic motivation to continue working on it.
- I was planning to move on from Drummer and Old School as a blogging platform. I figured giving write.as a try, which also has image hosting, so there was no real need for it anymore.
I think what I need to do for any project that I hope to share with others, I need to share it with others much earlier than when I was originally planning to. I think that feedback from others using it is important for driving the project forward, particularly if I am not getting that drive from using it myself.
-
A Tool That (Almost) Solved My Step Function Woes
I reached the end of my tether at work today on the task I was working on. The nature of the task involved crafting an AWS Step Function with several steps. Each step on the critical path contained some error handling, and several of them contained some cleanup logic, that had to be called by a bunch of other steps. This cleanup sequence is relatively complicated, and I’ve raised a number of PR’s to my colleagues which have come back with requests for change.
Continue reading → -
One week to go! 💉💉
-
Trying my hand at logo design for something I’m working on. I’m aiming for something that looks like a mix between a bookmark, the letter D, and something to suggest synchronising stuff. This is probably the best I’ve got so far.