Sunday, August 8, 2010

India: Bangalore Koramangala


Größere Kartenansicht

 Here, I am living for the time being. First Block Koramangala, very nice and silent place. There are lots of small restaurants, a very good connection to the BMTC bus system, many small shops, good supermarkets, ...., I like it.
It is now my second week in Koramangala. I can highly recommend this place.
Sony World, AlienWare Shop, a very nice small Punjabi restaurant, Sunis Laundrary (40rupees per kg) and there is more to come.
Koramangala is also a kind of a student area, many young people living here. So, bars and cafe are always well patronized.

In detail, I live in one room, which is part of a four-room guest house. Sharing kitching, living room and shower with my room mates. They originate from all over the world, Spain, France(maybe), Germany, and Russia. In addition our land lord is a swiss photograph. For Indian standards, this is a very cool place, but for an European there severall things, one has to arrange with.
Including the Indian manner of using the toilet, ..., there is no toilet paper at all, just a min shower.... But I am willing to learn. One also has to mention, that we have a very cool garden where one can take severall sun bathes. As contrast, there is one of these special Indian rivers nearby, so keep an eye to the wind direction.
One of Bangalores rivers

India: Bangalore Whitefield

After three weeks in Bangalore, I love this city. All in all it is totally amazing. This city has all sights of India concentrated to one big melting pot of cultures and social ranks.
I lived for the first two weeks in a service appartement at Varthur Road, Whitefield(the place to be for IT guys). Nearly every global player has settled down in Whitefield or Electronic city. As contrast all cool places like the MG road, the student area Koramangala are at least 40min apart. Although, there is everything what you need for your daily life. So if you only use Bangalore as your base to make journeys all over India and you go for an internship to an IT company, that's the place to stay.
Check out Hyper City, Forum Value Mall, Sportsbar, and a good bar between Dominos Pizza and Cosmos Mall. I hope, I will find it in the next few days and figure out the name. To sum up everything is around, just have to know where.
As mentioned above, one need 40min to reach the city centre by public bus. But attention, the rickshaw driver in Whitefield know that every guy here is working for an IT company, and so they will try to cheat you. So, I think it is cheaper to take a taxi or the bus. Another amazing fact, buses are the faster vehicle in Bangalore, I assume that is because they are the strongest vehicle and get the priortiy in this crazy traffic.

Sunday, August 1, 2010

India: first impressions

After the completion of my bachelor degree at the Hasso Plattner Institute (Potsdam, Germany), I went to India for an internship at SAP Labs Bangalore. So, I am here for nearly one month now and I like to sum up my learned lesson and my first impressions of Bangalore. Here part one.

First, do not trust any body who comes to you and want to guide you to a taxi, a shop or anything else. These guys will definitely cheat you and charge you more than ten times of the normal price. For this reason, before coming to India alway talk with some Indian friends, contact some Indian colleagues or read some Indian tourist guides.

A fact, which would save me a lot of money is, that per km the price for a taxi never exceeds 20 rupees and the normal price per km for a rickshaw is 7 rupees. Sounds not a lot, but a rickshaw is your daily transport vehicle in Bangalore unless you get a 2-wheeler. This I would recommend to you, so do not forget your international driving licence. I currently try to bypass the Indian bureaucracy to get an Indian licence, but it will be much easier to possess an international licence.

In addition, if you go to an internship it is clearly recommended to get an employement visa. I actually know it before apllying for the visa, but the embassy guys told me to get a business visa. As far as I know, it makes no difference (till now).




Wednesday, April 7, 2010

TortoiseSVN of Hell

Just researched about 2 days to find out why a cannot connect to my repository via ssh and private key file.
Only the following few steps were necessary to solve me issue:

  • Reviewed nearly everything
  • 3 times generate new private/public key pairs
  • 2 times reinstalled Tortoise
  • remove all stuff from registry which contains anything about Tortoise
  • demotivated bang your head against a wall
  • bored reading of the tortoise help

suprise: the rescue paragraph:
If you use this last method, be sure you do not have a default username set in PuTTY. We have had reports of a bug in PuTTY causing connections to close in this case. To remove the default user, simply clear HKEY_CURRENT_USER\Software\SimonTatham\Putty\Sessions\Default%20Settings\HostName


Good damned, yeah guys this was exactly my problem. Thanks for the good documentation. But please, ensure to get better error messages as "Connection closed unexpectly"

Saturday, April 3, 2010

LG phone just arrived

Yeah, my LG new chocolate just gets delivered. Awesome, only two times I had to send it back. First, the phone randomly powered off without any reason. I wore it in my trousers and right after a short walk it was off. Weird, next time I got it the glass of the camera was obvious broken. At the end I wait more than two month for my new telephone. But now it is here, and it is really cool. It has on its touchscreen a complete keyboard. It is perfect for writing blog post.
Additionally, there is a nice picture flow for your favourites, I just need for every contact a picture. The next cool function is the video playback, it is like a mobile cinema 800"325.

Tuesday, March 2, 2010

Matching HTML Tags with regular expression or why blogroll identification is not so easy

Yeah I just got it!
So trivial the problem even sounds, for me it was a hard lesson to learn.
Szenario:
Just walkng on the crawler and try to identify blogrolls, so far sounds easy. Yeah, if one will ever be so nice to put this information in a well-formed RSS2.0 feed.
But as far as I see each blog can easily insert a blogroll in his html content with nearly no standard. I have to admit that there several WordPress Plugins and other concept, which serve the user as creation helper.
Thus this generator just can be identified by tag-ids or css-classes like 'xoxo-blogroll' which can be easily changed, it is a hard way to extract this stuff in a general way.
So I end up on implementing an algorithm which extracts the inner html of an tag which contains 'blogroll' (so css class, ids and even title get recognized).
My first idea, yeah, just another nice example how unreadable regular expressions can speed up your code and copyright it simultanously.
Here my drafts:
]*?blogroll[^>]*?>(.*?) Here we go first draft for a div tag <(.+?)[^>]*?blogroll[^>]*?>(.*?) next step matching a random tag wich contains  blogroll anywhere
Note: I reuse a group directly in a regular expression, nice feature, especially for this use case.

But as you may notice, we have to consider multiple open and end tags of the same kind. So I just think about this problem some time and I just remembered to my theoretical informatic studies, where my prof taught about push-down automats and the type-3 grammatics... So at the end, it is prooved that one cannot check my use case with a regular expression, so I have to insert 2 count variable to check the right number of open and closing tags to get the whole content.

<([A-Za-z][A-Za-z0-9]*+)[^>]*blogroll[^>]*>

recognize the beginning tag and than just match to the beginning tag and count open and closed tags till there are more or equal closed than open.

Saturday, February 27, 2010

Amazing Toolchain DXF

The scenario: Given we have a simple Logo, just a circle, as a dxf-File so called Drawing Interchange Format. So what is actually nessesary to fill the circle with dark blue and get is as png, svg, pdf.
Normally, one think the solution is simple just give me Visio and I import this stuff as CAD-Drawing use the fill-button and click export to the severall format. BUT it is definetly not so easy.
Although Visio supports fill out, it did actual not work at all. So I tried first to export it to a high resolution jpeg and tried to fill it out in Paint but he we got the problem of antialiasing stuff. So the edges blur out, this does look dirty and uncool. Next I exported out of visio a svg file, open it in firefox, manually set the fill style for the svg path and try to reimport it to powerpoint (tool of my choice for presentation). But as we all know Microsoft does not like SVG at all (although they are active member in the community, I still hope for svg support in IE), Powerpoint was not able to import the svg. A friend of mine imported the svg in KeyNode and export it as ppt. Now I was successful on opening the ppt with powerpoint and now I could export all my wished format from Powerpoint.
Additional I have to mention that a tried to search some free tools to edit dxf files directly, the only stuff I found is an pure french Java editor, which is in no way useable at all.

What a amatzing toolchain just to handle an dxf-file. If you got advise for me please comment.

Thursday, February 4, 2010

Extreme BP Work Today

Just end up on working with Eclipse EMF and Eclipse JFace wizards. What a pain!!

Especially the construction of an Eclipse wizards is more difficult than I estimated. It just catches exceptions without any feedback, just from time to time a “Event Loopback” occurs which is easy to track. Additionally all the magic SWT style number are weird. So, you can just instantiate a new Composite with
new Composite(parent, SWT.V_Scroll);
and get a Composite with a vertival scrollbar. Sounds cool, isn’t it. But if you try to add several other composites as children of the scrollable, there is no scrolling at all. I just try to get it working.
In addition, there is no possibility to remove pages from a wizard, I temporally just monkey patch it, but I asked myself, if one should really only use constant pages, and just modify the contained composites. Another issue was the complete unchangeable order of pages, so I just added a public arraylist and redirect all accesses to the private pages of the supertype.
According EMF, it really do not fit in my mind, why one cannot inherit from data types. Especially EMF specific interfaces, which I think should be supported or at least been modeled in the Ecore model itself , are not available to inherit from.
Some nice idea for EMF would be an code synchronization plugin, which will kust update the models, if one change the parameter type of a method or just add a new attribute. Because the development process suffers from the frequent switch between code and model, just for keeping the model up to date.

Today, I just get an insight into the upcoming UML stencilset for the Oryx Editor (Oryx Project). It look great, nearly all concepts of UML get supported, but it was an hard manual matching against the UML meta model. Let’s think about a way to parse xmi meta models to stencilsets and vice versa, would be a powerful concept. I will just go on research on this topic.

Monday, January 18, 2010

Call a JavaScript Function with all given arguments

Sounds easy, but it is a bit tricky. Once one have to now that this:
  function test(){
   do();
   test();
}
ends in a recursion, because the function pointer  test, only will be resolved to the value at runtime.
I ends with this:

var tmp = fn;
fn = function(){
if(!!pageTracker){
pageTracker._trackEvent("category","value")
}
return tmp.apply(this, arguments);

}
With this snippet you can add a Google Tracking Event, just by wrap it in another js-function.

Tuesday, December 15, 2009

Nice Idea for an wave gadget

Currently after creating a wave and inviting somebody one cannot kick users out of a wave.
So the idea was to build a gadget/robot which handle a body list of wave users. The wave will get encrypted with every change the key will change.
After kicking an user out of the wave, the key of the user will not be updated, so he will not longer be able to participate at the wave.
Practically it may be possible to insert new unencrypted content to the wave, but the encryption mechanism will automatically hide unauthorized messages.

SWT Project Sprint Planning Session 3

Amazing, what people implement for a lecture at the Hasso Plattner Institute. Some guys really work 200% more than anybody ask for, but as contrast some feature are really just functional. Nobody seem to test the UI. So it looks like an incoherent clutch of input fields in combination with some weird checkboxes.
Guys, please use your stuff before presenting it, user will be grateful.

Working on Web Crawler

Since a couple of weeks a friend of mine and I working on a blog crawler to saving the blogosphere. Since now we saved about 50000 blogs and worked around 3 Mio web pages. Sounds much, but it is not. We challenging a lot of other crawlers around including google. Overall crawlers usually get about 300 site per second. As contrast our crawler just get 2500 site per day. That really weird.
Concerning the fact that we distributed our crawler to gain more cumputation power, but here is the problem. To guaranty that all blogs stay linked in the database and to avoid duplicates in the db we need to define a central databank , which seem to be the bottleneg.
Every crawler client just waiting severall minute for the database just to answer a very simpel select statement.
So well my database knowledge is very limited to some base stuff teached at the university. Currently I try to speed up the query using  CREATE INDEX.
After all last time I heard about asychronous distributed message queues. This seems to be a good option to get the whole job handling out the database. But I think that only the INSERTs consume so much time.

So to sum up, buying new hardware is a good option.

Start Blogging

Hello World,
that my first blog, let's test it. My intention for creating this blog is primary to practise web2.0 and share my knowledge. So I hope to offer some useful informations for everyone here