Category: Technology


This post is kind of self-explanatory. 3 screenshots that explain what makes Google what it is, and adds shame to our lives for never trying to do this in our products. Take a close look at all 3.

Is there a better way to exact precise feedback?

Is there a better way to get more accurate feedback?

I dont know another browser that runs JavaScript faster

I don't know another browser that runs JavaScript faster

View full article »

I’m a cleanliness freak – to the extent of cleaning up my Facebook wall. Over the last week, there’s been a lot of spam with wall messages that read: “Hahaha! Mine is hilarious. Check out yours”? Familiar? Yes, that silly app which tells you how you would look in the future. I never tried it, but tired of the requests, I urged friends to avoid it via a FB update. 13 people liked it, but I only hope its the latter of these 2 messages it conveys: how awful I look, and how useless that app is. (I take everybody’s privacy too seriously, hence some masking)

My Status Update

Still wondering what 13 people really liked?

Publicity fail

That application – whatever its name is – is a complete fail in terms of its messaging. Understand the scenario: that app is sending me a persuading message to try it on a friend’s recommendation. The least I expect is View full article »

I am a geek, may be a nerd, may be both. And may be this is the justification of never having had the opportunity to work on a killer project that was exemplar of cutting-edge technology. I never wanted to. But I’ve made most out of unmatched opportunities, to deliver business critical software that has done its job. I’m not a master of any technology/language, but a jack of many: whether for work or leisure, I’ve touched upon most known technologies. But all that diversification makes me confident of being able to solve a problem, and not necessarily using a certain technology. I am now a product manager, far from coding. So you are about to take some unsound advice. Please continue reading at your own risk. These tips are not for software engineers who are experts in a particular technology. These are for pure computer geeks – people who love writing code.

1. Focus on concepts & constructs, not syntax

People often ask: I want to do a computer course, what language do I learn? And I ask them to clarify: Do you want to learn, earn or both+fun? My answers for each (in order) are: C, Java and PHP. But at the end, it boils down to concepts. Knowing what a loop requires to run, the power of references, how strings are managed in the heap (& why they are immutable), etc. This learning is divine. So, don’t start learning syntax, focus on concepts.

2. Be single – always – and free to mingle

Don’t marry a technology or you will look at every problem from the same lens. There are things that PHP can’t do, and places where Excel Macros won’t scale – but not everything requires Java with Spring, Hibernate & MQ. May be Javascript can solve the problem. Focus on the problem, and be willing to use any technology that works best, even if it means adopting something new. Like they say about soul mates, there is some God-(or man?) gifted technology out there which is waiting for you to grab it.

3. Be Lazy, very lazy

This is the first real piece of advice that I got as a developer (back then, I was writing hex frames to speak to cars). And I couldn’t neglect it, because View full article »

Were excited about our 100th post!

This is our 100th post!

It’s the 100th post on prasadgupte.com and it’s time to celebrate! For long, I envied the Americans for having Groupon until I realized that there are several deal of the day websites – in fact, with better business models – to serve us. I have been a regular user of these websites, having bought at least 15 deals totaling over INR 15,000 with overall savings of 69%.

5 reasons to save your riches with these shops

1. It saves money: What’s more important that saving some money?
2. It’s easy: There is no upfront payment to receive these deals – they’re delivered to your phone & mailbox for free.
3. It’s safe, either ways: I have always (knock on wood) had a good experience transacting on the internet, and these sites are safe to use as they transact over a trusted gateway. If you fear spending online, you can always have the coupons delivered to your doorstep – free of cost!* So its safe either ways.
4. Keeps you aware: One huge benefit I found out of following these deals (even if you don’t want to buy) is that it keeps you aware of the new places in town and the margins that you can possibly cut in when striking a deal.
5. It’s cool: There’s no reason to be shy – like my dad likes to make me feel. It’s any day cool to be spending smart!

I’ve put together a list of the creme-de-la-creme in the order of *my* choice:

1. DealsAndYou

DealsAndYou

DealsAndYou

I purchased deals worth Rs. 9100 for Rs. 2593. This is one of my favorites! The website is neat, and the deals are fabulous. They take the entire payment upfront – so its a deal in the real sense as against a discount coupon. It covers for roughly 60% of my deal spend and growing, ever my trust in the brand was bolstered by their quick justification email. View full article »

I had done some research on this topic and found that some script was available in Python. With no knowledge of Python execution, I sought help from stackoverflow & got the answer there pointed to the same Python script :( I decided I had to do something on my own! Ensuring the right no of spaces in the YAML could be a real pain – I haven’t found the error messages to be very friendly.

My challenge was to be able to generate a YAML for a table/schema using the nested-set behaviour in Doctrine. Instead of losing my mind on devising a human-readable format, I reverse engineered. I checked the resulting schema in the database and used that as the base for my CSV. Following this I wrote a simple macro that will output in the required format. This has evolved over a week or so, and has been thoroughly tested. I am sharing this file with 2 examples: one for the JobeetJob schema & other from the Hierarchical Data page on Doctrine.

Let me know if this helps! Vote for the answer on StackOverflow.

To start using:

  1. Download the ZIP file CSV/Excel to YAML Generator v2 & unzip it.
  2. Change the model name View full article »

Jargon: Code Profiling

Code profiling is a form of dynamic program (code) analysis to investigate the program’s behavior during execution. It is usually done to determine sections of code that can be optimized – to increase overall speed & reduce resource requirements. Code profiler can come in several varieties – from those that measure the frequency & duration of function calls to others that track memory usage. An emulator for micro-processor code (that simulates the processor’s instruction set) is also a type of profiler that measures behavior for the entire execution cycle – invocation to termination.

I first heard of code profiling in the context of reverse engineering software architectures. Often it may so happen that applications with very little documentation are to be enhanced or re-engineered. One way to understand is by analyzing code, which can be a tedious process. Such static program analysis may yield incomplete understanding as the polymorphic calls can’t be determined until run-time. A code profiler determines polymorphic function calls and identifies overloads used during execution which helps establish relationships between classes & components that can be used to reveal the underlying software architecture, if not for a specific pattern.

As is evident from several posts on my blog, I am a total food freak! I am also a regular burrper. I have written several valuable reviews at Burrp and also received written appreciation from Burrp. A couple of months back I was thinking of copying food review from Burrp to my blog. Since that was going to be tedious, I went looking for a RSS feed from Burrp. It was sad they don’t offer it, but I wrote them my feedback. Now I was left with no option but to think out of the box!

The Need

The Need

And then the Web 2.0 enthusiast in me came to life! I had been using a service called Feed43 to process several feeds and remembered that it allows creating a feed out of any page on the internet. I checked the HTML source code of my Burrp profile page to find that reviews were quite structured in terms of markup. So why not let Feed43 read out the page and create a feed for my reviews? This way I won’t have to copy anything manually. Moreover, whenever I post a review to Burrp, it will be available on my blog in less than 6 hours (that’s the refresh rate for free feeds at Feed43) View full article »

Off-late, I have had too much social presence on the internet. How do I manage it? Ping.fm! This service lets you pre-configure & then simultaneously update multiple social media sites by pinging Ping.fm which can be done via email, SMS (to a UK number – noooooh!) or a Jabber/Gtalk bot. Now that’s enough for the aam zindagi, but when you live the mentos (or should I say prasadgupte) zindagi, you might just want some processing to be done before you post to multiple services. That’s where TarPipe kicks-in! Here is a short tutorial.

Tarpipe lets you build custom workflows through an intuitive UI (like Yahoo pipes) to control how, where, and what part of your data is to be published. In my example, I’m creating a workflow to upload a photo to Facebook via email and then post its URL to Twitter & FriendFeed. I avoided using a URL shortening service to KISS (Keep It Simple, Stupid)

My First TarPipe Workflow

My First TarPipe Workflow

I first drag a Email Decoder connector onto the canvas, and then Facebook, Twitter and FriendFeed. Note that bubble on the left side of a connector indicates ‘input’ & the one on the right side indicates ‘output’.

So when I connect the Mail Attachment bubble to the Photo in Facebook, it means that the attachment (a photo) will act as input to Facebook. On similar lines, the message body acts as the caption for the photo. The URL for the photo, generated by Facebook, will be available as output which I will use as a link in Twitter. The photo-thumbnail goes to Friendfeed along with the title & link. The title in either case comes directly from the email. View full article »

Electronic Invoice Presentment and Payment, or EIPP, is more general concept (as compared to ERS discussed earlier) that is based on electronic invoice submission. ERS uses Advance Shipping Notices (ASNs) instead of invoice. However, they share benefits: avoidance of data entry, errors and exceptions, lost invoices and vendor inquiries. Most solutions are capable of receiving invoices in CSV, XML and few other formats over EDI.

EIPP or e-Invoicing is part of the larger procure-to-pay (P2P) cycle (will be writing soon on this). A huge challenge lies in supplier on-boarding: getting suppliers to automate at their end. In the current era, supplier enablement can be hastened by hosting an internet facing portal – called Supplier Portal in sourcing jargon – that suppliers can log-on to and key-in their invoices. ‘Flipping-the-PO’ is a standard feature that saves data entry effort for the supplier, and minimizes error. On referencing the PO being invoiced, information about line items viz. description, ordered quantity & price are defaulted. This helps reduce the number of expections in automated invoice matching. Imagine this as handing over your groceries list to a baniya who converts it to a bill by stamping his name and adding prices & total (and discounts if the baniya is willing to spare)

References:
http://scm.ncsu.edu/public/facts/facs041014.html
http://www.agilent.com/oracle_supplier/downloads/ERS_supplier_guide.pdf
http://www.jpmorgan.com/tss/General/Invoice_Management/1159348844579

prasadgupte | 1999-2012