Articles about Software, Photography and More

Beating the TripAdvisor Badge’s SEO Tactic

August 24, 2010

The Problem

Recently, I got a reference to this article from my Product Manager, regarding TripAdvisor badges and how they boost SEO. Their secret is a simple link that links deep into TripAdvisor website and makes your site a donor of link love to TripAdvisor. This is somewhat bad for hotel owners who might find that TripAdvisor trumps the search ranking for their brand name.

The easy solution to prevent that from happening would be to slightly edit TA widget and use a rel="nofollow" attribute in the anchor that links to TripAdvisor. The clever guys at TA, though, have a JavaScript check that disables the widget if you try to do this. Well, how about we turn their own trick on to them?

Continue reading →

Capturing Rain

August 18, 2010

With the monsoons doing their usual thing and I having the luxury of a not-too-bad view of the rains, I had been itching to capture a shot of the rain in all its glory. Earlier this year I made a capture that brought out the rainy-ness in the scene but didn’t have any rain as such.

Online research about shooting the rains didn’t bring much enlightenment because there’s no “formula” for making rain shots. It all depends on what you want to portray. For me, that would be about the prominence of the falling streaks of rain. All I knew was that I had to shoot a somewhat low shutter speed for that.

Continue reading →

Simple PHP Timer

August 9, 2010

I was just trying to profile an HTML page for performance bottle-necks. I’m trying to follow a top-down approach, wherein I start from the entry script, and find the block of code that takes the biggest chunk of time before digging deeper into that chunk.

At this stage, it’s not feasible to drop in a full-blown profiling tool like xdebug because of the set-up overhead and amount of data it generates. So, I wrote a simple timing function that you can call at various points in your program to provide incremental and cumulative timing info in milliseconds. Just call this function anywhere in your code with a message and it’ll print that message to your PHP output, followed by millisecond timing information at that point. Here’s the function implementation:

Continue reading →

Shooting in the Dark

August 3, 2010

Digital sensors have made a lot of progress on the light efficiency front. The Nikon D3s sensor, currently the most efficient sensor available, offers amazingly clean images at crazy high ISOs. Something that film shooters could only dream of. There is still some time, however, before a D3s calibre sensor makes it to consumer bodies. Meanwhile, it will help knowing the tips and tricks of shooting in the dark for the win.

Continue reading →

Take Two

July 31, 2010

I, Photographer

This isn’t my first time writing a photography blog. I started one, almost 3 years ago and wrote a few posts regarding technique and gear. It was probably too early to start writing, though, and the blog fell off the edge when my hosting plan expired and I didn’t renew it. This time, it will hopefully stay.

Photography is, for me, a new way to experience things. It’s about delving deep into the visual characteristics of the environment around me — shapes, contours, colours, location, the light that I’m seeing by. This ability to observe also allows me to interact with inanimate objects in a new way. I can play with things by giving them different looks through the medium of photography. It may seem trivial at first, but for those who have to live by themselves for some length of time, it’s a relaxing and challenging pursuit that keeps the mind occupied from devilish or plain depressive thoughts.

Continue reading →

PHP vs. Python for Web Apps

July 28, 2010

These days, more and more people ask the Python vs. PHP question when they start out with a web application from scratch. I’ve developed PHP applications for 5 years but for the last couple of years I’ve been doing Python. This post is meant to note some of my observations. If you don’t want to read the whole of it, my opinion — opinion — is to stick with PHP for dishing out your *ML. Use Python in the back-end, if you must.

Continue reading →

MySQLdb Leaks Memory

June 30, 2010

Whenever people search for a Python library for MySQL, they get directed to MySQL for Python. However, there are some nasties hidden in it. Searching for “mysql python memory leaks” results in a few links which suggest that using Unicode causes memory leaks with the library.

Today, however, I found another cause for MySQLdb memory leaks, while debugging a leaky Python daemon at work — database errors.

Use this script:

Continue reading →

{Browse ‘Hello World!’}

June 18, 2010

That snippet of Oz somehow felt like an appropriate title for the first post on my tech blog. Expect something new here once in a while. Happy hacking! 🙂

Why I Program in C++

Representative image for the topic, Why I Program in C++

March 12, 2004

  • IBM’s Pervasive Computing Lab is an intelligent home with most electronic gadgets networked together. All but two gadgets run Java applications on Linux. IBM chose Java because “it’s a good way to insulate developers from the idiosyncracies of specific operating system deployments.”
  • Luxor is a XUL toolkit with “a (sic) ultra-light weight, multi-threaded web server, a portal engine and Apache Velocity as its template engine.” XUL is an XML vocabulary for assembling GUI.

The examples cited above unsettled me as they came. A significant portion of the literature on embedded systems and RTOS is devoted to making the reader understand the constraints under which embedded systems operate, viz. low computation power and available memory. Computation power in embedded systems comes at a cost premium and in gadgets having high volume sales, every cent of the price matters. Here we have IBM using Java for their pilot embedded systems to insulate the developers from OS specifics. Note that all but two systems run Linux. You need not read voluminous books to realize that one of the goals of an interactive system is to respond to user inputs as fast as possible. It is interesting to know that people are developing XUL toolkits in Java. Seems like we’ve had too much of it for our own good.

Continue reading →

<<

Articles

Tahir Hashmi