draft0 - a shared blog by just some people

Menu

Entries tagged 'cat:Software'

SBWG 0.11.1

I'm glad to have this version done and published. Even though it has new features compared to the last published version, I've used it enough to feel relatively comfortable saying it is also more stable and has fewer bugs than the last version. There are known bugs still left. But those aren't new.

Caching options and settings are slowly getting a bit elaborate, but also close to what I imagined them being able to do. There are new cachegroups and parts of entries can now be chosed as individual cachegroups, giving the user more control over what is cached and what caches are used. The lifetime of caches can now be set to make sure that no matter how the caching options are used, no outdated content, tags, attachments, etc. will stay on the web site for too long because cache files have been forgotten to be purges. The cache lifetime can be chosen from 1 second to unfinite. The directory used for persistant caches can now be chosen via command line option. I think the caching options are now in a state in which they can seriously be used reliably. Changes to existing cachegroups, like in previous versions, will probably not be made anymore. Just more cachegroups will be added.

The README file has grown a lot. Not only from new features and options. It's now also more complete. A lot of bugs have been fixed. And some general little code quality improvements took place. The stylesheets of the example web site have been improved a bit.

The messaging and logging system has been completely rewritten. It's not really an important part of the script and strictly doesn't matter for its functionality at all. But I decided to have a messaging system and a logging option that doesn't rely on shell redirects. So I did want to redo it properly. Different message types can now be redirected using file descriptors. The option parser has also been party re-written. It's approaching a state in which it's close to what I think personally a complete option parser for Bash should be like.

Alternate styles can now be defined in a web site's settings file. That way alternate style sheets will be offered to the web browser. If the browser supports alternate style sheets, the visitor can select from them to view the page in a different style. There is now an option to change the tagstyle, enabling a web site to have tags of the same type grouped for a more readable look of the entries' headers. Tags now show in parenthesis the number of entries that carry that tag. The number of file attachments is also displayed below entries.

The options for generating a single entry, page or gallery that is not located in the input directory/isn't actually part of the web site can now be used. They were very buggy or nonexistant before. Entries (and other items) with duplicate names are handled in defined ways now. Text files can now be used as file attachments to entries. But if the script determines one to look like a SBWG source file, it is omitted/not displayed/not linked to.

There are still big plans for future versions. Small and big features as well as a complete re-thinking of how the input directory is structured. Nicer looking web sites, more flexible command line options, more options for speeding up the script in cases where a complete website is updated/re-built. A pause like the one before this release will probably occur more often in the future.

Comment via email

I remember when Firefox got the new feature to re-open the last closed tab. That was a real useful invention. Do you know what we did before that was possible? … Yes, it was exactly how you imagine it.

I also remember when web browsers didn't have tabs. I'm still not sure whether that was such a good invention after all. Why is there no popular alternative? Opera folded a long time ago with its thumbnail buttons. There are extensions to order, manage and group tabs differently. I think I'd like to try vertical tabs in a bar again for a while. Or just separate windows. Let the window manager manage them. There must be a good reason why every attempt to do that is quickly abandoned. But I'd still like to try it. There are browsers that don't have tabs. But those don't have an engine that I'd like to use for daily web browsing.

It doesn't look like there's any interesting setting to change the tab display in Fitefox.

Comment via email

Bash Tip

In a script, if you open a file descriptor like this: eval exec 3>&1 and redirect output from certain commands to it like this: echo blub >&3 then you can redirect only that certain output to a different file if needed when calling the script. By default all goes to stdout, but when called like this: ./script 3>>file1 >>file2 then you can check the separated output in file1 and the rest of stdout in file2.

Comment via email

SBWG 0.10.11

It's been two months since I published a new version of SBWG (and therefore since I worked enough on it to make me feel that an increase in the version number may be justified). I hardly get around to working on it, lately. But when I do, I try to make some solid small steps towards the improvements I wish do be done to SBWG.

So, now there is a new version (0.10.11) but I haven't published it yet because before I do I want to test it a bit more when I'm not as fucking tired as I am right now. Writing this entry could actually be considered part of the testing that I still want to do. But as I said, I'm fucking tired right now. So I'll continue this entry another time.

Edit 2022-09-12: I did some tests with fake content offline and feel confident that I fixed more than I broke in this version. I'll add it to the project page soon.

Two long procrastinate areas that have been overdue to get fixed for a while now are permanent caching and parallelisation. For permanent caching, the bugs that I found are fixed. Aggressive caching with option `--cache` (`-C`) works and certain groups can be selected (excluding others) for permanent caching. In my test this speeds up everyday web site re-generations by up to 100%. But it also means the user has to be aware of the cache files that persist after SBWG is done and will be used the next time. Changes to existing entries will not take effect without removing the relevant cache files. For parallelisation, the bugs that I found and that affect the generated HTML are fixed. I still consider parallel mode to be experimental. Sometimes messages on stdout are weird or cut off. But who uses very verbose mode and looks at every message anyway? Parallelisation is functional and usable is what I mean to say. In my test on a Core i5 with 4 cores (8 threads) it speeds up everyday web site re-generation by around 380% with default settings. It depends a lot on how much of web site generation is generating thumbnails and other image sizes of file attachments or gallery images. Those aren't sped up that much because the CPU already is the bottleneck for those. HTML file generation profits more from having more parallel threads than CPU cores (or threads) running.

Comment via email

Klik & Play

I have been wanting to write about this piece of 16 bit Windows software for a quite a while. I don't know why.

I'll just start this entry and continue whenever. Just want to have it started for now…

When I got my first own computer - that must have been around 1996 or 1998 (probably closer to 1998) - I got most of the software that I used for free from magazines that came with diskettes or CDs. Because it was cheap. I reckon the publishers didn't really pay for the software that was on them, or may even have gotten payed for including restricted freeware/shareware on them. Because most of these magazines weren't even pricey for the magazine themselves, and you got the software for free. One of these disks included a demo of "Klik & Play" (That's how it's spelled everywhere. I'm pretty sure it was spelled "Klik 'n' Play" in the logo/intro animation, though. But whatever.) A programme that promised to enable the user to create computer games without previous knowledge, without writing any code, without knowing how to programme at all. I checked it out just because it was there. I remember thinking "who are they trying to fool with that language and why?" because of the slogan and promises (that I don't remember word by word). But after playing with it for a while, I was positively surprised by how true the claims seemed to be. You could really create a video game without knowing how to code.

I thought this piece of software genius back in the day. I was - idk - 12 and hadn't really thought of writing my own software. Computer software, in the minds of the people that I had to do, wasn't something that you wrote or edited yourself. Creating your own programme, writing your own code wasn't really in the realm of possible things to do with a computer. Almost as much as it is viewed now. I mean, editing a .BAT file in DOS was the hackiest one would get among my friends, and even that was rare. So the fact that the developers (Europress Software - Wikipedia credits Francois Lionet and Yves Lamoureux) managed to allow me, to create a simple, 2D, actually playable game, and the way they managed to allow this by using mostly to only the mouse, impressed me.

I think I don't want to explain how creating a game with Klik & Play works in detail. You can search the web or watch a video for that. But to get an idea of what it was like, and of how simple it was: On any given screen ("level") you can click an icon to add an object. You can select from a number of categories or add your own graphics and GIF animations. Then you could choose whether that object is just a background object (not doing anything, not moving, not interacting with other objects, not changing, ...) or if it represents one of the players. If it's a player, you can choose a set of controls. Most of the actual programming takes place in a table. On one axis are all the objects, on another axis something that can happen to or with them. And in the fields of the table, you choose what's supposed to happen when this circumstance ever comes true. So the table sort of represents a huge set of possible interrupts. Common things that can be acted upon are: An object touches an edge of the screen, an object touches another object, a key has been pressed and released, ... And examples for possible actions are: Move an object by incrementing/decreasing coordinates or by setting them to a fixed value, changing an objects velocity, jumping to the next or a specific screen ("level") in the game, increasing the player's points by 1. Just with there few examples, you could: Make the player object jump when you hit the space bar (e.g. in a jump&run style game), make it stand on the ground object and platforms (e.g. in a platform style game), make it move left and right when you hit the arrow keys, make it reappear on the other side of the screen when it leaves of side (like in Asteroids), make it collect and count coins, make it die when it touches a deadly enimy and only one life was left on the counter, go to the next level when this one is won, ... and much more.

Note that this is all done by only clicking on objects, buttons, lists, menus. Once you got used to the interface and know what's available, it's really easy to use. There is a feature that makes getting started with a new game even easier though. You can run the game in a mode where every event for which an action can be defined, interrupts the game and lets you choose an action (or choose that for this event it shouldn't ask/interrupt again) and then continue the game. The ball touched a stone, what do you want to happen? Bounce the ball, delete the stone object, increase variable A by 1, play CLICK.WAV. The ball touched the left edge of the screen. What do you want to happen? Bounce the ball, play CLACK.WAV. …

I think I could have handled writing code myself at that age, at least after having created some silly game-like things in Klik & Play. But nobody showed me and teaching myself seemed overwhelming. (It wasn't really. Good books and reference guides existed back then. But I didn't know.) Anyway.

You could play the game file by opening it with Klik & Play or you could compile it, which produced two files: an 16 bit EXE and a game file. I think the latter contained all the graphics and sounds and the executable was the actual game. But I'm not sure.

There were a number of programmes around in the 90s that promised to let you programme and/or create your own games without knowing anything about computers first (or that made some similar claims of that sort.) I tried two others, that took a completely different approaches. But I think they deserve their own entries. I could probably plan to make a series about these sort of tools where I start with the goal to create a complete list of functional, worth mentioning programmes, and end up with a pile of unexpected feelings of resignation over the fact that there are too many products to mention, like I did with alternative operating systems.

(tbd: proofreading, add links, add screenshots, fix misremembered details, write continuation about Klik & Play games.)

Comment via email

SBWG 0.10.10

I decided to publish a new version of SBWG. I hardly got around to editing it in the last few months. So it doesn't really contain the new things that I had for a while intended for v0.10.10. But there were a few bugs that I wanted to have fixed in the latest published version. There still are known bugs. But now there are a few less.

Well, since it doesn't really contain anything new that's relevant, I didn't have to create this entry. But I did, so I'll use it to say I also fixed the RSS feed of draft0 and the menu link of steephlog on mobile. Bugs that I didn't know I had introduced in the last update and that were very happy that I didn't test things beforehand.

The things that did change since my last SBWG update just aren't that interesting. But I'll list some here, nevertheless: Entries can now have custom notes (using the 'note:' tag; Topic tagpages now also show the author names of entries; Srickied entries are now excluded from the RSS feed because they're just used as notices at the top of tagpages and don't belong context-less in the feed (there is a better solution planned); Error reporting inside of the script now includes information on the basis of which the clean-up routine can decide how to handle things differently for different errors and stuff; SBWG now locks directories; There is now a flag that hides attachments to an individual entry that are of a specific mime type, and, you could just read the CHANGELOG file instead of this if you really are interested in these little changes.

It'll probably continue to be slow in the foreseeable future. There are a lot of ideas in my head and several bugs in the code and probably vice versa. But time… not so much.

Edit: Oh, and another thing: I started to test updates and changes that I made to SBWG live on this web site because it's more fun if something breaks every other day. I'll pretend I don't mind.

Comment via email

Alternative Operating System: MenuetOS and KolibriOS

This entry is referencing the entry 'Alternative Operating Systems'.

MenuetOS

This is a really interesting one. Or two. I'll start with MinuetOS. Written in Assembler for 586 systems, open source, very impressive, performance- and size-wise. Including the included applications it fits in 1.44 MB. The boot time on my Core2Duo isn't easily measured because it's completely done before my monitor adjusts the resolution from the boot menu to the desktop. But when I chose the same resolution it uses for its boot option screen, I learned that it boots up completely pretty much instant even if the monitor doesn't have to switch modes. A guess writing 100 % in Assembler makes this possible. Very promising software, but a small community. The developers have been very dedicated when the 32 bit version was still under active development. So it is very stable, packed with useful little applications, especially for development and debugging, but also for daily use and casual gaming. This 32 bit version is not actively developed anymore.

There is a 64 bit version, which is not open source. I'll mention the reason in the paragraph after the next paragraph. It's where the development of MenuetOS is happening nowadays. I don't know how far it has changed since the 32 bit version. I didn't try it, because I'm looking for a 32 or 16 bit system. So, the source is not available, but the information available should be suffice to write drivers and applications for it. Edit: I've tried the 64 bit version briefly. Since there has been years of relatively active development between the last (pre 1.0) 32 bit version and the latest 64 bit version, the changes and advantages are very noticable. If a closed source OS is an option, the 64 bit version is surely what you'll prefer using.

There is a CD image of ~ 22 MB of additional applications that I didn't really try. But it's worth mentioning that there are more than the very basic applications available. There's a media player, even some networking tools (FTP, telnet, but no SSH, as you might have guessed). There is a very rudimentary shell. But it is obvious that the developers' focus was on GUI programmes, as even the ping tool is used by opening a window, entering the target in a text field and starting the ping with a button. Most things worked flawlessly during the time I've tried MenuetOS. But there are a couple of things that may be considered annoying by a demanding user. The most obvious to me was that the mouse is very hard to use. Stopping the pointer in a particular spot takes practice. It seems to drag behind quite a bit. It takes time to do something with a mouse. And when setting the speed slower the pointer sometimes starts moving into the opposite direction. Not completely a matured OS. But many parts are matured and it is usable.

KolibriOS

And then there is KolibriOS, a fork of the 32 bit MenuetOS. It doesn't claim to be a fork, though. Its heritage isn't mentioned on the web site. Just once in the web forum by somebody asking about it. Every mention of it in the source code has been removed, but copyright notices have been added by the "new owner". That makes this fork a pretty vile act. I don't know what the motivations behind this have been. It is pretty clear that the KolibriOS developer didn't start KolibriOS from scratch, no matter how much they try to make it look like it. There are people who learn about and get into KolibriOS who don't know where it came from. So, after this fork the developer of MenuetOS has decided to not publish the source code of the new 64 bit version of MenuetOS. I felt it relevant to get into all that because making a decision for KolibriOS and against MenuetOS can be seen as a political statement. (And I'm not saying this in any way as a reference to current international political happenings. KolibriOS is sometimes called "a Russian OS". But people who speak out against using KolibriOS because it's Russian and therefore evil should either produce some sort of evidence, hint or at least rationale for why the OS or its developers have any connection to the war in Ukraine or shut up.)

So, back to the OS itself. It's not fully compatible with MenuetOS. As with previous versions of MenuetOS, some programmes still run, some have problems and many just don't work any more on the new version. I don't know if there are even some programmes left that have run on both systems.

There are still 1.44 MB images for floppy disks being published. But for my first impressions I chose the large image that comes with many more applications. That image is over 130 MB, which is likely mainly due to the applications that are not written in assembler. But still, a multiple of the CD image with additional software for MenuetOS. I'd have to compare them in detail to be able to say why that is. The set of applications that is included in the large KolibriOS image is very good for basic requirements and significanty surpasses what's usually included in OS images. There are editors, file browsers, development tools, quite a few casual games and a few not so basic applications. Some not written in Assembler just for this OS, like DOSBox and Netsurf, others impressively small and fast. Netsurf being the only web browser that's available for the OS makes clear who might want to consider using this OS and who might not.

The whole experience of using KolibriOS was a bit smoother than using MenuetOS. That is, almost everything was perfectly smooth, nothing ever crashed. But, some of the not so basic applications are more resource hungry than what you would expect from an OS written in assembler (which is because those applications aren't written in assembler and probably ported from another platform with functionality as the only requirement). For example, the video player would use hundreds of MB of RAM for the playback of some video files. The whole system would become less and less responsive, even though there were still GBs of RAM unused. I don't know what codex' are implemented and how. But some formats wouldn't play at all, bringing the entire system to a halt until I was able to kill the media player.

The size of the complete KolibriOS image (way over 100 MB, as compared to under 25 MB for MenuetOS) shows how the goal of keeping everything small and fast has been overlooked more and more when porting software to run on KolibriOS. But also that more application have been ported. Those are not part of the OS if you use the normal floppy or CD image. But there is one with everything pre-installed. The fact that those extra applications don't run as fast and aren't as small shouldn't be a problem and isn't a fault of the OS. But the fact that no alternatives have been written specifically for Kolibri might be restricting its use in practice.

The following screen shots are all of KolibriOS.

File Attachments (14 files)

Comment via email

Alternative Operating System: Solar OS

This entry is referencing the entry 'Alternative Operating Systems'.

Solar OS

Solar OS is a one to few person project. An OS with a GUI with an early 90s feeling. Closed source, if I didn't miss something. There is an API reference, but not much help beyond that. I didn't see a software repository mentioned anywhere. I guess the most likely usage is with your own custom applications or ported software.

Solar OS's advantages are definitely its small size (< 1.44 MB) and how fast it runs (a 386 with at least 8 MB RAM should be enough). I booted it from a USB flash drive (using grub and Syslinux) on an Athlong 64 X2. It was as fast as it could be, of course. Although, movement of the mouse pointer is very laggy with screen resolutions higher than VGA. With HD resolutions it can't really be called usable with a mouse anymore. I don't know if that's a driver issue with my graphics hardware or what. This is not a problem with other systems that use a simple VESA driver.

But, there wasn't much to do to test how well, fast, comfortable, beautiful and error-free everything runs. There aren't many applications included. The things that are included do a good job of demonstrating the OS. There are things like a process manager, a picture viewer, a very simple text editor and other tiny demo and system applications. And there is a help decument, debugger, things like this. For a proper test, I'd wish for more applications to use for practical work. I don't know what exactly. It depends on what you need the os for. Maybe writing your own application would be best included in a test that aims to collect for experience about the OS.

It crashed after less than half an hour trying it out. Because it stopped responding before I made any screenshots and I didn't yet bother to boot it up again, see the screenshots page on the project web site. There are many screenshots that paint a good overall picture of the OS and its GUI.

Comment via email
Mastodon