Sunday, March 10, 2013

Some tweaks and updates to Thumbnail

Awhile back I ran across a handy little program called Thumbnail that could be used to create embedded thumbnails (and other info, like image dimensions) in the resources of image files so that, for instance, the image icons would actually show little previews of the image itself, and you could sort the images by dimensions, etc.

Unfortunately the way it handled the image dimension attributes was a bit different than what is used by Tracker in Haiku today. So Haiku user bbjimmy did some manual tweaks to the app's resources (hex editing the binaries using DiskProbe) and brought it a little more up to date to be functional with Haiku today.

Inspired by this, I decided to also create a new HVIF icon for it: Thumbnail.hvif.zip

I also think it would be great to be able to get our hands on the original source code, but thus far I haven't had any luck tracking down the author, Thorsten Seitz, who wrote the app around 15 years ago. :(

So in the meantime, you can download the file(s) here:

Here is the original package that was made for BeOS R4. This doesn't work quite right with Haiku.

Here is the updated version for Haiku which includes the English and German versions, updated documentation, and the HVIF icon for it.

I hope you enjoy it as much as I do.

I had a few other thoughts while putting this new package together, but I'll save them for another post. ;)

Saturday, March 2, 2013

A Haiku style makeover for the classic Minesweeper

This all started with me noticing an email on the Haiku development mailing list mentioning a "Tri-Edge AI" having done a Minesweeper game as part of the Google Code-In 2012.

After downloading, compiling, and testing it out in Haiku, I felt like seeing if I could give it an improved Haiku look and feel. I also had a number of ideas on how it might be improved as a demo and game for Haiku, since it is small enough that it seems like it could be an excellent demonstration of how to program a good looking program sticking closely to the Haiku look, feel, and way of programming using the Haiku API.

For example, instead of using PNG image resources I thought we could use HVIF icons along with the native Haiku API to draw the game board and graphics in the game. This should allow us to scale the game board to make it more easily seen for the visually impaired, reduce the size of the over-all package (by reducing the graphic resources by ~75%), and further serve as a good demo of using the Haiku API to its fullest.

I also question the need for some of the added features in Tri-Edge AI's version of the game, since the goal here is to basically develop a modern Haiku version of the original BeOS Minesweeper game that was bundled with the OS. That game lacked animations, sound effects, etc... and as such for a small bundled application I think those things are too much for the intended goal. I'd strip it down to the more basic functionality and put the extra work into smoothing the aesthetics in the Haiku style, giving it some flexibility of the type you find in the Layout Kit (leveraging the API and native widgets, font rendering, etc rather than brute forcing everything with images), the use of HVIF vector icons for saving file size and allowing flexibility in displaying the images, and so on. Make it really illustrate what the Haiku API and associated technologies have to offer while still sticking very close to the functionality and feel of the original BeOS game.

(I'm not trying to knock some of the additions. For instance I think the little explosions are cute, and sounds could be neat... but think they're just overkill for a basic demo/game and too much of a departure from the original for a bundled demo/game.)

I've done up 3 mockups so far of the "in game", "game over", and "game won" screens to give an idea of the look/feel I'm going for.

The sad part is that I don't have the programming skills yet to accomplish this myself, so I'm hoping that someone who does can implement the changes. ;) heh

I can certainly contribute to the design, and I can do the icons etc... I just can't write more than the most super beginner level basic C++.

I've written up an enhancement ticket on the Haiku development tracker for later official reference.

UPDATE: Check out my updated designs for this in my post titled "A Haiku Minesweeper update and a theme for BeMines".

Saturday, August 18, 2012

Updated Gource visualization of the Haiku Git repository

I had done a version of this around 5 months ago, but had a few glitches in it due to features that weren't working at the time (since fixed), and some bugs in the physics parts of Gource that I since learned how to work around... so recently in response to a request for an updated version in relation to an upcoming Haiku on-line conference, "Haiku Down Under 2012 - Beta Blockers", I decided to tackle it again and make a slightly improved version.

Just to be clear, the conference starts tomorrow morning Australian time, but actually tonight at 7PM EST time (Sunday 19st August, 2012 - 9AM (GMT +10))! So be sure not to miss it! See the conference website for more information. Also try this time zone converter: http://wwp.greenwichmeantime.com/gmt-converter/ I found it easier to use than the one linked on the conference website.

For convenience I'll include the full description here;

Visualization of activity on the Haiku OS git repository done with Gource.

https://www.haiku-os.org/ http://code.google.com/p/gource/ https://www.haiku-os.org/guides/building/get-source-git

I used a combination of the Gravatar script ( http://code.google.com/p/gource/wiki/GravatarExample ) and some custom done icons for some of the users, replaced the default user icon with a modified "People" icon from Haiku, dropped in the Haiku logo, and did a number of other tweaks.

Command line:

gource --hide filenames -c 2 --load-config gource.cfg --max-user-speed 100 -r 25 -o gource.ppm

Encoding line:

ffmpeg -y -i audio.mp3 -vcodec ppm -r 72 -f image2pipe -i gource.ppm -vcodec mpeg4 -r 29.97 -preset veryslow -q:v 1 -threads 8 -b:v 10000k -bf 0 -comp_duration 204 -ac 2 -acodec copy gource.mp4

Config file:

[display]
viewport=1280x720

[gource]
auto-skip-seconds=0.01
camera-mode=overview
default-user-image=person.png
font-colour=ff7600
hide=progress
highlight-colour=ffe980
dir-colour=d5eaff
#highlight-dirs=true
highlight-users=true
key=true
logo=HAIKU logo - white on transparent - small.png
seconds-per-day=0.01
stop-at-end=true
time-scale=1.2
user-image-dir=.git/avatar/
user-scale=8

This is about as good as I could get the video without the size being too excessive.

I also kept having trouble with YouTube making all my video uploads into grey pixelated useless garbage. :( So I'm trying this one as MPEG4 to see if it makes a difference.

I might do a nice 1080p copy of this after my new monitor arrives, if I can get this YouTube video scrambling problem figured out, and if I can free up enough disk space.

I decided to add music to this version on the suggestion of someone in #haiku... and I think it adds a fun little twist to it. The selection I used was "Flight of the Bumblebee", which seemed perfectly fitting to the frenetic pace of the development shown in the video.

Friday, August 10, 2012

ioQuake3 update for Haiku

Over the past several days I've been playing with some of the open sourced id code on Haiku. As part of that I decided to try updating the version of Quake3 that was in Haiku Ports.

Based on some of the previous patches that were submitted, and some invaluable help from the folks in #haiku, I updated the ioquake3 open source version to the latest revision (r2306 as of today) and got it to compile and run again.

You need one of the latest Haiku nightly revisions, an install of SDL 1.2.15 from Haiku Ports (or from installoptionalpackage), and the proper pak files (either official ones from id with the accompanying q3key file(s), or possibly some open source versions but I'm not sure about those) as prerequisites. It won't compile and run properly without these.

Currently the frame rate is unplayably low (2 to 4fps on default settings) due to the current lack of hardware acceleration. So even with the details turned down etc you're probably not going to get more than about 7 to 10fps at most.

I was playing it yesterday just fine on Haiku r44483 gcc2h on bare metal (installed directly to my hard drive), but today when I was finishing up the patch and bep file on Haiku r44507 gcc2h while running under virtualbox, I kept getting KDLs (system crashes to the kernel debugger) after I exited the game.

I've submitted the updated bep and patch to Haiku Ports, and a bug report about the KDLs to Haiku's Trac.

If you want to try this out yourself, first make sure you have HaikuPorter installed (follow the directions on the main HaikuPorts page), then grab the r2306 bep and patch I submitted and place the bep file in "/boot/common/develop/haikuports/games-fps/quake3/" (you'll probably have to create the "games-fps" and "quake3" folders), and then place the patch file in "/boot/common/develop/haikuports/games-fps/quake3/patches/". Then run "haikuporter -i quake3" to compile and install it.

I haven't tested this under a gcc4/gcc4h build yet, so I have no idea if that works or if it performs any differently.

Although I'd like to hope that this might help motivate some folks to work more on the hardware acceleration issue, I think the issue is more complex than that. The up to date Mesa builds require gcc4, and probably any related stuff like current hardware drivers for the video cards etc... so it's impractical to consider both a fork and a backport of these to gcc2 that would have to be maintained independently etc.

So we probably aren't going to see a lot of improved features like this in Haiku until after R1 (the first full official release of Haiku, meant to have binary compatibility with the last release of BeOS, which was gcc-2.95.3 based) when the builds can switch to gcc4 as the default and pull a lot of modern code into the main official build.

The "Team Arena" mission pack seems to work fine as well, as shown below.

New red/green color blind friendly Pe icons

Well, for those who are red/green colorblind like I am at least. ;)

Since I started using Haiku this has always been an irritation to me and up until very recently I didn't even have a clue that the StyleEdit and Pe icons were actually different colors. I thought they were both yellow.

Only when I finally got fed up with confusing the two did I finally take a very close look in preparation to change the color and notice that the Pe icons were in fact green and not yellow.

Here's some of the description from a bug report I filed on the issue;

For people who have red/green deficient vision, the icons for StyleEdit and Pe are almost indistinguishable, especially at smaller sizes where the slight difference in the pencils becomes less pronounces and the overall color of the icon (from the paper) becomes the major visually distinguishing factor.

This is the most common form of color blindness, affecting from 7% to 10% of males.

These 2 links give you an idea how the icons look to color deficient folks. (For me the lightness/darkness is even less pronounced and the papers appear essentially identical.)

So to make a very clear differentiation, I redid both the color of the paper and the writing on the paper (borrowing from the XEmacs hvif icon).

More recently I started working on the Doom 3 source code here on Haiku and again got irritated by not being able to tell the file type icons apart, so I made up new icons for the different Pe filetypes using a variation on the main Pe application icon. So the little document papers have pseudo-code style writing on them instead of the plain lines of a normal text document.

Yes I know about the iodoom3 project. The problem for me was that the iodoom3 source currently is in much worse shape than the albertz repo. Albertz and others already did a lot of work to add things like FreeBSD support and clean up a lot of the numerous warnings in the code and generally make it a lot nicer to work with. So that is the code I decided to work with.

I then used the FileTypes application to drag and drop replace the icons for the main Pe file types.

Just drag the new icon onto the icon preview in the Icon box and it will replace that icon for the selected file type.

Once I'd done that, I could easily distinguish StyleEdit, Pe, and unassociated file types in Tracker and I was a very happy camper.

And last but not least, here are the actual HVIF Pe icons: Download PeIcons2.zip

Monday, July 23, 2012

24 Hour time in Haiku.

NOTE: In retrospect, this issue turned out to be a good example of how not to interact with a volunteer development community. It was a humbling lesson for myself that I followed up with an apology to the development mailing list, not because I was asked to, but because I felt my behavior warranted it and the rest of the development community deserved it. Read the rest of this article while keeping that in mind. Thanks.

After a question in #haiku today I went on a long quest to figure out why 24 hour time settings weren't immediately present under Time preferences when I right clicked on the clock.

First I posted on a previous ticket about 24 hour time in the Deskbar, where I learned that the option was in fact present in Haiku, but had been removed from the Time preferences and was to be found now only in the Locale settings. When I was pointing out that this was still bad design and should be fixed, I was told to stop hijacking closed tickets and go create my own... so I did.

https://dev.haiku-os.org/ticket/8769

Humorously, and as is sadly my inefficient and overly verbose style, I started out by making a long argument about usability... then actually did an informal survey which ended up completely supporting my previous assertions (basically everyone looks at the clock settings first when they want to change a time related setting)... and only in the end did I place the proverbial cherry on top... pointing out with a screen capture that even BeOS R5 gets it right. The very operating system that Haiku very closely bases its design off.

As the ticket points out at length, Windows also gets it wrong and has for years... but at least 2 of the Linux desktop environments I checked did get it right, placing the option easily accessible under Time & Date preferences.

I also did some more digging after that because I wanted to understand the reasoning behind this option being removed, which led me to this exchange on the source commits mailing list: http://www.freelists.org/post/haiku-commits/haiku-hrev43984-srcappsdeskbar (scroll all the way to the bottom to the "Other related posts:" section that shows the rest of the discussion)

What that discussion doesn't take into account however is that this is not merely a subjective change like whether or not someone likes the AM or PM showing, or if they want some separator other than :, or if they want to show seconds or not.

This is an international standard time keeping format that is a necessity in numerous fields in every country around the world, regardless of what other standard they might use. It is a fundamentally basic option.

The 24-hour clock is commonly used [in countries where 12 hour notation is generally used] only in some specialist areas (military, aviation, navigation, tourism, meteorology, astronomy, computing, logistics, emergency services, hospitals), where the ambiguities of the 12-hour notation are deemed too inconvenient, cumbersome, or outright dangerous, with the military's use being the most famous example.

Treating it like some meaningless fluff tweaking option totally fails to understand the issue at hand.

Now with that hopefully settled (and hopefully fixed soon)... I can get back to my Icon-O-Matic UI refactoring mock-ups. And then back to the Qupzilla Haiku theme to go along with the icon I already did for it (which you can see me editing in Icon-O-Matic in the screenshot in my previous post). Busy busy...

Thursday, July 19, 2012

A journey of a thousand miles begins with a single step.

And so I begin a new blog.

I've been using Haiku a little on and off over the past several years as a fun little side hobby, but recently I've started to feel like it's getting much closer to being able to be a full time desktop. It already is for a number of people.

So I've been using it more often... and in doing so I've noticed lots of little things that I would like to work on, or that I have thoughts about... and some that I just don't like, or would do differently etc.

All of this led me to this blog; a place where I can put together all these ideas in my head for later reference, to point others to to help explain a point I might be trying to make, and so forth.

I will probably only be posting on here once in a great while when I run across some new issue that I feel really deserves some extra attention, either for myself or others.