After an 8-year break from web development, I evaluated modern tech stacks to build my personal projects in 2024. This post chronicles my journey in selecting the perfect combination of backend, frontend, database, and hosting.
I have some bittersweet news -- I decided to leave Deno. Going to be joining a really cool company, continuing to work in Rust.
Deno was a great place to work, full of really smart folks. I got to work on some great projects: rewriting the HTTP server to nearly 2x throughput, some major refactoring of the event loop and timers to make them an order of magnitude faster, working on rebuilding the V8 -> Rust interface to make it as fast as humanly possible...
... while also improving the developer experience with better errors.
Too many fun projects to count!
I still think #Deno is the best choice for server-side JS and #typescript, robust command-line tools and many other places. It's so much better than everything else.
Looking forward to announcing the new role in the near future and continuing to work in the high-performance #Rust arena. 🚀
Another leak in the JavaScript single-threaded facade (or a bug in Jest, really).
Asserting expect(...).toStrictEqual(...) fails with two structurally identical objects created by two different Node worker threads because their prototypes are not the same (though identical). Asserting expect(structuredClone(...)).toStrictEqual(structuredClone(...)) works.
I wonder how useful and how annoying it will turn out to be. In any case, deleting them would be a few clicks in the editor. But it looks not terrible and it should at least make refactoring safer 🤔
#Shopware 6.6.2.0 released containing 44 bug fixes and cool improvements, especially for developers, for example #typescript support for extensions, automatic compiling of JS/SCSS of plugin sub-bundles, #meteor component library in administration etc.
This project is actually a byproduct of another big thing I'm working on.
Currently, I use YNAB for budgeting, but I've been putting sustained effort into getting my data out of the cloud and self-hosting everything.
I started researching options for budgeting software, and I really couldn't find anything I liked or that felt like it had enough features.
I decided, then, to just whip up something in Excel... which led me to the discovery of Office.js and the ability to build Add-ins for Excel using web tech.
Thus, vue-excel was born.
I may eventually release my budgeting tool for Excel, when it's feeling a little more mature and stable. Stay tuned... ❤️
Still only on a feature branch, but over the past few days I've been working on updating https://thi.ng/geom to add support for polygons with holes and paths with holes (or more generally support for sub-paths, e.g. multiple curves). Since both of these shape types are containers of multiple geometries and therefore require in some situations (e.g. shape conversions) different handling than the other shapes with a single boundary/geometry, adding support for these also includes updating a dozen or so polymorphic shape operators/functions and unfortunately will involve a few of breaking changes. For instance, some of these functions are returning an array of shapes now, instead of just a single one. Also related, some of the other geom support packages (e.g. https://thi.ng/geom-axidraw, https://thi.ng/geom-sdf) will have to be refactored more and partially have been already (likely only internally, though)...
As part of this work, I've also just added example #160(!!!) to demonstrate & test out some of this new functionality:
Congrats to the 9 applicants who got accepted into GSoC with GNOME! 🧑🎓
They'll be working on
• Rework Bustle's Diagram
• Add TypeScript Support to Workbench
• Port Workbench demos to Vala, new library
• Create a web IDE for Tracker SPARQL (2x)
• Mobile/touch support for Papers
• More durable synching for FlatSync
• Port libipuz to Rust
• Add support for the latest GIR attributes and gi-docgen formatting to Valadoc
Buah-eh... until the TypeScript ran the way I had to have it for WebComponents it had taken me forever to search for libraries and I hadn't even started writing the code tests yet… 🤦♂️🤷♂️
Extension.js: a plug-and-play, zero-config, cross-browser extension development tool with built-in support for #TypeScript, #WebAssembly, React, and modern #JavaScript.
Async/await in #TypeScript is essentially “direct style”. It will be interesting to see if Effect, a monadic effect system, will take off, as a case study for #Kotlin & #Scala — although for “direct style”, these have the advantage of context parameters.