FOSS
FUDCon Pune day 2
Day 2 started in a slow motion, everyone was kind of sleepy in the hotel. Harish started the day with his talk on community. The students started coming in during his talk, I guess 9am was a bit too early for most of them.
Interested students moved in the talks they wanted to attend. Siddesh had all his talks almost filled up by the students, He gave 3 different talks one after another and people really loved how easily he went into details of gdb. Ankur gave 4 talks in the day :)
I attended Jared’s talk on docbook and publican , he used my book as an example in the talk. in 2008 he only convinced me to use publican for the book and did lot of ground work and fixing for me.
The FUDPub in the evening was a crazy party , people kept dancing all over until the music was stopped. Photos and videos will be up later next week.
Right now Siddesh is working autotoolizing the glib based qpid library I am writing, /me and Jared are working on the pym.
Mukti 11.2 at NIT Durgapur
We reached Durgapur around 3:30AM on Friday, woke up by 6AM due to the really cold temperature. The inauguration event started few hours late and after that Mether started doing his RPM workshop.
UPDATE: flickr set can be found here.
Report from PyCon India 2010
So I am back from PyCon India 2010. I missed last year, so was waiting for this year’s event. Met many faces after very long time and to be in a place with so many other python lovers is always a nice experience. The total attendance was around 700 but the venue was too big for that number , so except the lunch time, corridors had lesser number of people discussing. The selection of the talks were also matching the environment as they came from different directions. We saw talks with hardware accessibility to web development to GUI application toolkits, network programming, scientific computing, terminal based works etc.
8051 development on Fedora
First install sdcc
#yum install sdcc
Next is a small example to blink a LED connected to P1.7
#include <8051.h>
void main(void)
{
int i=1;
P1=0; /* P1.7 used as LED output */
while(1)
{
P1_7=!(P1_7); /* toggle P1.7*/
for(i=1;i<25000;i++);
/* for delay */
}
}
Compile it and get the hex file from intel hex
$sdcc-sdcc blink.c
$ sdcc-packihx blink.ihx > blink.hex
Now you can upload the hex to the programmer :D /me is also just starting up.
More on thumbnailing and optimization
Following my last post, spent most of the of the time on different imaging libraries to find a faster way of doing thumbnails and optimization.
I tested the following libraries to create image thumbnails, GdkPixbuf, imlib2, ImageMagic, epeg. Pixbuf gives somewhat nice timings , imlib2 is fast but was leaking too much memory. ImageMagic seems to the slowest among them. Last try was with epeg which can only handle jpegs and it came out as the fastest. So wrote a C function and using it from inside vala code using extern.
Next target was to find better way to get thumbnails from RAW images, tried libopenraw and LibRaw for that. But with help from yorba developers found the way to do it using gexiv2 only.
In between tried few tools for profiling the application, sayamindu told me about sysprof which seems to be the easiest for my purpose. Using it I found gexiv2_metadata_open_path is taking around 67% of time, inside it Exiv2::TiffImage:readMetaData is taking 51% of time.
Now coming to the point of speed , 1st run is on 1GB of RAW files
real 0m2.946s user 0m2.542s sys 0m0.116s
2nd run is on same 36GB of images , among them around half is RAW.
real 4m0.807s user 0m54.283s sys 1m24.789s
Now this is fast in my textbook :D I should not forget to tell about the great help I got from #vala and Adrien Bustany in the whole work.
Speed , Vala, Sqlite3 and optimization
All started as just another stupid idea, writing an image indexer (reinventing the wheel ). The code should do the following things:
- Index images for any given folder with user provided tags
- Extract and keep EXIF information from the files
- Extract or generate image thumbnails for all files
- Should be able to provide the thumbnail even if the original file is missing (may be in a usb hdd)
1st run
real 30m39.178s user 0m45.561s sys 3m42.557s
2nd run with out thumbnail generation but with EXIF information
real 10m14.281s user 0m58.208s sys 0m45.969s
3rd run with out thumbnail generation and with out EXIF information
real 14m40.503s user 0m1.585s sys 0m7.535s
Here I am confused, managed to find out that transaction in sqlite can cause delay, so changed the code to do everything in single transaction
4th run with out thumbnail generation and with out EXIF information
real 0m1.032s user 0m0.216s sys 0m0.134s
5th run with out thumbnail generation but with EXIF information
real 3m1.191s user 1m2.525s sys 0m34.524s
6th run with everything
real 16m47.241s user 0m43.652s sys 3m21.640s
So the major bottleneck is thumbnail generation, which I am currently doing Gdk.Pixbuf , for EXIF information I am using beautiful gexiv2 from awesome yorba guys.
