TTS, Genode, Haiku

Lightning and MMD build and launch 25jul21

8ish-july-21: Lightning compiles and launches. Cleaned up the build system a bit, will reap the benefits once I wrap up this phase with MakeMyDay later on.

25jul21: MakeMyDay compiles and launches. Was painless, just needed to enable a DrawBitmapAsync() variant in class BView and clean up a hack re. BApp.CountWindows().

So what now ? I'll have to recompute my 'roadmap', but it's already clear I should turn my attention especially towards the Storage Kit, connect nuts and bolts to enable BFile handling, the works.

And yes that was quite a few weeks elapsed with not all that much to show for it. Been working away from home with a long commute time, quite tired when getting back home and not anxious to get on the keyboard... I'll be making slow progress for a while more. In August I'll get a break though. See you then.

ArmyKnife 5.6 builds and launches 3jul21

30jun21: started working on AK.

Needed to work on the build system first, so that it would start compiling at all (need to provide for clean "out of tree" app building, without using the hacks I made for AutoCast), Then had to add missing symbols in haiku lib etc. Got AK compiling-and-almost-linking in a short time. To be clear, compiling it can be done "out of the box" with virtually zero changes (I just commented out the code for customizing keyboard shortcuts, is all, as there is not support for that in HoG).

2jul21: AK links into an executable, but LD fails to load it, looking into it.

3jul21: Was caused by build confusion between "" and "", AK runs now. The screenshot (right) looks almost like it was taken on Haiku, kinda proud of that. Of course I need to implement all the back-end code (e.g. Storage) that is stubbed out. But let's finish the set of TTS applications first.

We're pulling down the website in the near future as it misleads people into thinking we're still offering the old CC5 product line... We'll setup something again once AutoCast-on-Genode is ready.

Linux build success (after quite some pains) 24jun21

Norman ran into lots of problems, being my beta-tester trying to build HoG on Linux, due to my "testing" my build only on Haiku, but not in Linux. I should have anticipated many of these: Had to scramble to adapt my jamfiles so that Norman can build the lib. Good thing he's patient and motivated :-)

But as of today he reports it works, yay!

All caught up 10jun21

I'm done catching up on Genode.

As of this afternoon, HoG builds against Genode 21.05, including our flagship app AutoCast -- didn't hit any significant snag, despite that version being coded for GCC 10.3/binutils 2.36, it all seems fine. Took me no more than ca. three weeks, or about one week per year of "lateness" :-).

In the coming days I'll clean up and commit the updated haiku-kinda-kernel (it's a big "tweak" that makes it use pthreads as required by the new Genode revs), and then I can get in touch with Norman again.

Then I'll return to porting our stuff, back to the salt mines.

Some human-readable prose (down with the mumbo jumbo !) 21may21

What follows is my answer to a station that was enquiring about our status (thanks for the motivation Jim ^^). I thought publishing it might add a "human touch" to this blog in the eyes of normal people, who would otherwise see this blog and its C++ utterances as complete gibberish! Here goes:

> (will the new system work on existing station hardware?)

Well could be. (..) I've prioritized ugprading my work copy of Genode. It was 3 years old, so I'm migrating to 2021 code, which has a newer audio driver, which might work on the AMD based systems we've been producing for years.

Lots of those out there, so big incentive to make audio work on existing station hardware, even if it means pausing my work on higher-level AutoCast code. Though worst case, if I can't get things to work on AMD systems, we'll find cheap Intel-style micro-computers for stations that don't want to spend much on hardware. Intel makes "NUC" micro units that are industrial strength (reliable) and very cheap, among other options.

Now that I'm reading/writing this exchange, I'm thinking again of publishing my "blog" by the way. It's very technical in nature, much more than I ever thought it would be, as every time I open it I feel the need to document my findings of the day, down to the compiler options I've used to solve such and such problem.

But technical mumbo-jumbo or not, in matters of public relations, something is better than nothing :-) Would be frustrating if people thought I was idle at the switch, and not working my butt off to get things done ^^

It would also give an idea of the scale of work involved, the number of tasks I still need to get done etc, so that people pray for me :grin: , plus the big perks we'll get with this new platform. Oh, and screenshots.

Thinking about this also prodded me into publishing this updated timeline to neocities, instead of it gathering dust in the dark corners of my hard-drive. So there.

First upgrade of Genode (take two) 19may21

Been pulling hair for a while, trying unsuccessfully to build against 19.x ; maybe it would work better if I rebuild from scratch (clean slate) ? Building from a build-dir with all my hacks accumulated is no good, let's try to build *from scratch*, and document it.

Genode 18.11

build Genode 18.11 (git checkout etc, as documented) Hit a few snags (OpenBSD no longer provides dde_bsd 5.9 for download, so had to disable it..) but other than that, glad I got it to work, maybe my success will be reproducible in 19.x ?

Genode 19.02

build Genode 19.02 (git checkout etc, as documented) Let's strike the iron while it's hot...

Genode 19.05 (upgrades to GCC 8.3...)

This is the "threshold" rev, the one that switches to a new toolchain, GCC8. I'd really, really like to postpone the punishement of building the new GCC. Let's see if that's possible.

Build Genode 19.05 (git checkout etc, as documented):

Going to document all this in the wiki, clean up, commit, and will tie-off 19.05 in a few days.

First upgrade of Genode 16may21

Made a "reconaissance in force" into Genode 19.02 a few days ago, making my build system clean(er) and flexible enough to choose a new version of Genode (19.02 instead of 18.11). Things went well until "jam t1" : the produced ISO crashes in loader code. Might be due to a libc hack I did during the "clean up" (cough cough). Will investigate. First : finish commits, so that I can work on a solid base.

PS - also "fixed" AutoCast transparency (the usual BBox hack, strange that it is still needed in this public branch). Added (uncommited for now) libroot stuff too, so that background.jpeg can be found with an entry_ref, without hacks, and so that beos.mp3 can be found ditto.

First audio in AutoCast 08may21

Audio, at last!

When rebooting to my USB stick tonight (that's when I generally test ISO images, right before ending my programming day), AC should produce audio. Turns out there was a missing "acpi..." statement in report_rom. That was fixed in my private branch, but I hadn't duplicated the fix in the chiselapp public branch that was forked from it, oops.

Until now I was relying on a year-old ISO image made from my private branch, to launch AC with audio. Now I'll be able to run fresh builds.

Got in touch with Norman this past week ; we agreed it would be interesting to integrate as a package for SculptOS, but there's a stumbling block : my code is built against the Genode 18.11 API, and GCC6 ; I'd need to upgrade to newer Genode code, and it's doubtful whether I can compile the newest Genode code with the old compiler. We'll see.

So, newest roadmap:

When that's done, I can look into extending the set of supported features : Network Kit, keyboard support, BFS attributes, yellow tabs, compile AK/Lightning/MMD, and so on.

Will also have to look into this Genode-only bug some day (maybe it was just lurking, when in Haiku, and gets revealed only now ?) :

	Thread exception/crash/whatever in AC, on HoG, Settings window, clicking on "button pad" items:
	        Error: attempt to reserve zero sized block from heap
	The main window/thread remains responsive, but the Settings window thread is dead.

Demo wrapped up 30apr21

1) published my "" ISO image to Dane and AGMS

2) thought of this marketing pitch I could "sell" to Dane about Q.A.:

Just occured to me that with Genode, ISO images are so small that we can keep a copy of each ISO sent to each customer, for optimal tech support ; when a customer gets in touch with us, we can just dig up the ISO we sent them and replicate the issue (more) reliably.

3) ToDo: get in touch with Norman as well ?

4) ToDo: fix audio output in AC

First work on AutoCast in many months 21apr21

With other life duties on the back burner for a bit, I can speed this up, return to my "Genode public branch/code", and even try to compile AutoCast for it, like I was doing eons ago.

It was easy getting the AutoCast code back in shape and compiling in HoG, took just a few hours to catch up...

Now as expected, I'm hitting tons of "missing symbols" errors, since AC has wider requirements than what I implemented for hog-demos (Media Kit, BSlider, BUrl, BMailAccount, BQuery, BSerialPort...) Just have to get in the saddle tomorrow and get on it.

UPD: 26 april: AutoCast shows up in qemu ! Had to tweak my "run" file and fix broken swap_float() for jpeg translator so that background pic shows up Flashes A LOT though, now that Pulse-driven clock invalidates are done.. Let's see if bare metal flashes less than qemu..

UPD: yep, wasn't all that much hard to optimize Invalidate/painting.


ToDo's and DoneIt's 12apr21

Added: Fixed: Work-around:

First run on bare metal 09apr21

Making progress with my "demo" scenario/ISO. Ran the demo scenario bare metal for the first time (for my public branch I mean, the old "private branch" work was often done on bare metal too).

Things mostly work as expected, except for some menus :

After fixing the above, still to-do:

Font rendering and font metrics 01apr21

This is done: Font rendering in the horizontal dimension seems perfect : horizontal centering, string truncationg, no bug that I can see. Vertical centering took a bit of work, but is now good too (turns out I should have reviewed the ToDos, esp. the one in the BFont ctor).

Progress (repetitae) 31mar21

Commits are done-ish, at last. To complete them I should: So let's say that's done (soon)... What to do now ?

Progress 15mar21

Progress: LATEST done: LATEST todo:

By popular demand... 9mar21

A couple radio stations who use our (TuneTracker Systems) software are asking what's going on these days. That's "popular" enough demand (on our scale :-) to start micro-blogging about it, say, once a week. Plus it helps me sort my thoughts as well. Since this is targeted at our stations, I'll try to keep technical mumbo-jumbo to a minimum, or explain tech stuff in simple terms.

So what's up exactly ? If you're in touch with Dane or me you might have heard that I'm working on "merging" Haiku and Genode. This is long, tedious work, but it feels great to mix a super-smooth user experience (Haiku) and a fantastic operating system framework (Genode). Let's start by describing my planning, broken down into sub-parts.


Work actually started more than a year ago, but it's now being done on, i.e. with proper revision tracking, clean code, and in such a way that anyone can replicate what I'm doing, by cloning that public repository and compiling the code. So with this proper set-up, I can now aim at a few goals or "phases", with the following nicknames: First, I'm making sure that very simple applications with minimal dependancies (like Pulse, Mandelbrot or People) work correctly, fixing bugs as needed.

When that's done, I'll make sure AutoCast compiles and runs as well, on a simple scenario (makeshift BFS partition, not a real file system).

Eventually, I'll reach a stage where I need to port the low-level part of Haiku that is actually responsible for file access (called "libroot") and add (extend ?) attribute support to Genode, for using in BFS or NTFS. I suspect NTFS might be good to us, with its extended attributes support.

In parallel with the above, I should upgrade Genode, since currently I'm still working with a version from 2018. Updating to 2019 and 2020 revs will require adapting to some Genode API changes, and more frighteningly :-) adapting to compiler (tool chain) change. This part of the project might not be top prioritary, but good-to-have, because newer Genode versions have better hardware support, which helps with TuneTracker software.

If all goes as planned, we'll need to "wrap up", i.e. not only support AutoCast but we'll also want as much as possible of its software suite to work in real-world (not makeshift) scenarios. Not to mention the Haiku "desktop". It's unlikely I will be able to port the whole Haiku desktop (called "Deskbar" and "Tracker"), so we'll need to make our apps flexible enough to deal with their absence, e.g. use a more austere "launcher".

In parallel with the above: it might be possible to compile something of use to fellow Genodians, to build community interest. Maybe a simple Mail client ? Or more likely, since it's much less dependant on BFS file system features, an IRC client (Vision's source code) ? Genode has a great port of the "Qt" library; it seems to me this allows Genode to natively run a huge library of software out there, but maybe there's interest in apps with a smaller footprint, rather than the comparatively bigger Qt apps ? Let's hear from fellow Genodians.

Status as of early March 2021

That roadmap is pretty and all, but how far along am I, in the above timeline ; and how long will it take to reach the finish line ?

Currently I'm getting close to the end of the "Pulse" phase. And I know from last year's experience that once I'm there, it does not take much more to run AutoCast "bare bones". The rest is another can of worms though. Not quite terra incognita, but still hard to evaluate yet.

Back to the current "Pulse" phase: that phase is itself sub-divided into the "baseline commit" and "patch" tasks. I'm mostly done with baseline commits, but need to fix a couple bugs (ETA unknown) before I commit my big "patch" on Haiku's baseline code to make it Genode compatible. The patch itself is divided into the "90%" part, and the "plat de résistance" (BView, BWindow, and posix headers). It should take at least a couple days to do each of BView/BWindow/posix. Then I'll create an ISO deliverable. Then say, about a week for the bare-bones AutoCast part. So there you go, I gave you the traditional "just a few more weeks !", but in sophisticated format *g*.

I have a rough idea of the "deliverables" I'm planning on in the future: 1) prep an ISO with Pulse/Mandelbrot, email fellow Genodians and propose to try it out 2) AutoCast: put something in Dane's hands for him to test 3) AutoCast again: get closer to production and/or base it on a newer Genode with better hardware support.

My next micro-blog entry will hopefully conclude on the current phase and introduce the AutoCast phase.

© 2021 ttcoder - Kindly hosted without ads by