Friday, December 01, 2023

Rust in the Cloud

For the frontend, I have had some good success recently using the Rust-based user interface framework Dioxus to create web applications.  Now I am exploring using Rust on the backend with serverless cloud technologies such as Fermyon Spin and Cargo-Lambda.  You can check out what I have so far in my new GitHub repositories spin-prototype and cargo-lambda-prototype.

Yesterday when I tuned in to watch the livestream of the Amazon Web Services (AWS) re:Invent 2023 conference keynote by the Chief Technology Officer (CTO) of Amazon.com Dr. Werner Vogels, I suspected I might hear something about Rust because the AWS Software Development Kit (SDK) for Rust had just transitioned from Developer Preview to General Availability a couple of days before.  To my delight, Dr. Vogels made the case for switching from Java to Rust in the cloud for reasons of cost and sustainability.  You can watch his presentation on this topic at the one hour mark in the YouTube video recording.


Friday, October 20, 2023

Dioxus Prototype

Previously I made web application prototypes using the Rust-based front-end frameworks Sycamore and Yew.  With the recent release of Dioxus version 0.4, I updated my Dioxus Prototype.  It demonstrates capabilities such as animation, form inputs, and static prerendering.

Saturday, September 23, 2023

Rust-Dioxus Project Setup

Previously I used Angular to make Single Page Application (SPA) websites in the TypeScript programming language.  I then used the Angular tool Scully to statically prerender the SPA webpages for Search Engine Optimization (SEO) and to be able to distribute the website code from a Content Delivery Network (CDN) instead of a web server.  When I switched over to the Rust programming language last year, I needed to learn new ways of doing things.

After a lengthy quest in which I explored a number of nascent Rust-based SPA libraries, I have finally figured out how to make this work which I have documented with step-by-step instructions in my new tutorial Rust-Dioxus Project Setup.  A few months ago I became the Organizer of the Dallas Rust User Meetup (DRUM) so I have created a website for that group that provides an online example of the techniques described in the tutorial.  I will be updating the tutorial over the next few months as my understanding of Dioxus improves in the process of converting my old websites.


Monday, August 28, 2023

Rust Podcast Duos

I updated my list of Rust Podcasts with two new entries:

I have listened to all eleven episodes so far of "Way of the Crab" and just started "Rust Workshop".  Both of these podcasts feature a co-host duo but each podcast has its own distinct personality.


Sunday, July 23, 2023

Rust Mars

I am currently working on converting to the Rust programming language yet another Java applet that I originally wrote a couple of decades ago.  Mars is a tank combat game which provides a demonstration of the use of my Rust-based implementation of the A* algorithm.  Although you cannot control one of the tanks yet, you can toggle on options to visualize how each tank is using the A* algorithm for pathfinding.

I was struggling with a memory leak in Mars until a member of the Dallas Rust Meetup mentioned that the wee_alloc dependency that I was using for memory allocation with WebAssembly (Wasm) was known to have this issue.  I removed wee_alloc and the problem immediately disappeared.  I have since updated my Rust-webpack Project Setup tutorial to no longer include wee_alloc in the setup instructions.


Monday, June 12, 2023

Beginning Rust

Tonight I finished reading Beginning Rust: Get Started with Rust 2021 Edition (2e) by Carlo Milanesi.  I found some detailed explanations for difficult concepts in this book that I had not come across elsewhere including The Rust Book.  I also appreciated that the book teaches the formal terminology for the various language features.

I started reading "Beginning Rust" in parallel with another Rust book for beginners by a different author.  Whereas the other book teaches Rust to the reader by guiding them through example applications, this book focuses strictly on the language as demonstrated with code snippets.  I think the latter approach permitted the author of "Beginning Rust" to do a better job of putting the topics in prerequisite order.

Before "Beginning Rust", I also finished reading Rust for Rustaceans but I will have to read that one again in a year or two before I can review it properly as it was too advanced for me.  I think "Beginning Rust" is a better immediate follow-on to "The Rust Book".  I might look at Rust Atomics and Locks by Mara Bos next.

Saturday, January 14, 2023

Rust Life

I implemented Conway's Game of Life in the Rust programming language and compiled it to WebAssembly (Wasm) so that it runs in a webpage.  I initialized the project directory using the steps from Rust-webpack Project Setup checklist and re-used code from my animated interactive Evolve simulation.


Monday, January 02, 2023

Rust-webpack Project Setup

As part of capturing my lessons learned from converting CroftSoft Evolve from a Java applet to a Rust-WebAssembly application, I started writing a Rust-webpack Project Setup tutorial checklist.  There is enough there now to get the "Hello, World!" example code running that I created for my now obsolete rust-webpack-template tutorial.