Josh On Design

  • Blog
  • About Josh
  • Books & Writing
  • Apps & Projects
  • Hire Me
past future

    CSS Text Style Builder

    July 12th, 2023

    It’s a truism of the web that when something becomes free it turns to crap. This is largely due to advertising, tracking, and SEO hackers getting their crappy version of something to the top of the search index. When this has happened to a tool I want to use I can’t fix the underlying problem, but I can make my own non-tracking version and share it with the web, doing my little part to make the world a better place. Today it’s a CSS Text Style builder.

    Read more...

    Tagged: css javascript html

    Fonts and Icons on Circuit Python

    June 25th, 2023

    I’m continuing to work on a little smartwatch prototype using a little round LCD and I want to have nice looking text. The default font for CircuitPython is fine, but it’s very tiny. This LCD has a pretty high DPI compared to other hobbyist screens( > 200 ppi), so I need to find a new font. CP has a way of importing new fonts, but there are a few pitfalls and tricks I discovered, so that’s what I’m covering today.

    Read more...

    Tagged: embedded circuitpython

    Performance Limitations of CircuitPython's DisplayIO Graphics

    June 12th, 2023

    For my next project with the WaveShare Round LCD I want to create an animation of Dr Strange's Eye of Agamotto. Here is my first attempt in JS (looks more like the comics than the movies). Not bad, I think.

    Read more...

    Tagged: embedded circuitpython

    Playing with a Pico based Round LCD screen

    June 8th, 2023

    I'm enamored of all of cheap and hackable screens and embedded CPUs coming onto the market. I'm frustrated, however, that despite embedded computing being more accessible than ever, the mass manufacturers products are all becoming more and more the same. Where are the phones with oval screens? Where are the steam punk pocket calculators? We have the technology to make devices that are ever more niche and increasingly creative and different, yet what you can actually buy is more glowing rectangles. I'd like to fix this.

    Read more...

    Tagged: embedded circuitpython

    Canvas Scaling and Smoothing Tricks

    April 15th, 2023

    I love HTML Canvas. I even wrote a book about it once. Canvas is good drawing API and it runs everywhere. However, despite the magic that is the Canvas API, it can still be tricky to use when it interacts with CSS. I often have people ask me how to make their canvas fill the screen, or resize with the window, or to have a fixed aspect ratio but still scale to fit inside the window without overlap. All of these require understanding some internal details about how Canvas works. So let’s dive in.

    Read more...

    Tagged: canvas

    One Hour Pong

    January 12th, 2023

    I’ve been teaching my nephew to code for the past few years and we did a game jam together over the winter break. He said to me: “Uncle Josh, you sure can code fast.” I reminded him that I’ve been programming for 30+ years, and one day he’ll be even better than I am.

    Read more...

    Tagged: game javascript

    Why you can’t build a web browser and why you should anyway.

    December 14th, 2022

    In the last couple of years I’ve seen a lot of lamenting about the browser mono-culture. I even wrote about it myself. Some complains focus on how complicated the web specs have become. So big that only a few companies can implement a browser from scratch. I think these complaints are misplaced. Even if the web platform didn’t have such a large API surface it still wouldn’t matter. You can’t build a large scale browser with large marketshare. The browser market would still be a monoculture. You can't solve a business problem with a technology solution. I also don't think that replacing the web with something smaller like Gemini is the answer.

    Read more...

    Tagged: rant canvas

    Canvas Computing Prototype 1

    December 3rd, 2022

    I've been working for a while on some new ideas around the future of programming, but I haven't done a great job of sharing these with the world. It's not science if you don't publish your results, so here we go.

    Read more...

    Tagged: programming

    Make Rects Fast, in Rust

    September 29th, 2022

    How can you draw a filled rectangle fast? By making it not slow! Great if you are using a GPU to accelerate rectangle drawing for you, but what if you are doing it oldskool with an in memory frame-buffer? You'd probably write some code like this:

    Read more...

    Tagged: rust

    Ideal OS Mark 6

    September 21st, 2022

    Yeah, it’s been a while, but not forgotten! In between moving homes and jobs and pets I found to do a new release of my IdealOS prototype. And not just a new release, but an actual full rewrite! Let’s take a look at what’s new in IdealOS Mark 6!

    Read more...

    Tagged: idealos

    Life Moves Fast

    August 2nd, 2022

    It’s been a while since I’ve talked tech and much longer since I’ve talked about anything personal. There's a lot of updates to share, so buckle up.

    Read more...

    Tagged: rant job

    Why are Browser Engine Monocultures a bad thing?

    April 14th, 2022

    It is often mentioned in Hacker News comments and the Twitters that it’s a tragedy that the web ecosystem is now dependent one only three renderers: Chromium, WebKit, and Gecko. Every time a new browser is announced I see comments like:

    Read more...

    Tagged: rant

    Gameboy Emulator Progress

    February 23rd, 2022

    After a few weeks of work I’ve been able to get Tetris to boot and play. I can also run Dr Mario to enter the play screen but all of the pieces are hidden for some reason.

    Read more...

    Tagged: rust game

    Starting a Gameboy Emulator

    January 24th, 2022

    A week or so ago I ran across a video called The Ultimate Gameboy Talk, and indeed it was. Inspired by the simplicity and elegance of the original Gameboy, I decided to try my hand at building an emulator. A week later I have this:

    Read more...

    Tagged: rust game

    Roku IDK on Mac

    November 20th, 2021

    I have long loved my series of TV streaming Roku devices. The UI isn’t as fancy as the Apple TV, but it’s very stable, very responsive, and far easier to use than Apple’s insane remote. Historically the Roku SDK was really only targeted at streaming TV apps (which makes sense), but there wasn’t a way to write games or other high performance apps using anything but Roku’s own BrightScript SDK. However, about a month ago Roku announced the Independent Developer Kit that lets anyone build and side load apps onto their own Roku’s using C++ and OpenGL. I was thrilled but bummed that you have to run the SDK on Linux. However, it’s just some command line scripts, so maybe we could run it in a Docker container. After a little experimenation I figured out how. Let's dig in.

    Read more...

    Tagged: roku

    Make a Markdown Parser with OhmJS

    July 16th, 2021

    In many of my projects I need to parse something, usually a text based language. Sometimes it's inline docs. Sometimes it's a custom DSL for generating code. And sometimes it's markdown files. My goto tool for this type of work is OhmJS, an open source parser language for JavaScript based on PEGs.

    Read more...

    Tagged: ohm

    IdealOS Mark 5

    July 6th, 2021

    After a few weeks long sprint I’ve got another build ready for Ideal OS. Visually it’s starting to come together nicely. Check it out.

    Read more...

    Tagged: idealos

    IdealOS Mark 4

    June 18th, 2021

    It's been a whole lot of work to get to Mark 4 of Ideal OS. My real goal for this sprint was to have something that at least visually looks like a real operating system. What do you think?

    Read more...

    Tagged: idealos

    IdealOS Mark 3

    May 27th, 2021

    As I mentioned before I’ve gone back to working on the bottom half of Ideal OS. So far I’ve got a messaging protocol, a central server, a few tiny apps, and three different display server implementations. The version I’m calling Mark 3 looks like this:

    Read more...

    Tagged: idealos

    Emulate a Raspberry Pi on your Mac

    April 15th, 2021

    I've paused my work on Filament for a while to go back and do some more research into low level graphics for IdealOS. As part of that I wanted to emulate a Raspberry Pi on my Mac. The short version is: yes it can be done but it's useless for graphics.

    Read more...

    Tagged: idealos

past future
Like this? Hire Me!