Sign in

Josh Tynjala

@joshtynjala.bsky.social
40 followers 15 following 33 posts

Creator of Feathers UI. OpenFL leadership team. vscode-as3mxml and vscode-swf-debug author. Apache Royale AS3-to-JS compiler developer. Archiving Flash documentation and AS3 code. Also on Mastodon: @joshtynjala@mastodon.social

PostsRepliesMedia
Josh Tynjala @joshtynjala.bsky.social · 08/10/2026
As you can see in the screenshot, there are some minor glitches in the Papervision3D rendering. The triangles are drawn with slight gaps. A minor issue to look into how OpenFL draws vectors. Papervision3D draws its triangles using basic graphics.moveTo() and graphics.lineTo() calls.
000 0
Josh Tynjala @joshtynjala.bsky.social · 08/10/2026
Last one for the week: The CoverFlow component for #AdobeFlex, created by Doug McCune, compiled from #ActionScript to JavaScript with #ApacheRoyale and running on #OpenFL instead of Flash Player. The CoverFlow component uses #Papervision3D, the first big 3D engine for #AdobeFlash, before Stage 3D.
Screenshot of the CoverFlow component for Adobe Flex, created by Doug McCune. It is based on the popular visualization from iTunes that displayed album covers in 3D. In the screenshot, Flex components are displayed instead of album covers. One is displayed normally, but four others appear in the side rotated at an angle in 3D space.
100 0
Josh Tynjala @joshtynjala.bsky.social · 07/10/2026
Day 3 of projects compiled from #ActionScript to #JavaScript using #ApacheRoyale, and running on #OpenFL instead of #AdobeFlash. Today, it's the open source Hungry Hero game created by Hemanth Sharma. Hungry Hero was built with Starling 1.8 and the Starling Particle Extension.
Screenshot of the title screen of Hungry Hero, a Starling Framework demo game originally created by Hemanth Sharma. The hero appears on the left, with a yellow super suite, a green cape, a white bib, and holding french fries. On the right is the Hungry Hero logo, a Play button, and an About button. The demo is compiled from AS3 to JS with Apache Royale, and runs on OpenFL instead of Flash Player.Screenshot of the game Hungry Hero, a Starling Framework demo originally created by Hemanth Sharma. The hero flies through the air among fruit and various food items, including burgers, fries, and sodas. A UFO flies the opposite direction. The titular hero has 5 lives, a score of 90, and has traveled 285 units of an unspecified distance. The demo is compiled from AS3 to JS with Apache Royale, and runs on OpenFL instead of Flash Player.
000 0
Josh Tynjala @joshtynjala.bsky.social · 06/10/2026
Today, I'm featuring the #AdobeFlex SpringGraph component open sourced by Mark Shepherd. It is written in #ActionScript, but compiled with #ApacheRoyale to JavaScript and running on top of #OpenFL. I recently archived the component's source code on GitHub: github.com/joshtynjala/...
Screenshot of a sample project using the Flex SpringGraph component by Mark Shepherd. On the right is a SpringGraph representing glutamate. On the left is a list of molecules that can be selected to simulate.
000 0
Josh Tynjala @joshtynjala.bsky.social · 06/10/2026
Additionally, my career basically got started by building Flex components and apps, long before I created Feathers UI, so there's a lot of nostalgia there for me.
000 0
Josh Tynjala @joshtynjala.bsky.social · 06/10/2026
I am also a contributor to the ActionScript/MXML compiler in Apache Royale. Being able to access an entire new ecosystem of samples/libraries/components from the Flex days has helped me find and fix so many bugs in the compiler. It's been great!
110 0
Josh Tynjala @joshtynjala.bsky.social · 05/10/2026
This week, I'll be sharing another set of #ActionScript and #AdobeFlex projects I've compiled with #ApacheRoyale to run on JavaScript and WebGL using #OpenFL. No browser plug-ins. AS3 *transpiled* to JS. First, is the Employee Admin sample app for the #PureMVC library. Built with Flex 3.
Screenshot of an Adobe Flex app built with the PureMVC architecture. Its title is Employee Admin, and the top includes a DataGrid containing a list of users. If a user is selected, their editable Profile is displayed at the bottom left, and their User Roles may be customized at the bottom right.
120 0
Josh Tynjala @joshtynjala.bsky.social · 25/09/2026
Personally, I'd prefer a separate CSS file, but Google uses Lighthouse scores to adjust search rankings. A better score means more customers finding my site. So I spent an afternoon inlining CSS on every page (and then purged unused CSS the next morning because my brain wouldn't let it go). 3/3
000 0
Josh Tynjala @joshtynjala.bsky.social · 25/09/2026
After I inlined the full CSS, I discovered that like 80% of it was useless to each individual page. Every page uses a different subset. I used PurgeCSS to analyze the HTML and remove unused CSS. Now the inlined CSS is significantly smaller per page, so caching is less important. 2/3
100 0
Josh Tynjala @joshtynjala.bsky.social · 25/09/2026
Optimized one of my websites using Google Lighthouse. Inlining CSS in the HTML file instead of loading a separate CSS file makes Lighthouse very happy. However, you lose any benefit of the browser's cache for CSS files. 1/3
100 0
Josh Tynjala @joshtynjala.bsky.social · 14/08/2026
Day 3 of projects compiled from #ActionScript 3.0 to JavaScript using #ApacheRoyale and running on the #OpenFL library. Today, I'm showing off the Demo project from #StarlingFramework. Starling is 2D GPU-powered framework that was designed for #AdobeFlash. In OpenFL, it runs on WebGL instead.
Screenshot of the Starling Framework demo project, compiling to JS using Apache Royale and running on the OpenFL library. A 3D cube is displayed, with a  back button at the bottom.Screenshot of the Starling Framework demo project, compiling to JS using Apache Royale and running on the OpenFL library. The Text Fields screen is displayed, with various alignment, colors, and font options, including bitmap fonts. A back button appears at the bottom.Screenshot of the Starling Framework demo project, compiling to JS using Apache Royale and running on the OpenFL library. The filters screen is displayed, with the Displacement Map filter selected. The Starling bird is distorted by the filter. A switch filter button and a back button are displayed.Screenshot of the Starling Framework demo project, compiling to JS using Apache Royale and running on the OpenFL library. The main menu with the Starling logo, twelve buttons, and the GPU driver information is displayed.
021 0
Josh Tynjala @joshtynjala.bsky.social · 13/08/2026
A few screenshots of another #AdobeFlex app compiled to JS with #ApacheRoyale and running on #OpenFL instead of #AdobeFlash. This is the "Cafe Townsend" sample for the Cairngorm MVC framework. It demonstrates that I've gotten enough of Flex working to build a fully-functional CRUD-style app.
Screenshot of Cafe Townsend, a sample projects for Adobe Flex with the Cairngorm MVC framework. The app is running in a browser, using the OpenFL library, and compiled to JS with Apache Royale. Displays an Employee Details screen for Matt Boles, including first name, last name, start date, and email address. Three additional buttons are visible, including Back, Submit, and Delete.Screenshot of Cafe Townsend, a sample projects for Adobe Flex with the Cairngorm MVC framework. The app is running in a browser, using the OpenFL library, and compiled to JS with Apache Royale. Displays an Employee List screen containing several employees, and "Boles, Matt" is highlighted. An Add New Employee button and a Logout button are visible.Screenshot of Cafe Townsend, a sample projects for Adobe Flex with the Cairngorm MVC framework. The app is running in a browser, using the OpenFL library, and compiled to JS with Apache Royale. Displays an Employee Login screen with user name and password already filled out.
000 0
Josh Tynjala @joshtynjala.bsky.social · 12/08/2026
For additional context, here's my blog post about the original demo of Flex running in JS with OpenFL/Royale from 2021: joshblog.net/2021/adobe-f...
joshblog.net
Adobe Flex 2 running on OpenFL in JavaScript instead of SWF? | Josh Tynjala
010 0
Josh Tynjala @joshtynjala.bsky.social · 12/08/2026
In 2021, I demoed a few Adobe Flex components running on top of OpenFL instead of Flash. The AS3 code compiled to JS using Apache Royale. Recently, I made a ton of fixes to OpenFL and Royale. Here's a screenshot of the Flex Style Explorer sample compiled to JS. Styles, binding, states: all working!
Screenshot of the "Style Explorer" sample project running on Adobe Flex 3. A sidebar on the left contains a tree with UI component names. The middle section includes some controls to customize appearance, like colors. The right contains a "sandbox" with some components that will update automatically when changing styles.
110 0
Josh Tynjala @joshtynjala.bsky.social · 15/07/2026
Among the loudest of those who embrace AI whole-heartedly, there’s a complete lack of empathy for anyone who hesitates. It’s actually incredibly off-putting.
020 0
Josh Tynjala @joshtynjala.bsky.social · 28/06/2026
It’s all browser-based. I have a local web server to manage the karaoke song queue, which folks can load on their phones over wifi, and the video/audio are cast from a tab on the Chromebook to a Chromecast connected to my TV.
000 0
Josh Tynjala @joshtynjala.bsky.social · 28/06/2026
Pulled out an old Chromebook that hasn’t had new updates in years. Flashed the MrChromebox firmware and put ChromeOS Flex on it. Up to date again. Pretty easy! My wife and I sometimes have a karaoke night at home, and this Chromebook is what I use to run the show.
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
I also couldn't successfully run Affinity on Asahi Linux, since the M1 CPU is ARM64, but now I have a chance to try it again with Fedora on x86_64.
000 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
However, I was happy enough with Asahi's Fedora base, so now I'm trying Fedora on a different machine with x86_64 architecture that I had lying around. So far, it wakes properly on mouse/keyboard, and the test suite that caused the system freeze passes successfully!
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
I discovered that a couple of other Linux devices, including a Raspberry Pi could finish my test suite, so I think that it's a bug in an Asahi driver or something. Some kind of memory leak, as best I can tell. So I guess Asahi isn't ready for my needs yet. It was great otherwise, though!
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
My first attempt this week was with Asahi on an M1 Mac Mini that I haven't really been using. However, there were things that troubled me. Using the mouse/keyboard to wake the computer didn't work. A particular test suite would cause the whole system to completely freeze, requiring a power cycle.
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
Finding an image editor that I like on Linux may end up annoying me. I used Photoshop as a power user for many years, and Affinity Photo ended up being a good alternative when I discovered it. I may end up trying to run Affinity with Wine or something.
110 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
All of my development tools (editors, compilers, etc.) are available on Linux, and they work mostly as well. I can even actually run some legacy AS3/AIR/Flash stuff. Flash Player 32.0 exists for Linux, and AIR from Harman supports Linux too. Flash Player is a bit unstable, but AIR runs well.
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
I've long used Keepass as my password manager. I used to store my database privately on Dropbox/GDrive. However, I could never find a good Linux client that synced as well as the official ones on Windows/macOS, so that was a pain point. Trying out Bitwarden now instead. So far, a nicer experience.
110 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
While I've kept a Linux box around for testing cross-platform stuff for a while, I think that it's time to daily drive Linux for real, at least for a trial period. I'm more motivated now to find alternatives to some of the things that were giving me issues.
100 0
Josh Tynjala @joshtynjala.bsky.social · 05/02/2026
With Microsoft and Apple both embracing AI with too much enthusiasm, and Windows and macOS seeming to get worse and worse with usability issues, upsells, and bugs, it's contributing to a feeling in me that tech is in a very dark period. I've decided that I'm going to actively try to switch to Linux.
120 0
Josh Tynjala @joshtynjala.bsky.social · 03/06/2025
And here's a couple of previous posts that I'm particularly proud of that I haven't shared on BlueSky yet. #Haxe #OpenFL OpenFL devlog: The importance of text metrics joshblog.net/2025/openfl-... OpenFL devlog: HashLink/C compilation joshblog.net/2024/openfl-...
joshblog.net
OpenFL Devlog: The importance of text metrics | Josh Tynjala
020 0
Josh Tynjala @joshtynjala.bsky.social · 03/06/2025
#OpenFL devlog: How I implemented the scale9Grid property. It is sometimes called 9-slice scaling, but Flash doesn't just slice it up display objects into 9 bitmaps. It adjusts the placement of points on the vector shapes, which leads nicer bitmap/gradient fills. joshblog.net/2025/openfl-... #Haxe
joshblog.net
OpenFL devlog: scale9Grid | Josh Tynjala
161 0
Josh Tynjala @joshtynjala.bsky.social · 24/03/2025
Do you donate to any open source projects on Liberapay? Would you like to support my contributions OpenFL, Feathers UI, vscode-as3mxml, vscode-swf-debug, or anything else? Here's my new page: liberapay.com/joshtynjala Thanks for the support!
liberapay.com
joshtynjala's profile - Liberapay
Josh Tynjala is a member of the OpenFL leadership team, and he created Feathers UI. Josh also maintains the vscode-as3mxml and vscode-swf-debug extensions for Visual Studio …
020 0
Josh Tynjala @joshtynjala.bsky.social · 05/03/2025
And, in case you missed it: snake-server, a simple local web server for Haxe haxelib run snake-server --port 8080 It starts a server on port 8080 serving static files in the current working directory. joshblog.net/2024/introdu...
joshblog.net
Introducing snake-server, a simple local web server for Haxe | Josh Tynjala
000 0
Josh Tynjala @joshtynjala.bsky.social · 05/03/2025
Introducing hunter, a CLI file watcher for Haxe. haxelib run hunter "haxe compile.hxml" ./src/ joshblog.net/2025/introdu...
joshblog.net
Introducing hunter, a CLI file watcher for Haxe | Josh Tynjala
110 0
Josh Tynjala @joshtynjala.bsky.social · 22/11/2024
Created @feathersui.bsky.social to post Feathers UI news here on Bluesky. Give it a follow!
010 0
Josh Tynjala @joshtynjala.bsky.social · 06/04/2024
Scene graph?
100 0