low-level, down and dirty

Categories Books, Development, Fun

I’m a big Sci Fi buff, both movies and books, but I’ve always preferred books. I love to read ancient short-stories, anthologies and futuristic stuff from the golden age, back when they really needed talent and a mind-blowing imagination to succeed. Reading these stories makes me happy.

That’s swell you’d say, and I’d agree, only, you see, there’s a small problem. My hobby has a dark side to it. You can’t actually find a lot of pre-1960s short stories on Amazon.

I mean yea, you’re gonna find some anthologies and maybe a book or two, but that’s about it. So what is there to do? I usually scour obscure websites and FTP archives (ye, you read that right) for old short stories in electronic format. That’s usually successful, bearing fruit that need to be cleaned, structured and usually converted before consuming over a glass of wine. And this takes us to the main topic.

Last night I had the best coding time in years. It was loads of low-level c and interop fun. I had a lot of shorts in LIT format (one of the forgotten eBook formats, this one from Microsoft). There’s no practical way of using or reading them. I mean yea, Calibre (the absolute god of eBook management) has support for converting the format, but you have to import it in the library first, without even knowing how it looks like or if it’s what you’re looking for.

I like my library clean so there’s no way I was going to do that. So I wrote a converter 🙂

Based on already existing (but not compilable or usable) code it takes a directory of eBooks in LIT format and converts them all to EPUB.

It was loads of fun writing it, especially going through the legacy C code from http://www.convertlit.com/.

I mean, it’s been a decade since I touched C code and it was absolutely lovely. That low-level feeling, the dirty feel of pointers. Fabulous.

Anyway, it’s available on GitHub if you have the same itch, you can find it here: https://github.com/bcostea/SharpLit



Leave a Reply

Your email address will not be published. Required fields are marked *