UX Design, UI Design & Front-end Development. Technically a cyborg.
Espresso and open source hardware?
Making an espresso machine from (almost) scratch.
The majority of internet users aren't developers, so outputting the HTTP error code and its name (503 Service Unavailable) isn't good enough.
System font stack CSS organized by typeface classification for every modern OS
This is a really impressive feat, and the ultimate asymmetrical VR experience!
The process of making a multiplayer-cross-platform video game that has parts that run on everything from a tiny microcontroller to a high end VR setup
This is how the cover art of Defender of the Crown (1986) was made
I've posted a short blog post about shutting down Dingoonity.org after 14 years https://
I've jumped on the ChatGPT bandwagon lately. Using Open AIs implementation. I can see how conversational interfaces are going to revolutionize the way we use search.
Take my example from today - I wanted to batch convert a directory of PDF files to PNG:
How can I easily convert a directory of pdf files to png
You can use an open-source command-line tool called "ImageMagick" to easily convert a directory of PDF files to PNG images. Here's how to do it:
Install ImageMagick: You can download ImageMagick from their official website and install it on your computer.
Open a command prompt or terminal: Navigate to the directory where your PDF files are located.
Run the following command:
magick mogrify -format png *.pdf
This command will convert all the PDF files in the current directory to PNG format. The converted PNG files will have the same name as the original PDF files, but with the .png extension.
If you want to convert the PDF files to a different image format, such as JPEG, you can simply replace "png" in the command with "jpg" or the desired image format.
Note that ImageMagick can also be used to convert individual PDF files to PNG images by using the "convert" command. Here's an example:
magick convert example.pdf example.png
This will convert the file "example.pdf" to a PNG image called "example.png".
how would I set the output resolution?
To set the output resolution for the converted PNG files, you can add the -density option to the ImageMagick command. The -density option specifies the number of pixels per inch (PPI) for the output image. Here's how to set the output resolution to 300 PPI:
magick mogrify -density 300 -format png *.pdf
This command will convert all the PDF files in the current directory to PNG images with a resolution of 300 PPI. You can adjust the resolution to a different value by changing the number after the -density option.
Note that the output image size will depend on the original PDF file's dimensions and the resolution you set. If the PDF file is large, the output PNG file may also be large in size. You can also use the -resize option to resize the output image to a specific size after converting it.
How would I make the transparent areas of the converted images be white?
To make the transparent areas of the converted images be white, you can use the -background and -alpha options in the ImageMagick command. Here's an example command that sets the transparent areas to white:
magick mogrify -background white -alpha background -flatten -density 300 -format png *.pdf
This command does the following:
-background white: sets the background color of the image to white.
-alpha background: tells ImageMagick to treat transparent areas as background.
-flatten: merges the alpha channel with the background color to create a fully opaque image.
-density 300: sets the resolution of the output image to 300 PPI.
-format png: sets the output format to PNG.
Visual design rules you can safely follow every time
I finally got around to publishing a blog post about the movies I watched in 2022.
Will Wright on Designing User Interfaces to Simulation Games
The Mystery of the Dune Font
Putting a name to the typeface that defined the visual identity of the science fiction series and its author, Frank Herbert
This seems like a useful tool. Lots of information that is usually a pain to compare!
Carsized: Compare car design and dimensions in a Virtual Showroom
I spent some time this evening fiddling with the UX of VR website. Pruned some dead links, de-Twittered the site, and added some multi-column goodness for wider screens.
I really wish I had the time/energy to add more content these days, but alas.
Anyway, check it out here: https://
Create better designed games with these comprehensive guidelines that feature classic design principles combined with modern accessibility standards.
This really does seem handy!
Shopify/handy: The eastiest way to mocap your hands! We developed this tool in order to streamline the process of capturing hand movements from Meta Quest headsets and bringing them into Blender for use in animations.
Remaking Old Computer Graphics With AI Image Generation Can AI Image generation tools make re-imagined, higher-resolution versions of old video game graphics?
How many layers of UI inconsistencies are in Windows 11?
When to hold ’em and when to fold ’em: Adding a hinge to a Game Boy that God never intended
Over 16,000 people still using their Pebble watches! I still go back to my Pebble Time from time to time 🥁
Some great points! 👍👍
Why is VR more restrictive than my 27” monitor? Doesn’t that defeat the entire point?
Being able to manipulate and configure the environment in a way that is comfortable and bespoke to a user is probably the best end goal. Once we've gotten over the novelty of the new interaction paradigms, maybe this will become the norm.
We should be looking to VR headsets as an alternative to standard displays. The default for an experience should not be a full body workout.
One of the most limiting factors for me as a healthy type-1 diabetic is having a blood sugar crash after 30 minutes of using my full body as a controller in a game.
Monocraft A programming font based on the typeface used in Minecraft
DOOM as you didn't realise you needed it!
Voxel DOOM: A mod that replaces 2d characters and props from Doom with fully 3d voxel-based models.
These are all amazing game UI/UX resources.
The best collection of the most beautiful, exceptional and inspiring video game interfaces and screenshots.
Explore a collection of video games interfaces, screenshots, and clips. Take a look at all the fragments that make up a video game, and find inspiration for your designs.
The Game UI Database was created as a free resource for UI/UX Designers in the games industry. It was built to aid in the discovery of new inspiration, and to provide a fast and efficient way of searching for reference materials.
Following on from the essential games user reading list; this post is an introduction to some of the fantastic video resources available online. Ranging from 101 introductions to in-depth guides, ‘day in the life’ and more – video resources are a useful for learning about UX and games user research (GUR) alongside books, articles, and classes.
Open Source Game Clones
Open-source or source-available remakes of great old games in one place
Making a Video of a Single Window
PHONK is a coding playground for new and old Android devices.
Peter Howell of the BBC Radiophonic Workshop demonstrates how he reimagined Ron Grainer's classic Doctor Who theme [using] modern polyphonic analogue synthesisers like the Yamaha CS-80, an ARP Odyssey Mk3 and a Roland Jupiter-4, a vocoder and an old, malfunctioning phase shifter unit he found in the back of the Workshop.
So, here’s a bit of a mystery: Why does TeamViewer – the popular remote desktop program – install a font it doesn’t use on your computer?
Where Browsers Come From The economics around browsers, and what we should think about as we move forward.
One of many default browser styles that I always change!
All browsers add an 8px margin on the body element – it’s part of the w3c-recommended default stylesheet which browsers generally use as a starting point for their own ‘user agent’ styles. But why 8px? Where does that come from?
MacintoshPi is a small project that allows running full-screen versions of Apple's Mac OS 7, Mac OS 8 and Mac OS 9 with sound, active Internet connection and modem emulation under Raspberry Pi.
Defensive CSS Practical CSS and design tips that helps in building future-proof user interfaces.
A small tool (rsspls) to generate RSS feeds from web pages that lack them. It runs on BSD, Linux, macOS, and more.
🙈 I do not need more tech. I do not need more tech!
Pocket Reform is a 7 inch mini laptop from MNT Research. We condensed the best features of MNT Reform into a smaller, lighter, and more affordable device while adding some new exciting details.
Yes getting it all up and running is challenging, but when it works it feels like magic and the enthusiasm of the community makes it worth it!
We have the technology to implement a slow social network of personal sites. I’m excited to keep playing with that code. But proving the concept is not the same as actually making it easy & accessible in a way that can replace platforms.
🥳 though I can't help feeling uncomfortable by how smooth Clarus is.
Did you know that with macOS Ventura, Clarus the Dogcow has at long last returned home?
Game Design Mimetics (Or, What Happened To Game Design?)
For my own reference, to find/replace the linked mastodon post for a post on Known in MySQL:
update entities set contents = replace(contents, 'old-post-id', 'new-post-id');
I might want to add the mastodon link to the post edit UI to be a bit more robust...
Love the pixel art on this. The technical side of things is super interesting too!
Discussion on HN: https://
New episodes of Airquotes the Podcast Airquotes from the May 2022 #RemoteHack are up!
Hamburger Footer: Reaching the Bottom of Infinite Scroll
More than you ever wanted to know about font loading on the web
How classic Sierra game graphics worked (and an attempt to upscale them)
That little Sega CD add-on is the cutest thing ever.
Testing new web mention stuff
👋 Thanks for mentioning!
I love everything about this. 😍
Electronic Catan LCD Tiles: A collection of hexagon tiles that magnetically snap together to create a Settlers of Catan board of any shape or size. Each tile features a large round LCD and a custom magnetic pogo connector on each edge. Linking up a bunch of tiles creates a position-aware partial mesh network.
I make web stuff all day every day. This is refreshing! 👏
Intro to the Web Revival #1: What is the Web Revival?
📅 Tomorrow it's #RemoteHack from 9:30 AM BST
🫂 Join in from wherever you are! 👉http://
📢 There might be new periodic Airquotes The Podcast Airquotes recordings: https://
📣 A new blog post: Using a Raspberry Pi to Host a local Visual Studio Code Server
The forgotten benefits of “low tech” user interfaces https://
Man, 90s appliance UIs were a ride!
About the Dual MN 8010, the remarkable retro stereo set you've never heard of, that has a GUI (Graphical User Interface).
The Nightmare Of Getting DOOM Running On A Serious Business Machine ...
"Using alt text properly" (2013)
"When should alt text be blank?" (2012)
Well this DALL-E 2 is insane! Going to have to be even more critical/sceptical when consuming content...
"My deepfake DALL-E 2 vacation photos passed the Turing Test"
This is a great build log for converting a garage to a habitable workshop space.
Feeling bad that I've not done anything close to this with my garage yet!
These are some great a11y tips, and great explanations/examples too!
See also: https://
Tomb Raider Reflection Effect: How it works
I've still got a couple of unused branded notebooks from conferencing 5 years ago! Saying that, I'm always happy to receive free stationary...
Some notes/thoughts in response to https://
Sorting your CSS property declarations is fine, and tools such as StyleLint  have plugins  to make adhering to this goal a lot easier. If you're already pre-processing (or post-processing) then it should be easy to add StyleLint to your workflow.
In my opinion, Sass mixin includes should come after the other CSS properties in a declaration block. If you're overriding the styles in a mixin, your mixin could probably do with some more parameters, or the use of the content block .
Vendor prefixed properties should come before the unprefixed property (-moz-foo, -webkit-foo, foo), grouped together (-moz-foo, -moz-bar, -moz-baz, -webkit-foo, -webkit-bar, -webkit-baz, foo, bar, bar). Keep the prefixed/unprefixed properties together to reduce the cognitive load for whoever comes back to this codebase later. The unprefixed property should always come last because that will be applied if the browser supports it (even if the prefixed syntax was already applied) .
Alternatively, you could use Autoprefixer  and never have to write out all of the prefixed properties ever again 🤷
Anyway, tooling helps. Modern browsers are smart. You'll rarely hit any of the fun things we used to have to deal with when IE was a dominant browser. You shouldn't need to spend too much time thinking about cosmetic changes to your code. Besides the CSS cascade  (declaration order, specificity, etc.) everything else is irrelevant.
I've been using a couple of these tools for a while now with Windows 10. Great to see such a detailed overview of the whole suite!
PowerToys - 11 awesome features Microsoft won’t add to Windows: https://
"Building like it's 1984: Scrollbars in web applications" https://
Great use of CSS variables to set inheritable aspect ratio styles!
"Building a combined CSS-aspect-ratio-grid" https://
Giving this a go, as I'm already using Hyper-V with some guest OS' on this machine I had to fiddle with the Virtualbox settings to get the installer going, but it seems to be working‼
"Push-button installer of macOS Catalina, Mojave, and High Sierra guests in Virtualbox for Windows, Linux, and macOS" https://
⌚ Lots of information about 7 segment displays, and some alternative designs
Play it: https://
Other social networking options are available!
15-20 years ago I'd have said forums were the best social network, I spent countless hours on forums such as Neowin/Hydrogen Audio sharing and discussing Windows XP customisation, Foobar2000 configs and making a lot of friends off of that niche interest. I still keep in touch with one or two of them today.
Beyond that, Twitter just became another touch point for these early forum connections (and then eventually the predominant touch point). It was always nice to rediscover old acquaintances.
Blog engagement has always been secondary for me, but I guess that's due to using Twitter as the main sharing/discussion point rather than hosting comments.
Offline, local Meetup groups, and then Slack/Discord discussions relating to those groups, have been a great way to grow ones network of friends.
I'm finding that moving to Webmentions/ Indieweb/ Fediverse/ Mastodon and hosting my own social feed as i do on social.omgmog.net seems to have more of a community buzz.
I suppose as a Jekyll/Github Pages user I've grown used to the levels of redundancy afforded by using the platform, and it's pretty neat for my development process to be so transparent (if anybody is bothered to look!)
If you're using Github and have a good number of followers, you also get a bit of syndication for free in the form of your commits showing up on your followers' timelines.
The only downside I've found is that I tend to have multiple drafts, on multiple clones of my blog repository across multiple machines, and I tend to lose stuff if I don't finish writing and publish in a timely manner!
Looking forward to trying this!
It's time to renew #3DS #emulation
Excited to see that @[email protected] has started a new #pico8 #indiedev #gamedev #pico8hero series. This time it's to make your own shmup!
Parts 1 and 2:
It's 2022 and #CSS :only-child isn't aware of text nodes?
I'm trying to select an image that is the only direct descender of an element, with no text node siblings, e.g.:
div img:only-child will select this img in both cases, as will div img:first-child and div img:last-child
Am I missing something?
Porting Zelda Classic to the Web https://
hoten.cc/ blog/ porting-zelda-classic-to-the-web/
I've been fiddling with my #Known instance (https://
Another couple of evening and it'll hopefully match my site design more!
Alright, looks as if I've got this Known thing working!