Software


CGI Coffee

All about VFX and CGI software (and more).


Develop Cross-Platform CLI and GUI Tools With Tcl/Tk. Powerful, Event-Driven, Open-Source And Future-Proof Toolkit… From the Past?!

What if I told you there exists a language, or a whole toolkit that:

  • Can be used to create cross-platform Console and GUI tools or apps
  • Those GUI apps look native on Windows, Linux and MacOS
  • Supports safe and efficient threading, non-blocking events and I/O
  • Has a small footprint of about 100MB with most common packages installed
  • Can produce very compact single-file apps for any supported platform
  • Is capable of building robust cross-platform Web Apps
  • Has existed and been in use by some of the largest corporations for over three decades
  • Is free and BSD-licensed, so you can do whatever you want with it, or to it

Would you believe me?

indiana-jones-tcl-tk-hero-title

Foreword

Documenting personal experiences on fascinating or useful topics is what I do. Real-time visualization, 3D simulation, data safety, energy efficiency, or even input devices, microcontrollers, and fitness — an endless stream of ideas for new studies and exploration is always on the ToDo list.

This particular topic turned up to be quite a bit more involved than I originally planned. But I promise: all information here is what I myself would've loved to have known before I started my Tcl/Tk toolkit learning journey.

I'm writing this long after my honeymoon phase with Tcl/Tk ended, and will try to be as objective and honest as possible. Both to you, and to myself. I have nothing to "sell" except my personal experience, hoping to better inform you and simplify the "onboarding" process if you ever decide to give Tcl/Tk a try.

Due to its command-centric nature, Tcl is a powerful, yet widely misunderstood language. I want to contribute to the conversation, aiming to clear up this persistent confusion with concise explanations and concrete examples. And a bit of flair, of course, to keep you entertained.

Please note: We’re skipping the "Programming 101" talk here with the assumption that you already have a baseline familiarity with general programming logic. If you know your way around an if statement and know what function is, you're probably ready to dive straight into Tcl-specific structures and syntax. Think of this article as both a "Tcl hands-up and a primer", in hopes to make you, too, discover and appreciate this almost 40-year old technology that quietly powers the world. And maybe convince you to try it for yourself, and spread the word.

As for the "About The Author" — if you're interested, please visit the "About" page.

Ready? Let's go.

Sneak Peek At Blender's DLSS Real-Time Denoiser — You Have To See This!

The Future is finally here!* (almost)

Deep Learning Super Sampling (DLSS) Ray Reconstruction might make its way into Blender (at least, it's in the works). And the potential is, without exaggeration, astonishing.

Unlike "traditional" denoisers, DLSS has a different way of reconstructing an image, and doesn't really care about scene lighting or polygonal complexity. Because of this, it's used in games to "upscale" a rather low-res natively-rendered output to a much higher-res target, like 4K or more. It's very effective and, ironically, despite being an upscaler, nowadays is almost synonymous with the "best quality" rendering preset in games. Simply because more and more devs get lazy and spend less effort on optimization, especially anti-aliasing techniques, simply "offloading" this task to a dedicated (and, unfortunately deeply proprietary) neuralnet upscaler like DLSS.

I bet like me, you have always wondered if this very approach could be used in a traditional 3DCG Creation app like Blender.

Well, wonder no more! Someone took an unfinished alpha version of Blender codebase with a DLSS integration, and compiled it into an actual test build.

Prepare to be amazed.

I can't even...

Apple Making PC Folk Look Good With the macOS Tahoe Update

Hey, remember how in the recent article on boosting battery life on Windows laptops I mentioned how power efficient Apple laptops were? And how one of the factors playing into that was the following:

The OS is bespoke. That means, MacOS runs only on Apple devices and therefore has less overhead compared to multi-platform operating systems like Windows (x86, ARM) or Linux (x86, ARM, MIPS, RISC-V and more)

Well, about that...

Apparently, Apple decided that battery life on their machines was not a priority, and more overhead is better! That includes phones and tablets, BTW, since these also received the dreaded iOS 26 update. You know, the "Liquid Glass" one.

The one, which is absolutely nothing like Windows Vista. Not at all. And stop comparing the two!

apple-liquid-glass-amazing-ui-visibility

Naturally, users were pleased with the new design direction, better UI element readability, and highly praised the decision.

how-to-disable-ios-glass-question-on-forum

In a hilarious development, seems like there are actually even more similarities between macOS Tahoe and Windows Vista in yet another metric — battery life.

On Windows 10 Support EOL

windows-95-poster

The end of support for Windows 10 updates and the aggressive push from Microsoft to force users to upgrade to Windows 11 (which is apparently "incompatible" with tons of perfectly fine computers) reminded me of a certain gem from a bygone era. I bet you've never seen it, as it was a rather obscure parody of the Rolling Stones' "Start Me Up".

“Bought It Up” was a spoof of that track, and one of several parodies and jokes spawned by Microsoft’s relentless use of the "Start Me Up" slogan during the Windows 95 launch in 1995. Windows 3.1 users who got suckered into purchasing a copy of the new OS quickly grew frustrated with its requirements and the resulting upgrade costs.

This song was later animated and shared on the forums as a Macromedia Flash (SWF) movie. Remember those? Yes, Macromedia, which Adobe gobbled up much later, in 2005. So technically this one is from the OG era of Flash. Ah, memories…

Here's the original SWF file if you need it. You can play it using Ruffle, an open source Flash Player emulator.

Just a random piece of the early internet humor culture for ya. Guess history does repeat itself, who would've known, lol.

The Tide Turns: Unity Abandons the Controversial Runtime Fee

Great news to all Unity devs out there!

Yesterday, Unity published a new post on their blog titled "A message to our community: Unity is canceling the Runtime Fee."

You have to read it, to believe it. After what felt like a catastrophic fiasco of a business model change — initially relying on an install count metric, later revised and replaced with a "runtime" metric that would count the number of Unity-made app instances running on client machines — this change of direction both fills me with delight and sends my mind racing.

Why?

I'm sure you're well aware of just how unpopular their previous decision was. So much so, that many developers announced they'd be migrating to other engines like Godot or Unreal. What's even worse for Unity — many devs actually delivered on that promise! This is especially telling, considering how buggy, incomplete, and limited Godot is compared to Unity, particularly with its build platform support. Not to mention how complicated Unreal Engine development can be due to its reliance on C++, making it less small-team friendly.

Still, I can't help but wonder why the whole Unity team including their sizeable board of directors went with a terribly and obviously flawed and under-cooked proposal from John Riccitiello, and just... Implemented it. I understand that Unity is a business with business goals, but such drastic changes to the Terms of Service should be announced well in advance, such as to not shock and drive your existing users away.

It's not my business to try and estimate how many clients Unity lost during this period of turbulence, but I absolutely welcome the return to the original business model. I'm not a fan of Unity making their 6th version require phoning home at least once every 30 days, but you're free to stick with your previous Unity LTS branch if you're content with its ToS. At least until it reaches its EOS, after which you'll have to upgrade. Other than that — good job, Unity, with getting rid of John Riccitiello, and re-evaluating your strategy moving forward.

Here's a backup of the original blog post in case Unity decides to quietly change it sometime in the future:

Unity blog bost backup

Hello Again, Unity. I Missed You

Some time ago I bashed Unity Game Engine (the Editor in particular) for its instability and lots of quirks and questionable changes that took place over the years following the version 4 release of the Editor.

Fast forward to this September. I'm done with my microcontroller shenanigans and have mostly finished the Design Document for the game I talked about quite a while ago (which took a lot of planning, for I am a project manager after all).

What's the next step then? — Exactly!

Prototyping!

So I've been playing with the latest "LTS" version of the Unity Editor 2021.3.7 and...

Wow!

And I mean a good wow:

  • It's rock solid and hasn't crashed once even when I was importing some of my older code and extension methods from the previous game which I wrote in 2012-2015. And 95% of the code-base ended up being non-obsolete! I guess Unity APIs didn't change that much over the years, huh? How cool is that?
  • Package Manager is amazing. Cutting some of the features of the engine from the binary/default assembly and turning those into officially supported packages with the added convenience of being able to download and update them as you please? What a deal!
  • Unity Addressable Asset system (or "Addressables"). Nuff said. This is a feature Unity devs had been dreaming of for like a decade
  • Nested prefabs. I know, I am a slowpoke, since this is not a new feature, but there is a difference: they work. Compared to my previous experience with nested prefabs in Unity when they would crash the editor like 50% of the time when I was editing them – now we're actually usable! Huzzah!
  • Integration with Visual Studio is very solid, pleasure to work with
  • I looks the same, feels the same and despite adding new features like DOTS and burst compiler, Unity team didn't change the paradigm too much, so being a knuckle-headed brute that I am I can continue using ScriptableObjects and MonoBehaviors for most of my objects and scripts. Yay!
  • C#. Yes, C#. That C#. It's not new of course, but it's C#. It's C#, you see. It's not C or C++. It's C#. I love C#, I guess that's what I'm trying to say
  • Also, Asset Store is still a thing. And can still save hundreds of hours of development for a couple hundred bucks
  • Oh, yeah, it's still free of charge for indie devs. Just sayin'

All in all, the time has come...

Unleash the monkey coder!

monkey-coder

MAXXON: Exclusively for ZBrush Perpetual License Holders. Because We Care

November 16th, 2023 update: It finally happened:

Maxon has announced that ZBrush 2024 will not be available as a perpetual licence, making the new features subscription-only.

No comment.

Our Special Offer ©

As one of millions of ZBrush perpetual license holders, today I received this gem of an offer from Maxxon:

MAXXON special offer from the Devil

With the following description:

ZBrush has always stood for innovation and artistic empowerment. That is a philosophy that is shared by the Maxon creative community. We believe in empowering artists any way we can to help expand your capabilities and offer more to your clients. We are confident that having complete access to all Maxon tools, services and training will help you achieve your goals.

Just another bunch of corporate mumbo-jumbo with a poorly concealed attempt at selling a subscription to a perpetual license holder. Classic.

Because We Care

"...We are confident that having complete access to all Maxon tools, services and training will help you achieve your goals."

Allow me to fill in the blanks in this marketing pitch.