Javascript "Promise"

No, Javascript isn't promising you anything. It's just an oddly named object in Javascript, which, despite its queer naming, is worth considering, especially if you are losing too much hair from doing a lot of async callbacks.

Explanation of what it is, why it is useful, how it works, and how to write your own implementation in 90-lines - all here.

Posted on 12 Jun 2015, 06:04 - Categories: General
No comments - Edit - Delete


Small web browser

Since we are in the subject of small programs, is there are any small GUI web browser? Less than 50K, perhaps? I must be joking, right?

Well, you _could_ make a small web browser like that. Just make GUI shell that links in libwebkit.so. Yeah. That would work. May as well create a shell script that launches firefox. Hey, small browser in 512 bytes!

Seriously, can we have a small browser, without external dependency, that weight less than 500K (excluding the weight of the GUI toolkits)?

The answer is you can; and the key to that is libgtkhtml2. This is a HTML 4.0, CSS2 compatible rendering engine that weighs less than 500K. Since it is small it makes sense to have this as part of the system library (it is used by the likes of Osmo, Claws mail, etc for example); and if you already have it as a system library then you can truly makes a browser with the size of less than 50K, linking in this library.

If you don't have it as system library, you can still link it statically and have final stripped executable that is less than 500K (the exact size depends on your compiler optimisation settings, etc).

I have made such a browser, and you can download the source here. In Fatdog64, that has libgtkhtml2 by default, the binary size is really 38K. Linked in statically, with -Os, the binary size is about 350K (on x86_64 build).

Note about libgtkhtml2 source: as you can probably see from the link given, libgtkhtml2 is a dead project. That gnome site listed version 2.11.1 as its final version, but there is (or was) a newer version from gnome-svn (which had also long been defunct) - which, fortunately, has been preserved by the Yocto project here. I took this version, applied as many forward patches I could find (mainly from the also defunct svn.o-hand.com - and also preserved by Yocto), and added my own stability patches. This final copy of libgtkhtml2 of mine is located here.

Final note: libgtkhtml2 is old. It *will* choke, hang or crash on newer CSS3 (and some CSS2.1) or HTML5 stuffs. It does not have Javascript. While its HTML parsing is not too bad (it uses libxml2's html parser - which *is* maintained), its CSS parsing is horrible - instead of a grammar-derived parsing, it uses ad-hoc string searches. I have fixed some of the low-hanging bugs but a lot more still lurks in it. So I strongly advise you against using it for general purpose web browsing - for that you can have netsurf, links2, or other excellent projects - and while they aren't as small as libgtkhtml2, they do work for modern Internet.

The only reason why I tried to resurrect this, is to use it as a small (local) help viewer for HTML contents - just like mdview, in my previous post. After all, you don't want a help viewer that links to multi-megabytes webkit libraries, do you?



Posted on 12 Jun 2015, 05:58 - Categories: Linux General
No comments - Edit - Delete


mdview: a small, GTK-based markdown viewer

I am quite annoyed by help-viewer programs that are huge and pull out a lot of dependencies, sometimes a lot more than the main programs themselves. After all, their purpose in life is just to support the main program and to provide a convenient UI to view some pre-formatted text files.

Then I found that hardinfo has a very nice help viewer which is very under-utilised (because there is hardly any help documents in it). It supports direct viewing of markdown-formatted files (well, a subset of markdown), and it has *no* dependencies other than GTK.

After playing with it for a while I decided to detach it out from hardinfo, polish it a little bit, fixed a few bugs and added some more features, and now I have mdview, a 60K-sized help/markdown viewer.




From the homepage:

mdview is a super light-weight, GTK-based markdown files viewer. It has no other dependencies other than GTK itself. It reads and displays text files in (a subset of) markdown format, and provide live links to other files as well as to the Internet. It is ideal for showing help files (its original purpose), user manuals, and other small set of hyperlinked markdown files.

Get it from here: https://chiselapp.com/user/jamesbond/repository/mdview3/home

Posted on 29 Apr 2015, 02:47 - Categories: Linux General
No comments - Edit - Delete


Fatdog64 701 is released

Maintenance update, mainly fixes and a few updated packages. New features including USB/bluetooth tethering, working bluetooth send/receive files, MTP browser, and Find'N'Run, and a few others.

Release notes
Forum announcement

Get it as usual from ibiblio or one of its mirrors: aarnet, uoc.gr, and nluug.nl.


Posted on 22 Apr 2015, 03:48 - Categories: Fatdog64 Linux
1 Comment - Edit - Delete


Misc updates - PSIP, FatdogArm, xlogin

I have implemented multi-account support in psip, a long-time asked feature. You can keep multiple accounts but only one can be active at a time. PSIP will be included in the upcoming Fatdog64 701 release.




FatdogArm Beta3 has been released - with new Nexus7 2012 support, dual-core support fror OLPC XO-4, and improved touch support overall. Thanks to 01micko and mavrothal for their tests, feedback and suggestions. Check out the release notes.




xlogin is a very small Xorg login manager, more basic that slim which is included in Fatdog, but it has one thing that slim does not - it supports network operation and XDMCP. Jon (the original author) stopped development long time ago (about 2008 looking at the file dates), but I found this useful, so I picked up the code, cleaned it, fixed it where it didn't work - and I have my fork here.

Among other changes, it now works with authorisation (MIT-MAGIC-COOKIE stuff), and I have re-coded xlogin-rootjpeg to use stb_image so it no longer depends on libjpeg - plus ability to resize the image on the fly.


Posted on 20 Apr 2015, 05:21 - Categories: FatdogArm Linux Arm Fatdog64
3 Comments - Edit - Delete


Making VirtualBox Guest Addition for Fatdog64, the easy way

The articles I have written in in my archives usually are generic ones. But today I am inspired to write one specifically for Fatdog64, so here it is. Enjoy.



Posted on 5 Apr 2015, 04:18 - Categories: Fatdog64 Linux
No comments - Edit - Delete


Fatdog64 700 on Acer Iconia W500

Micko, also known by his nickname 01micko in the Puppy Linux Forum), managed to install Fatdog64 700 on Acer Iconia tablet W500 and got it to run quite smoothly. Here is his original announcement with pictures, and here is his step-by-step instructions to do.

Thanks Mick!

In case you wonder who Micko is: he is the prolific developer of Puppy Linux Slacko (the official Puppy Linux releases based on Slackware) - and has been holding the the torch for a couple of years now. He is also the co-maintainer of Woof-CE, the build system for Puppy Linux; as well several small desktop utilities. His latest work, Puppy Slacko6 beta is what gets re-packaged as 32-bit compatibility library package for Fatdog64.

He took a break for a few months but has just recently come back and we hope he will stay for a while

Mick has a blog here.

Posted on 3 Apr 2015, 5:07 - Categories: Fatdog64 Linux
No comments - Edit - Delete


FatdogArm on Nexus 7

A kind gentleman who prefers to remain anonymous gave me an Asus Nexus 7 2012 ("grouper") last year so that I could put FatdogArm on it. Due to various circumstances, I was not able to look into it until very recently.

The same gentleman informed me that most of the works should have been done since Ubuntu team has managed to boot Ubuntu on it as early as 2013, and there was a development called Multirom that enables dual/multi-booting of various OS on Nexus 7, making it even more convenient.

Well, I was late to the game, but late is better than never. I finally had the chance to try to get it going. The Nexus 7 given to me was in a pristine condition, stock firmware, not rooted. So I upgraded it to Android Lollipop 5.1, rooted it, installed Multirom on it (manually). Perhaps I will write the steps a little later.
Then I grabbed Ubuntu Nexus 7 kernel and modified it for FatdogArm, and after some little tinkering, here is an image.



Framebuffer, framebuffer console, wifi, sound, touchscreen, USB-OTG all works thanks to Ubuntu hardwork of porting mainline kernel to support Nexus 7. I have not tested other devices (accelerometer, camera, compass, etc).

It is still early days but I hope I can upload a beta3 version of FatdogArm with basic support for the Nexus 7 (and the recently rebuild SMP kernel for XO-4) soon.



Posted on 1 Apr 2015, 0:59 - Categories: FatdogArm Linux Arm
No comments - Edit - Delete


Updated 32-bit compatibility SFS

Fatdog64 is a 64-bit operating system so it cannot run 32-bit programs by default. To run 32-bit programs, the kernel must be compiled to support such and 32-bit version of the libraries are needed.

Both have always been provided since Fatdog64 launches back in the day. The 32-bit libraries are compiled together in an SFS called 32bit compatibility library.

Compiling libraries are time consuming (not to mention the testing) and we have our hands full taking care of 64-bit libraries (and ARM for me). So we have always out-sourced the job of making 32-bit libraries to someone else: instead, we usually take an existing, known good, and widely used version of Puppy Linux and re-package it.

The very first version of 32bit compatibility (for Fatdog64 500 series) was based on Puppy Linux Wary 5.0. The second version of 32bit libraries (for Fatdog64 600 series) was based on Puppy Linux Slacko 5.3.1, and for a while this was the only available 32-bit libraries for Fatdog64 700 too.

I have just compiled a new 32bit compatibility library based on Puppy Linux Slacko 6 beta (5.9.3), accounting for a new directory layout in Fatdog64 700 which has a clean separation between 64-bit and 32-bit libraries. All 32-bit libraries now lives in /lib and /usr/lib, as it shoud be (in 600 series this was still a bit mixed, forcing us to use /lib32 and /usr/lib32 instead). The non-shared configuration still lives in /etc32, and a "start32" is still provided for compatibility purposes.

The name of the new 32bit library is 32bit-slacko6.sfs and it is available from ibiblio and its mirrors with immediate effect.


Posted on 1 Apr 2015, 1:01 - Categories: Fatdog64 Linux
No comments - Edit - Delete


SMP-enabled kernel for OLPC XO-4

I had known even before I received the laptop over a year ago that the Marvell Armada PXA2128 Soc used in XO-4 featured a dual-core CPU, but for some reason the kernel didn't support that.

I recently got tipped by forum member mavrothal, my partner in development of FatdogArm for the OLPC, that the OLPC kernel for XO-4 finally got dual-core capability, who had built the latest git master from the kernel and got SMP kernel working.

I didn't have the time back then, but yesterday I finally got the chance to play with it. I built the kernel myself too, and I needed to update the OFW firmware to at least q7c04 for the dual-core kernel to run, but everything is smooth - new kernel booted and worked flawlessly with both cores enabled. All the existing functionalities continue to work, but the rc.platform will require a little patch because the ID code that I used to identify XO-4 has changed.

I will upload the new kernel, with update instructions (mainly pointing back to OLPC on how to update the firmware etc), and a new FatdogArm sfs with the required rc.platform change.

It has been a long time since the last FatdogArm beta2 release, so I may as well update some of the other packages too and call it beta3. Watch this space for further announcement.





After updating the OLPC firmware, the old original Fedora/Sugar in XO-4 will stop running. The fix is to download a newer build of the OS and install it to the laptop.

I need to say that I continue to be impressed and amazed of how OLPC implements these processes (both updating firmware and updating the internal OS). They are simple, easy, foolproof and very informative.

This is a far cry from similar processes of other commercial offerings. Especially since I had to deal with UEFI recently - if only UEFI implements half of what OLPC does with its Open Firmware, it would have been immensely more useful. Something's got to be better than BIOS, but UEFI isn't the one - OpenFirmware certainly is.

I applaud the engineering that went into the design and implementation of these features. There must have been a lot of thinking, and a lot of effort to examine of how the processes on standard PC broke down or failed in one way or another - and they made it really better.

This is of course on top of other excellent features of OLPC laptop - and I don't even mean the advertised educational benefits - but things like physical robustness, ease of maintenance, quality selection and durability of its components. Sure, this does not make it the lowest cost laptop (or even a lower cost tablet), but quality has its price and an investment of an OLPC laptop will far out-weight its cost and last far longer than any other laptops (or tablets) designed for similar purposes.

Personal note - I still think that a laptop is a far more useful for education than a tablet, regardless of the recent fad. If you are a decision maker and considering to get some sort of tablets or OLPC laptops, I'd highly recommend you go with OLPC XO-4. As a bonus, an XO-4 with touch screen (XO-4 touch) can function as a tablet too - just flip its screen. That is how versatile it is.

Disclaimer: I am saying all the above not because I am affiliated with OLPC (the only indirect relationship I have with OLPC is that I am doing a non-commercial community project for the OLPC XOs - that is, FatdogArm). I really like the OLPC laptop, I really like OLPC mission, and I really wish and hopeful that OLPC as an organisation will succeed and continue to focus on these quality offerings.


Posted on 28 Mar 2015, 19:30 - Categories: FatdogArm Linux Arm
2 Comments - Edit - Delete


Pages: ... [9] [10] [11] [12] [13] [14] ...