My Working Environment
Each developer has his own favorite editor: I use
vim, which is really powerful
and can be customized easily.
I have my own extension for development work: some useful vim scripts in my repository
vimscripts.git. I can browse
the svn or git history of the sources, context-sensitive help using
ctags integration, and so on.
I like programming in C++ because it is
a general purpose language which I can use from hardver-level programming to graphical user
I also use some script languages (bash, awk, sed, etc...): some specific problems can be
resolved easily this way.
I use git for version handling.
It has a separated location, see my Kernel Hacking
These are the basics of my softwares, especially for desktop and big embedded targets.
It is going to be the base of all my projects. Can be downloaded from
It consists of the following parts:
OS independent layer:
It has basic OS-specific functions such as file access. Currently it is implemented only
It has a generic set of makefiles to handle large project structures.
There are some other parts such as exception handling, digital filters,
internationalization support, debug logger, and so on.
Knows everything about GPS hardware. Can be downloaded from
Gives me a generic interface to the GPS device with extrapolated information. Currently supports only NMEA protocol.
Some generic classes for navigation, such as map database handling, position handling, and so on.
Can be downloaded
It is based on Clutter, an OpenGL based library.
Can be downloaded
Note: This is obsloeted, I use my own rendering library (see below).
My Rendering Library:
Because I could not find any existing library to use as the base of navigation graphics, I
created one. It is highly optimized for speed, especially on embedded environment. It is based
on GLES-2.0, but can be used on OpenGL too.
It can be downloaded from the following sources:
The Embedded Systems are small microcomputers with usually flash disc and small amount (e.g. 256 Mb) of
memory. However, they can have desktop-like properties, such as (toush)screen, keyboard, and mouse, so
in some cases the softwares listed here can be run on desktop computers and vice versa.
Small Embedded Systems
I have my own embedded Linux distribution, based on
Yoctoproject: its repository is at
poky-kgy.git. Now it supersedes my
previous Angström-based works (see below).
I have a lot of development based on Angström
distribution: see my repository meta-kgy.git.
It is created for Beagleboard development, especially
for my navigation software Ducktor Navi,
but contains some multimedia and other additions too. Note that I switched to Yoctoproject,
My recent pet project is Ducktor Navi, a
navigation software designed for my Beagleboard-C4
card. Currently it is in an early development state, and also has a test software at
glesly-toy.git for demo and
first steps of development.
These Embedded Systems do not have any operating system nor Human Interface Devices. They have very
small amount of resources (e.g. less than 1K of memory in some cases), so this is the most specific case
See my article
about using C++ on such devices.