Josh On Design

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

    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

    Filament 0.4 release

    March 11th, 2021

    I'm happy to announce Filament 0.4. If the previous release was about new language features, this one is about apis and docs. A language isn't useful if you don't have APIs to do stuff with.

    Read more...

    Tagged: filament programming

    Filament 0.3 Release

    February 21st, 2021

    Fundamental Language Changes

    I’ve been working a lot on new graphics apis, and new examples to exercise those apis. Things like turtle graphics, which are great for learning recursive functions, and image pixel processing, which are super fun and closer to Raytracing and GPU shaders than you might realize. However, along the way, I’ve discovered some missing features that have forced me to make some tough decisions. Today let’s talk about conditionals, jumps, and lambdas.

    Read more...

    Tagged: filament hl programming

    Filament 0.2 Release

    February 15th, 2021

    I'm happy to show you the next release of Filament, my humanist programming language designed for kids and scientists.

    Read more...

    Tagged: filament programming hl

    Filament 0.1 Release

    February 5th, 2021

    Filament is the humanist programming langauge I've been working on. Filament's focus is entirely on computational thinking and improving the way we use PLs, not on the implementation or performance. It is for thinking about problems, not producing software artifacts. It should be easy enough for children to use, but powerful enough for domain experts. Think of it as Mathematica for kids, scientists, and artists.

    Read more...

    Tagged: hl filament programming

    Parameter Resolution

    January 26th, 2021

    This is part of my series on the humanist programming language I’m building called (currently) HL. Read the rest here.

    Read more...

    Tagged: programming hl

    Syntax for a Humanist Language

    January 17th, 2021

    This is part of my series on the humanist programming language I’m building called (currently) HL. Read the rest here.

    Read more...

    Tagged: programming hl

    A Humanist Programming Language

    January 14th, 2021

    For years I’ve had this idea of a programming language (really a programming system) designed not for building software, but for exploring ideas. If built, it would be a system where you can easily access data both locally and remotely, process the data in many different ways, and use built in tools to visualize the answers. The current way we code just isn’t very amenable to exploring and thinking (outside of an Emacs Lisp buffer).

    Read more...

    Tagged: programming hl

    Thoughts on Build Systems

    July 21st, 2019

    thoughts on build systems

    I'm rebuilding my HTML Canvas Deep Dive book so I need a way to compile various source files into a final thing. I'm not producing an executable but rather a directory full of generated HTML, CSS, and Javascript, and possibly some other stuff; but it's the same basic idea. I need to turn a collection of things into another collection of things. I need a build system. So which should I use?

    Read more...

    Tagged: rant javascript programming

    We All Make Mistakes

    January 31st, 2019

    I had the great pleasure to meet lots of dedicated engineers, researchers, and scientists at the W3C Immersive Web Working Group face to face meeting this week. This is the team dedicated to creating standards for mixed reality so that we can all enjoy future interactive content from the web-browser of our choice.

    Read more...

    Tagged: programming

    Programming Beyond Text: the Parsing Problem

    June 13th, 2016

    I’ve written many times about how programming is being held back by storing our code as ASCII text.  My efforts garnered a dim reception.  As strong as the arguments for other storage formats may be, text works extremely well with existing tools. Leaving text behind means leaving an entire ecosystem of practice and tooling, thus we are stuck in a local maxima. 

    Read more...

    Tagged: programming rant

    Solving the NPM Problem at Scale

    March 24th, 2016

    If you haven’t heard, Azer Koculu unpublished a bunch of his modules as protest against behavior by the company that backs NPM. This crashed the NPM ecosystem with hundreds of popular project suddenly unable to build. Now there’s lots of talk about what to do. PGP signatures? Always pinning? Permacaching with IPFS?  I think Azer's goal was achieved. We are now actually talking about how brittle the system. The conversation is happening. This is good.

    Read more...

    Tagged: npm opensource programming

    Thoughts on APL and Program Notation

    October 23rd, 2014

    A post about Arthur Whitney and kOS made the rounds a few days ago. It concerns a text editor Arthur made with four lines of K code, and a complete operating system he’s working on. These were all built in K, a vector oriented programming language derived from APL. This reminded me that I really need to look at APL after all of the language ranting I’ve done recently.

    Read more...

    Tagged: programming apl typography

    Photon, a commandline shell in less than 300 lines of JavaScript

    October 15th, 2014

    I have a problem. Sometimes I get something into my head and it sticks there, taunting me, until I do something about it. Much like the stupid song stuck in your brain, you must play the song to be released from it's grasp. So it is with software.

    Read more...

    Tagged: nodejs javascript programming

    Typographic Programming Wrapup

    October 6th, 2014

    I need to move on to other projects so I’m wrapping up the rest of my ideas in this blog. Gotta get it outta my brainz first.

    Read more...

    Tagged: fonts programming

    60sec Review: Rust Language

    September 17th, 2014

    Lately I've been digging into Rust, a new programming language sponsored by Mozilla. They recently rewrote their docs and announced a roadmap to 1.0 by the end of the year, so now is a good time to take a look at it. I went through the new Language Guide last night then wrote a small ray tracer to test it out.

    Read more...

    Tagged: programming bookreview

    Improving Regular Expressions with Typography

    September 15th, 2014

    After the more abstract talk I’d like to come back to something concrete. Regular Expressions, or regex, are powerful but often inscrutable. Today let’s see how we could make them easier to use through typography and visualization without diminishing that power.

    Read more...

    Tagged: programming fonts

    Paper and the Cybernetically Enhanced Programmer

    September 10th, 2014

    So far my posts on Typographic Programming have covered font choices and formatting. Different ways of rendering the source code itself. I haven’t covered the spacing of the code yet, or more specifically: indentation. Or even more specifically: tabs vs spaces.

    Read more...

    Tagged: programming

    Tabs vs Spaces, the Pointless War

    September 2nd, 2014

    So far my posts on Typographic Programming have covered font choices and formatting. Different ways of rendering the source code itself. I haven’t covered the spacing of the code yet, or more specifically: indentation. Or even more specifically: tabs vs spaces.

    Read more...

    Tagged: fonts programming

    Typographic Programming: Fonts

    August 25th, 2014

    Apparently my last post hit HackerNews and I didn’t know it. That’s what I get for not checking my server logs.

    Read more...

    Tagged: programming fonts

    Typographic Programming Language

    August 22nd, 2014

    Allow me to present a simple thought experiment. Suppose we didn’t need to store our code as ASCII text on disk. Could we change the way we write – and more importantly read – symbolic code? Let’s assume we have a magic code editor which can read, edit, and write anything we can imagine. Furthermore, assume we have a magic compiler which can work with the same. What would the ideal code look like?

    Read more...

    Tagged: programming fonts

    Improved Easing Functions

    March 1st, 2013

    Animation is just moving something over time. The rate at which the something moves is defined by a function called an easing equation or interpolation function. It is these equations which make something move slowly at the start and speed up, or slow down near the end. These equations give animation a more life like feel. The most common set of easing equations come from Robert Penner's book and webpage.

    Read more...

    Tagged: programming rant graphics

    Make Libraries More

    February 13th, 2013

    Software Libraries are good. They allow abstraction and encapsulation; which encourages reuse. They also allow the library to be written by one person and used by another. This is reuse at the programmer level, not just the system level. A library can be written by a person who has domain expertise but used by someone else who has less or no expertise in that domain. For example: an XML parser. The implementer knows the XML spec inside and out, but the user of the lib needs only a basic understanding of XML in order to use the lib.

    Read more...

    Tagged: programming compilers

    Java + SDL + Avian + webOS = Magically Delicious

    August 31st, 2011

    Mmmwaa haa haa. It lives! I've gotten Java to run on webOS natively with a new set of Java SDL bindings. That means it just *might* time to start a new project. Read on for how it works and how you could help.

    Read more...

    Tagged: graphics java palm programming

    Josh's Quick Intro to RegEx

    April 12th, 2011

    You may be a new programmer, or a web designer, or just someone who's heard the word 'RegEx', and asked: What is a Regex? How do I use it? And why does it hurt my brain? Well, relax. The doctor is in. Here's two aspirin and some water.

    Read more...

    Tagged: code programming

    Amino Update: I Believe the Shaders Are The Future

    March 5th, 2011

    Teach them well and let them lead the way
    Read more...

    Tagged: programming

    Next Beta of Leonardo is up

    October 12th, 2010

    Most of of my free time work for the past few months has gone into Amino, the UI toolkit that Leonardo is built on, but Leo itself has gotten a few improvements as well. I'm happy to announce that the next beta of Leo is up, including:

    Read more...

    Tagged: programming

    Announcing: Amino

    October 9th, 2010

    As part of my ongoing efforts to create better designed software, I some how ended up creating my own new UI toolkit. This is really a part of my belief that a decade from now 90% of people will use phones, slates, or netbooks as their primary computing device. Amino is my experiment building software for that other 10%: the content creators who need killer desktop apps, the programmers who want great tools, and the knowledge workers who need to manage incredible amounts of information at lightning speed. Amino is the toolkit for these apps.

    Read more...

    Tagged: programming

    How do kids program today?

    October 14th, 2003

    I have often wondered how people learn to program today. In the old days we had Basic and Logo, but what do kids use today? The old standbys are powerful enough to make something for the web (assuming they even exist) and nothing else has a simple development environment for children. Perhaps we need something new.

    Read more...

    Tagged: programming kids java.net

    CVS or Else?

    August 6th, 2003

    In my years as a professional programmer I have used many Revision Control Systems (RCSes). It's that software that manages and protects the software you use. One of the tools of the toolmaker. Many companies pay tens of thousands of dollars for this software, often licensing it per-seat, and yet a perfectly good free alternative exists: CVS. In fact I will argue that there almost no reasons not to use CVS. While there are some other RCSes which beat CVS on technical grounds like parallel development I think that CVS has the edge in everything that counts.

    Read more...

    Tagged: programming java.net

past future
Like this? Hire Me!