Monday, January 30, 2012

Ultimate PDF Converter (on Cloud)

Introduction

I wrote an android app and related server scripts for converting documents to pdf for viewing on the phone. The app can be downloaded here.
I wrote this for a few reasons including experimenting with AdMob, so caution: the app is an adware.

I have cleaned up the sources and uploaded it to google code.
The server scripts can be found here
and the android application can be found here

Some Technical Details
The flow is normally like the following:
  1. Android Application sends the file to the server using the upload.php script
  2. upload.php generates a unique key for this file and passes on the information to the app as well as updates the database
  3. The python converter polls this database and calls the converters (libreoffice/openoffice) and updates the database with success/failure
  4. The app now queries the getfile.php to get the file or the queue number it is in.
  5. The file (converted pdf file) is then downloaded to /sdcard
TODOs
  1. Change the irritating 'open with' to may be 'share with' rather
  2. Conversion of pdfs into maybe images for directly viewing from the app rather than opening it with another pdf viewer.
  3. Conversion of other files: e.g. audio files into wave screenshots or something (?)
  4. Robustness of the scripts and app needs improvement
Any contributors, please?

Monday, October 10, 2011

GUI Based Builder for LibreOffice

I have always found building LibreOffice to be tricky - especially on cygwin/Windows. I always felt having a GUI based tool for detecting build environment, downloading dependencies, cloning source and building it would reduce the pain in looking for the howto documentations. This will also reduce the barrier for a lot of people to contribute - specifically for the Windows platforms.

This being on my todo list for a long time, I, as a consultant with SUSE, got an opportunity during SUSE's hackweek to work on this. I wanted to make it cross platform and also learn something new in that process. All put together, I picked: Python (I already know python scripting) and pygtk (for the UI) + glade.
Here's the first version: https://github.com/muthusuba/libobuilder

Note that, it requires loads of work before it becomes usable. Right now, default config parameters, cloning and building works. Major part of dependency checking & installing needs to be written, which would depend upon one single word - contributions - in whatever form - code, review, comments....Even just editing the UI XML with Glade and making it better is appreciated.

Monday, July 11, 2011

SMS Based chat (anonymous, free and IRC types)

This is a log of the application that I created as part of the txtweb's App2Fame contest. txtweb is an application platform based on the SMS technology. So, all phones irrespective of whether being smart or not can access all the apps and their features and hence become smart. The only down side being that the features are dependent on what txtweb's applications provide.

For submitting to that contest, I was cracking my brains for some ideas to submit, when I thought of google maps helper app (@gmaps) , which I created in one day and submitted. But, later I endedup finding out that there was a similar app @route which was already submitted and in use for a long time.

Well, then I thought of a chat application, this time I wanted to first search the apps present there (- found out that the search feature of txtweb could have been a lot better, thou). I found a few apps, but they really don't do much. Just dummy apps created with some text and doing really nothing. So, here it goes, another day and submitted it just before the deadline (@sirc).

Key Features:

1. Very similar to an IRC client/server. Only that there is only one server.
2. Supports channels concept.
3. Use nicks rather than phone numbers - makes in anonymous, just like the irc.
4. Chat with multiple people
5. Private chat with a single person (based on nick)
6. Create private channels - these are starting with a '.' (dot) and will not be listed publicly.


So, here's how to use it:
SMS these 'bold' text to +91 92433 42000 (India)
@sirc @join [channel] - E.g. @sirc @join bangalore
Joins a channel (and leave your current channel). This will create a channel if there is none found.

@sirc @nick [nick]
- E.g. @sirc @nick superman
Choose a nick for yourself.

@sirc @leave

Leave a channel - Stops messages from this app as well until you join another channel or someone private messages you.

@sirc @[nick] [msg]
- E.g. @sirc @superman come and help!
Send a private message to @nick

@sirc @listpeople

Lists the people currently your present channel (provides all the nicks).

@sirc @list

Lists all the channels present (Does not list channels starting with a dot (.)
Channels starting with a dot are private channels.

@sirc @help
Shows the help. Mostly the contents here ;)

@sirc
[msg] - E.g. @sirc anybody knows kannada?
Sends a message to everybody on the channel. You need to join one first using @sirc @join

Try it out today!!!

Friday, March 25, 2011

The so called Hidden Features of LibreOffice 3.3

There are quite a few non-noticeable features in LibreOffice 3.3.x. I thought of sharing a few here...

Batch conversion
Especially useful when you want to work with command line or invoke conversion from another program or convert set of files to a given format (batch process).

Equivalent commands: oocalc (and its set), localc (and its set), soffice.bin
Assuming the current working directory is the libreoffice installation directory

The following command would convert all the *.doc files to *.pdf files
./soffice.bin -convert-to pdf:writer_pdf_Export -outdir /home/user/output /inputfiles/*.doc

[PS: wildcards wouldn't work correctly on windows specify the file names (list) instead.]

Forcing input filter while opening via command line
Whenever we open a file using the command line, we wouldn't generally have a choice to select the input file type (e.g. xlsx MSO 2007 or xlsx MSO 2010 or anyother). We would be at the mercy of the program to auto detect correctly. Use the following option to force opening the file with a given filter.
./soffice.bin -infilter="Calc Office Open XML" file.xlsx

Combining the above two
oh well...I guess by now it should be easy ;)

References
./soffice.bin -help
List of output filters: http://opengrok.libreoffice.org/xref/filters/filter/source/config/fragments/fcfg_writer.mk
List of input filters: Search with the above example filter or http://opengrok.libreoffice.org/search?q=PreferredFilter&project=filters

Watch out for more such features...

Tuesday, June 30, 2009

BSD, Linux, OpenSolaris Filesystem Encryption - FSE

Similar to my DVD Catalog project ( :) ), I have been searching for a good (transparent) filesystem encryption for my open source operating system(s).

ZFS is a very good option but the encryption module is currently in beta. (And ofcourse, with the usual license problems)


So, I am planning to write a transparent filesystem encryption module for using with any exisiting filesystems and OSes (Unix-based).

== The Design ==

User view:
The user mounts a harddrive (say, /dev/sda1) as an encrypted drive (say, /dev/esda1). And will use any of the exisiting filesystems to format and mount this /dev/esda1 onto a mount-point.


Developer's view:

The module reads/writes from the actual harddrive (or another loopback FS) by encrypting/decrypting the data. For data I/O the module exports a device, say, /dev/esda1. Which is emulated as a harddisk for the existing filesystem modules.


This would be very similar to a loop-back filesystem with encrpytion.



== But, Before I start ==
Unlike DVD Catalog project, I would like to get options and opinions before starting this project.

1) Are there any exisiting projects like this or very similar to this?
2) Are there any other alternatives/file systems?
3) Are there any other better designs?

Sunday, June 21, 2009

Financial Statements Analysis of MindTree Limited.

Brief on MindTree
MindTree is a global IT Solutions Company specializing in IT Services, Product Engineering, Infrastructure Management and Technical Support (IMTS), Independent Testing and Knowledge Services that was started in 1999. (Source: http://en.wikipedia.org/wiki/MindTree)

MindTree's key development centers are in Bangalore, Chennai and Pune. It has offices in over 15 locations spread around the world. MindTree crossed USD 100 million in revenues in April 2006; the fastest Indian IT company to achieve the target.


Few Strategies (listed in Annual Report),
* New service offerings
* Leveraging existing client relationships
* Targeting large clients & expansion in non-US markets
* Innovations and new technologies
* Leverage both organic and in-organic growth
* Strengthen "MindTree" brand

A long list of good initiatives to defend (or attack) the recession. This could be the 2nd major recession MindTree is facing - the first one being the dotcom burst (~2001).


FSAS
MindTree's stock has been on a rise since the announcement of results. It was volatile till a few days back and has started tracking NSE/BSE index movements very closely recently.

This saturday & sunday I decided to analyze MindTree's Annual Report to know if I should invest now or wait. Here's the report: My website or docstoc or scribd

In brief

Current market price: 425
Target price: ~200
Trade Call: Sell
Investment Risk Level: High Risk
P/E: ~53
Gross margins: 32.54%
Net margins: 3.55%
ROE: 6%


For details refer the report.

Please let me know your opinion, suggestions, advices, ...in the comments section of this post. Thank you.

PS: If you want to re-publish the report contact me :)

Wednesday, June 10, 2009

DVD Catalog - A CD/DVD Management Software

I was looking for an open source CD/DVD Management software for a long time. Didn't really find one - either I was looking at wrong places or searching for wrong key worlds (I guess this should be evident from the way I have named my creation :P).

I also wanted to see how good/bad QT SDK/framework is - heard its like write once and compile/run everywhere types.

So, I combined these two wishes and this summer I finally decided that I would start this project (that would be some 2 or 3 weeks back) and put in a few days of effort on it. Since my initial experiences with SQLite3 were really good, I chose to use it for this project as well. Last weekend I got it working with basic features up and running (like index a directory and search the database).

Try it out @ http://code.google.com/p/dvd-catalog Just extract and run the dvd-catalog.exe file
I only have win32 (Windows 32bit/64bit environments) binaries. I will be adding the Linux binaries in a few days, but I sure need help for adding the OS X binaries - I don't have an Apple MAC to build it on.
You can also download the source code there - I have released them as GPLv3. Don't complain on the code quality - its learning qt types :)
There are, of course, NO 'security-layer' or 'sql sanity checks' done. Hopefully I will do a few data sanity checks, but security layer, I guess is not required - since this is supposed to be a "personal" CD/DVD Management software.

Do comment on the improvements, code, ideas, ...I will sure consider them for implementation/correction/...

I guess, I need a few more features like:
0. Few improvements - like commit() only after all the entries are added to the database. I guess even though I am actually doing this, I see commit happening after ever add of the file. This would be a high priority.
1. Adding a single line entry (will be useful to add DVD Movies) into the database
2. Changing ratings
3. Indexing only directories (i.e directory names and not files)
Further,
4. Viewing reviews from internet (say imdb or wikipedia or software/games reviews) for a particular file/file type.

Also, let me know if you want to contribute to this project - I can add you to the list.


Few Screenshots: