Attracted by virtual constructs

September 25, 2009

Call for action: Write your own plugins for Okteta

Filed under: Kasten,KDE,Okteta,Tutorial — by frinring @ 8:48 pm

Up to now I have written Okteta, the KDE 4 hex editor, completely on my own. This has pros and cons:
The biggest pro is that I do not have to argue a lot about design decisions, especially as I have some big plans with the co-developed framework Kasten, which Okteta is built on (to serve as testing area) and which might not yet be understood/followed by others (could just be a crazy idea, after all) as I have implemented only parts of it and also added unmarked intermediate shortcuts to get things running already.

The biggest con is that Okteta doesn’t grow as fast as it could.* So there might be some features you, dear Okteta user, are still missing from it. Additionally, remember that I do not really use Okteta myself, it really is almost only a testing area of Kasten for me (I still am happy if Okteta is already a useful tool to many, as this indirectly results in more testers for Kasten). And so I concentrate on things which help to develop Kasten further. I now turned to think about support for very large files, meaning working with data not completely copied to the working memory (just do not hold your breath for this ;) ).

So, what about the binary filters (e.g. a bit switcher), your export plugins (e.g. Base64) or even complete tools (I can not even imagine) you are missing from Okteta and hoping for in a future release?

For the coming weeks I am going to show you how simple it should be to help yourself, in a series of short tutorials.

Okteta/Kasten has been designed very modular, with a lot of interfaces and plugin-prepared structures. For now everything is hardcoded, but as we have readwrite access to the sources this is of no great problem here :)

There is almost one month left for you to decide if you want to make your hands and keyboard dirty with an addition to Okteta, then the soft features freeze will hit the development branch for KDE 4.4. And only November 11th would set the barrier for a basically working solution, so should be enough time to get your plugin done, given it doesn’t include rocket science. Or you could be still pleased if it only will be part of KDE 4.5 next summer (well, still not assumed to include rocket science). In any case I will be happy to help you where doable.

The first tutorial will appear on sunday (September 27th) and teach you how to write a binary filter (Update: online now). So stay tuned if you are in need of a hex editor like Okteta and interested to give the implementation of your needed features yourself a try.

* For sure, the pace of development for Okteta has been quite good, just have a look at the automatic analysis done for Okteta at ohloh.net. 48,042 lines of code have been gathered in the last two or so years. Which, using LOC while admitting it’s an evil metric for code work, is estimated to have, taking the given default average salary of $ 55,000 / year, a “Project Cost” of some $ 641,343. I just hope I never will write myself this bill. Because the moment I do I am for one in big debt to someone and also in trouble because someone doesn’t pay my bill. ;)
Another interesting metric seems behind the assigned property “Well-commented source code”: Well, I have spread the code over quite some files, and each and every file has 20 lines comment from the license header. The other comment I often leave is done with this pattern:

// TODO: some improvement

currently around 560 times. Instead almost all API is missing proper apidox. So, rather not well-commented. Still, I use expressive, thus pretty long names for classes and variables, so comments are not often needed (it's obvious what ByteArraySourceCodeStreamEncoderConfigEditorFactory does, or?). But I wonder if this metric takes this into account :P

About these ads

6 Comments »

  1. Have you take Kross into consideration, for scripting/app extending?

    Comment by kedadi — September 25, 2009 @ 9:11 pm |Reply

    • Good idea, and yes, adding access by Kross (or whatever script engine is the best, don’t know) to Kasten is on my plan, just that at the current state of Kasten the lower levels are still on construction and this takes time.

      Comment by frinring — September 25, 2009 @ 9:19 pm |Reply

      • I believe that Kross is the best solution out there, of it’s kind. You’ll get a wide range of scripting languages, like: Python, Perl, JavaScript, Ruby, etc. by making your app exposed to Kross. And it’s already there in the kdelibs.

        Comment by kedadi — September 26, 2009 @ 3:46 pm

  2. I would be interested in loading binary files and seeing the structure (given by a suitable grammar) highlighted. I’m currently working on ppt parsing and have binary structure available as an xml file. From there i can get a hierarchical tree of extents that are covered by the structures.

    Also editing a grammar and seeing where it does not match one from a set of binary files would be great.

    But this is probably asking too much…

    Comment by Jos — September 25, 2009 @ 11:57 pm |Reply

    • Hi Jos! In the short term, yes, asked too much (unless we find a supercoder). In the long term I hope to have something like that, too. After all parsing is a topic I still have some lessons to learn… ;)

      Comment by frinring — September 26, 2009 @ 12:05 am |Reply

      • Yes, I’d be interested in that too. I’m working on partimage-ng, a tool that lets you create an image of a partition/disk. Every now and then I need to examine various on-disk filesystem structures which means I have to carefully read hard-to-understand binary formats. And I always use Okteta for that. If Okteta supported some kind of highlighting for binary structures my life would be much easier.
        Anyway, thanks for a great tool.

        Comment by Dmitry Ivanov — September 26, 2009 @ 1:07 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Toni Theme. Create a free website or blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: