Archive
2026
2025
- Embedded GUI Layout Algorithms
- 2025 JS13K WebXR Entries
- Embedded Rust GUI Progress report
- Accessing the Keyboard and Screen on the LilyGo T-Deck with Rust
- Slaughterhouse Five
- Rust on the LilyGo T-Deck
- Thoughts on LLMs and the coming AI backlash
- Remembering Mixed Reality
- My Areas of Interest for 2025
2024
2023
2022
2021
2020
- TallyCat: a unit calculator parser for JS
- Looking for the Next Step
- Pixel Eater, a web based pixel art editor
- Rust Browser 8: Next Steps
- Rust Browser 7: Rendering
- Rust Browser 6: Layout
- Rust Browser 5: A Proper Tree Structure
- Rust Browser 4: Type Madness
- Rust Browser Part 3: A Long Slog for Small Features
- Rust Browser Part 2: Parsers
- Building a Rust Web Browser
- Thoughts on the Hunger Games
2019
2018
- Manga Guide to Cryptography
- Lego Power Functions Idea Books
- ScratchJr Coding Cards
- One Year at Mozilla
- Fluke, by Christopher Moore
- How Bezier Curves Work
- Being an Independent Researcher
- ProcGen: Playing with Color
- I'm Afraid Your Daughter is a Vampire
- In the Year of our Lord
- ProcGen: Gradients and Lerps
- ProcGen: Sine Waves
- Procedural Generation Challenge
- Introducing AMX: a simple node process manager
- Beat Saber Rawks
- Mobile VR Problems
- Heading out for some MR fun
- My Cut of the White Album
- First 360 Video
- Things Which Annoy Me About Modern Computers
- Oculus Go: First thoughts
- Music App Update
- Recycling Questions
- React Native Tips
- Ongoing Revenue: How to build a new smartphone platform
- Why don't we have Wayland yet?!
- Make a Popular Web Tool in 23 Easy Steps
- 2017 Retrospective and a Ponderous List of Things Which Are Yet To Come
2017
- Ideal OS: Rebooting the Desktop Operating System Experience
- A-Frame Tips
- Five Reasons Why You Should Hire an Old Programmer
- Introducing Pixel Eater
- Selling my Arduino Stuff
- Introducing The Ministry of Silly Things
- The History of Developer Evangelism
- I am worried about AI, but not for the reason you think
- Hire Me to Speak or Consult
- On Uber, Gardens, and Why Corporate Culture Matters
- NES Classic Review
2016
- Lego Technic Guide v2
- Geeky Lego Crafts
- LEGO Christmas Ornaments Book
- Why I'm No Longer a Republican
- I'm coming to New York and I want to speak for you!
- Pokémon Go: Why and Why Now?
- Everything must go!
- Tiny Lego Wonders
- Programming Beyond Text: the Parsing Problem
- Solving the NPM Problem at Scale
- Nine Months with Apple Watch
- Gwen Has A Mission and She Needs Your Help
- Update to Razzmaster
- The Manga Guide to Physiology
2015
- Call for a Data Bill of Rights
- The Hubbub About PubNub
- On JetBrains Move to Subscriptions
- SE: A New Rich Text Editor for the Web
- Reflections Upon Turning 40
- When is it okay to duplicate another open source project?
- Time to Leave Nokia
- Over 40 years, has Software Gotten Better or Worse?
- Why I Will Always Use A Speck Phone Case
- Independence from Old Code
- For I Have Met the Super-Men and They Are Us
- The Holy Grail: Pure CSS Scrolling Tables with Fixed Headers
- Apple is not making a TV
- Apple Watch doesn’t need a killer app. It *is* the killer app.
- Unbuffering the Buffered
- The Wiring of Humanity
- Samsung Should be Broken Up, I Have the Evidence
- Predicting the future is hard
- Smart Watches: The Best Interaction is No Interaction
- ThreeJS Cookbook Review
- Amino Refactored
- Why You *Can* Build a Smartphone.
- Ideal OS Part III: User Attention Is Sacred
- Ideal OS Part II: The User Interface
- Ideal OS: An Epic Tale of Irrationality
2014
- Getting Started with NodeJS and Thrust
- Beautiful Lego 2: Dark
- Amino: Now with 33% less C++
- Thoughts on APL and Program Notation
- Electron 0.4 beta 3
- Photon, a commandline shell in less than 300 lines of JavaScript
- Typographic Programming Wrapup
- How Microsoft can fix Windows. They have the Technology.
- 60sec Review: Rust Language
- Improving Regular Expressions with Typography
- Paper and the Cybernetically Enhanced Programmer
- Tabs vs Spaces, the Pointless War
- Typographic Programming: Fonts
- Typographic Programming Language
- Building a Headline Viewer with Amino
- Photo Slideshow in Amino
- Amino: Refactored
- Electron 0.3 Released
- 60s Book Review: TinkerCad
- Electron Updates
- 60 Sec Book Review: Physics of the Impossible
- Command Parser for Arduino
- Amino at OSCON
- Electron 0.2 Released
- Node Streams are Awesome
- Introducing Electron, a new IDE for Arduino
- If they did it, how Apple would make a TV
- Future Tweet 2
- Future Tweeting
- Where's The Data?
- Wolfram Alpha, Mind Explosion
- 3D Printing Industry Overview
- What do you want to see at OSCON?
2013
- Getting Started with the Printrbot Simple
- Why You Can't Build a Smartphone
- Lego Is Art: Beautiful Lego
- Old Pi is Still Tasty
- GPU Computing: the Mac Pro and the Raspberry Pi.
- Install Node on the Raspberry Pi in 5 minutes
- $6031!
- The webOS Charity Auction is live
- One Last Auction Update
- We have a date, TouchPads, and more surprises
- Font Slicer
- Bridging the Gap: Auctioning off my webOS Collection to Fight Cancer
- I threw the blog away, again.
- Apps and Projects
- My Books, Writings, and Videos
- Me, My Books, and My Code
- SparqEE's Cell: Add GSM Data to Anything.
- Plaid is the New Flat
- Functional Reactive Programming with Bacon.js
- Concise Computing: a PNG Parser in 20 lines
- A Magically Delicious Wordprocessor with OMeta
- Improved Easing Functions
- Make Libraries More
- Why should children learn math?
- Review: Practical Computer Vision
- OSCON 2013 Ideas
- Questions We Must Ask
- OSCON 2013: What do you want to see?
2012
- Super Christmas Adventure
- The Unofficial Lego Technic Builder's Guide
- I have declared Internet Bankruptcy
- Retro Game Crunch Kickstarter Success
- Retro Game Crunch Interview: Matt Grimm
- Retro Crunch Interview: Rusty Moyher
- Shaun Inman Interview: Retro Crunch Kickstarter
- Intro to Arduino
- Innovator: Open Beam creator Terence Tam
- CNC Lessons Learned
- Crouching Tiger, Hidden Wires
- Book Review: Environmental Monitoring with Arduino
- Of Shafts, Pens, and Bearings
- CNC Prototype 1
- Electronics and CNC
- New Directions
- Canvas Deep Dive Source is Released
- HTML Canvas Deep Dive: Updated and Free
- The Future of Desktop Computing
- webOS on The Verge
- Driverless Cars Change Everything
- Book Updates
- Sacred Language Cows Part 2: we can rebuild it. We have the technology.
- An open letter to language designers: Kill your sacred cows.
- A Roku April Fools
- Why Do We Waste TVs on Video?
- Read me in .net Magazine
- AppBundler is now an independent project
- HTML Canvas book for iPad is out!
- The Future Is Now, Part 1
- Leo Sketch 1.1 is Here
- New Blog is Live
- HTML Canvas : an Interactive Travelogue
- IFRAME, you are dead to me
- Amino 1.1 Released and Retina Ready
- End of an Era
- Amino 1.1 is coming
- Ebook Improvements
- My final draft is done: Building Mobile Applications with Java
- JavaScript Getters and Setters: Why U No Use Dem?
- The Predictable Apple
- The Bathtub of Global Commerce and the Keystone Pipeline.
- Genetic Programming: AI Opening Disappointment
- iBooks and an HTML Experiment
- Back in the Saddle
2011
- Blogging Year In Review
- Would you pay for Facebook?
- HP to Open Source webOS
- Book Report: World of Ptavvs
- Your Design Homework This Weekend
- Book Report: Princess of Mars
- Flash is Dead. Long Live Adobe
- Book Report: Hackers & Painters by Paul Grahm
- This gives me a sad
- Steve Jobs
- Java + SDL + Avian + webOS = Magically Delicious
- The Future of Desktops and Design of the Workstation OS
- webOS Canvas Improvements for the HP TouchPad
- HTML Canvas Deep Dive
- Boom. It's Action Time
- Get a Discount to See Me Speak at OSCON
- Week One
- Amino 1.0 is released
- Playing with Noise
- First Beta of Leonardo 1.0
- Josh's Quick Intro to RegEx
- Amino and Leonardo: Next Steps
- Amino 2: Buffering, Roadmap, and a New Domain
- Amino 2: Overall Design
- Amino Update: I Believe the Shaders Are The Future
- Why 2014 Won't Be Like 1984
- Travel, Tablets, and Sleep
- On the lateness of my writing
2010
- My Best Photos of 2010
- Amino + Swing = Crazy Delicious
- Leonardo needs a server side engineer
- SideHatch
- Ruby Red is Here!
- Back from Mars
- Did Open Sourcing Mozilla Matter?
- When Commented Out Code Attacks
- Leonardo Beta 2 is Not a Witch
- The Deprecation
- HTML Canvas Export for Leonardo
- Next Beta of Leonardo is up
- Announcing: Amino
- Announcing Amino, a new UI toolkit for Desktop Java
- Announcing Amino, a new UI toolkit for Desktop Java
- Anouncing Leonardo
- Apple TV: A Big Fat Fail
- Announcing Leonardo
- Marketing Your Open Source Project on a Shoestring Budget
- OSCON and Mobile Portland Trip Report
- OSCON Schedule
- Tim Berners Lee on Open Data
- Free Books and other stuff
- XML Utility Library
- Podcast Help
- The Future Is Now
- UI Design Assets and Tools
- Palm Dev Days Recovery
- Philippe Starck, Vintage Ads, and More
- iPad Hands On Thoughts
- webOS, the OS built from the web
- Palm's webOS, the OS Built From the Web, Puts Users and Developers First
- Palm Developer Day and OSCON
- Palm's Hot Apps Promotion, and the Zen of Servlets
- Palm Developer Day and OSCON
- April Resolution: Post Smaller and Faster
- Trip Report: Game Developer Conference & CTIA
- Why do Alarm Clocks Suck?
- The iPhone, Open Systems, and Leaving Sun
- Leaving Sun, Joining Palm
- Tablet Dreams
- 2010: the year we make tablets (and kill the PC!)
- 2009: a year closes
- 2010 in Design
2009
- Interesting Stuff I Read This Week
- Typography 101
- The Success of MultiTouch is a Lie
- OreDev on Design
- Art, Design, and Sweden
- Color 101
- My new blog
- In Defense of Wires
- Who is this Josh?
- The Origin of the Species
- The Java Store, a Q&A
- Top 5 Most Important Features in JavaFX 1.2
- JavaOne: And so it begins
- Want a Job Coding Extreme Swing?
- A Tale of Two Challenges
- Introducing the JFXStudio
- There is no JavaFX Mobile. There is only JavaFX.
2008
- JavaFX at Devoxx
- Goodbye Mr A
- The Final Countdown
- JavaFX at OreDev
- JavaFX in Sweden
- A Better Applet Experience, Part 2: Poster Frames
- A Better Applet Experience, Part 1: a custom loading screen
- JavaFX bleg
- 24 hours later
- JavaFX Preview SDK released
- WidgetFX: Glossitope reinvented
- And now for something completely different
- OSCON and the JavaFX SDK
- JavaFX Innovations: Inline Examples and Screenshots
- Java Doodle: fading translucent windows, on PC & Mac
- Java Doodle: crossdomain.xml Support
- JavaOne Exhaustion (with links!)
- JavaOne video blogs with Rachel Hill
- My keynote demo
- JavaFX.com
- Hear me on RIA Weekly
- JavaOne is like Christmas
- At the speed of JavaFX
- Back from Australia
- Bleg: do you know of any good forum software?
- You need at least 386 Power
- JavaFX Doodle #3: A Paper Cutout Demo
- JavaFX Script Doodles, #2: a tabbed rectangle
- Upcoming Java and JavaFX Events you should attend
- JavaFX Doodles: Doodle #1
- How do I answer the question: What is Java?
2007
- A JavaFX Christmas Demo
- Competition and the Java Ecosystem: why Sun launched the PDF Renderer and Scene Graph projects
- The big secret revealed! A PDF viewing library!
- Our new Java Scene Graph is open sourced
- LightsOut, a JavaFX Script game
- The Winds of Change
- How to remove Java 6 from your Mac
- "Why don't you ship Swing Apps", two years later.
- Dinner in Prague?
- My First Screencast: Visually build an RSS reader using NetBeans 6
- NetBeans 6 beta 2 is out!
- It seems there is a downside to having unix in your pocket
- Hang out with me at the Midwest Tech Days in Minneapolis and Chicago
- The complexity of large software: an AT&T example
- The votes are in.
- A question about SocketPermissions
- You vote for your favorite article and I'll write it!
- See me speak about JavaFX at the Midwest Java Technology Days
- JavaFX != JavaFX Script
- Nimbus Nears Completion
- My new life in JavaFX
- NetBeans to become GPL!
- UltraSparc T2 launch: [keanu] Whoa! [/keanu]
- Want to get paid to work Flying Saucer?
- Java FX updated, and a visit to the future of client Java
- Flying Saucer R7 is out
- A Response to GUI Building: tool vs hand coded
- Problem and solution for compiling NetBeans on Mac
- Glossitope BoF slides
- JavaOne: Another One is Done
- AB5k has a new name, and a JavaOne contest
- AB5k has a new name, and a JavaOne contest
- JSR 296 Session Success
- NetBeans day success
- Beans binding rocks!
- Too busy to blog
- Too busy to blog
- Back from the demo
- Back to the Bay
- Yahoo Widgets 4 is released
- AB5k Widgets in Depth
- Back from the Java Posse Roundup
- Posse Brain Dump: JavaDocs from the year 2020
- Quick updates: Desktop Matters, Java Posse Roundup, AB5k, and more
- AB5k: our all Java widget system is released
- My Java One Talks
- Netbeans M7 and the amazing new Web Start plugin
- Tricked out maps and a new tile provider.
- First release of JSR 296
- Free Projects Part 4: an LCD Controller
- Tag! I'm it
- Rockin' 2007
2006
- A Mapping Christmas Present
- Subversion Support in NetBeans 5.5
- Free Projects Part 3: SketchPad
- Free Projects Part 2: the Stacked Image Editor
- Free Projects Part 1: a Screen Capture Uploader
- Posting from 30k ft: Cool Projects, Free to a Good Home!
- Musings on the new opportunities that Open Source Java brings
- A nice Java evening with sour cherry beer
- My first two weeks at Netbeans
- A quick intro to HttpClient
- Java people in Prague
- I'm getting married, leaving the Swing Team, and flying to Prague
- Update on Bug 6477341,the '...' Windows Combobox bug.
- NASA Maps in your Swing App
- GIF will finally be free!
- Introducing Painters II: filters, shapes, and the builder
- Vista getting better
- Introducing Painters
- LA-stravaganza
- Source to the Magnifying Glass Hack
- The best is yet to come
- Windows L&F Bugs: Part 2
- Painter Trailer
- The Big One
- I need help tracking down a bug with the WindowsTableHeaderUI
- Do We Need Databases on the Desktop?
- Getting started with the Aerith Mapping Component
- Aerith Code is Go!
- Java One, Future Projects, and Back to Work
- Aerith Updates and the End of Java One 2006
- Aerith: live from the floor
- Pretty Pictures
- Freshly Squeezed Flash: a micro-company
- Why we are here
- Swing Hacks in Japanese Ships
- How to get code completion with Javadocs in Netbeans on Mac OS X
- Swing Hacks goes East
- Rant: How to make whitebox PCs be less horrible.
- I finally fixed my first Mustang bug!
- Stuff to Play With: the EnumComboBoxModel
- The Summer of 1998
- Once more Matisse Rocks
- Props to the Trig Teacher
- All hail the PropertyChangeListener
- My Mustang Beta Thoughts
- SwiXml builds better guis
- Easily Use Custom Swing Components with Matisse
2005
- Netbeans on Mac Tip
- I don't normally post about
- Why use Java for Web 2.0?
- More on Day's 2 and 3 of Java One Japan.
- My First Full Day of JavaOne Japan
- My LA-JUG Peabody Presentation
- Preparing for Tokyo
- Design of a distributed disaster relief system
- Swing Hacks Bonus Article
- Get Swing Hacks for Five bucks
- Using Java2D to to build a Stacked Image Editor
- Fold N' Drop
- Java One Lessons : The book
- Delta Lessons
- Exhausted
- JavaOne: Day One
- We're #2
- JavaOne: Day 0
- JavaOne: Day -1
- A picture is worth a thousand words.
- Getting ready for JavaOne: The Day of the Desktop
- technology has warped my brain
- Why I haven't been posting
- The Reponse to Why Don't you Ship Swing Apps
- Mac OS X 10.4 has arrived, with a Hi-Rez secret
- A Hi-Rez Future
- Sometimes you only need a little.
- The Portable MiniApp: Mortgage Calculator
- Quick Tip for OSX Users
- Why don't you ship Swing apps?
- Subversion Rename Rocks!
- No Session-y Goodness for Me.
- Big news. I'm going West.
- Apple's latest efforts are the triumph of software over hardware.
2004
- XML to Swing and the Gradual API
- Webstart Rant
- Please: think of the users!
- Countdown to Christmas: a Customizable MiniApp
- Weather Watcher: Release Deux
- A New Rich Client: WeatherWatcher
- New MiniApp: Storm Drain
- mouth.whereIs().put(new Money())
- Visions of truly portable applications.
- Unleash the MiniApp
- My 1 year anniversary at Java.net: the social side of software.
- Quick Radial Blurring w/ Java2D
- Myth: There aren't any commercial apps written in Java.
- My new opensource project: Flying Saucer, an all Java XHTML renderer.
- Swing Hack 8: An eyedropper tool
- An Analysis of Open Sourcing Java
- Java's got a Bad Rep: The Rebuttal
- Does Java have a bad reputation?
- From Scarcity to Excess: The economics of commodity software.
- The future is Vectorized
- Any HTML Renderers for Java?
- 2004: the year of the Net-App
2003
- Swing Hack 7: Let it Snow!
- How do you develop?
- Spanish Java
- Swing Hack 6: Ghost Mouse
- Point, Click, and Drool!
- Microwaves Are Evil (at least mine)
- Swing has failed. What can we do?
- Swing Hack 5: a magic lens
- How about a jApp for my car?
- How do kids program today?
- We should be software *designers*
- Swing Hack 4: The universal right click
- I have seen the light.
- Swing Hack 3: Overlay Graphics
- Too many ways.
- Truly reliable software?
- The two opposing forces of software: why career programmers will always have a job.
- Passive Tech on the Ocean
- SwingHack: keyboard spinner
- Swing Hack: Window Snapping
- Strong vs Weak Typing: Can't we have the best of both worlds?
- Where are my free JavaBeans?!
- CVS or Else?