Inspirational Quotes for Startups from 37Signals’ book Rework

If you are a startup, you have read 37Signal’s opinions on business, productivity and building software. Here are some inspirational quotes from their latest book Rework. I took these insights from Dharmesh Shah’s onStartups blog. And put them together along with the index of essays in a downloadable PDF. Print this and stick it in a visible place!

I enjoyed reading Jason Fried and David Heinemeier Hansson’s earlier book – Getting Real too. Of course, what worked for 37Signals (for Basecamp, Campfire, Ta-da list and their other products) may or may not work in your situation. Their advise is still valuable and worth pondering over for any startup / productivity aspirant.

Download the PDF

  1. Great businesses have a point of view, not just a product or service.
  2. Writing a plan makes you feel in control of things you don’t actually control.
  3. Don’t sit around and wait for someone else to make the change you want to see.
  4. Stuff that was impossible just a few years ago is simple today.
  5. Failure is not a prerequisite for success.
  6. Don’t make assumptions about how big you should be ahead of time.
  7. You have the most information when you’re doing something, not before you’ve done it.
  8. When you build what you need, you can assess quality directly instead of by proxy.
  9. Solving your own problem lets you fall in love with what you’re making.
  10. What you do matters, not what you think or say or plan.
  11. When you want something bad enough, you make the time.
  12. The perfect time to start something never arrives.
  13. Start a business, not a startup.
  14. You need a commitment strategy, not an exit strategy.
  15. Huge organizations talk instead of act, and meet instead of do.
  16. Build half a product, not a half-assed product.
  17. Getting to greatness starts by cutting out stuff that’s merely good.
  18. The real world isn’t a place, it’s an excuse. It’s a justification for not trying.
  19. The big picture is all you should be worrying about in the beginning. Ignore the details.
  20. It’s the stuff you leave out that matters.
  21. Decide. You’re as likely to make a great call today as you are tomorrow.
  22. The longer it takes to develop, the less likely it is to launch.
  23. Focus on substance, not fashion. Focus on what won’t change.
  24. When good enough gets the job done, go for it.
  25. When you make tiny decisions, you can’t make big mistakes.
  26. Pour yourself into your product.
  27. You rarely regret saying no but you often regret saying yes.
  28. Instead of out-spending your competitors, out-teach them.
  29. Let customers look behind the curtain.
  30. Better your customers grow out of your product, than never grow into them.
  31. You can’t paint over a bad experience with good marketing.
  32. All companies have customers. Fortunate companies have audiences too.
  33. Don’t hire for pleasure; hire to kill pain.
  34. Leave the poetry in what you make, there is beauty in imperfection.
  35. Marketing is not a department, it’s the sum total of everything you do.
  36. Don’t make up problems you don’t have yet.
  37. A business without a path to profit is a hobby.

Liked it?

Download printable PDF with best insights from the book here for free!

You can also download the excerpts from here.
essay shots

Importing Paypal transactions into Tally accounting software

We use Paypal to receive payments from customers. We maintain our financial accounts using Tally. Imagine copying over Paypal transactions into a separate accounting software – manually. You are creating all ledger accounts one by one. Ensuring spellings are correct, accounting heads are right and you are not missing any names in between. You’re numb by the time you’ve created 500th account, but still have another 500 to go. You drag yourself through the process. Over the next few days, you create sales and receipt vouchers for each sale. But hey, did you forget that the sales are in US Dollars, but income tax returns have to be filed in Indian Rupees? You now convert all amounts to suitable Rupee values. You probably use some Excel formulas to make it easier, but you still need to get those entries in Tally. Few more days of work, uh?

Urgh… It would be a nightmare to do this manually

This is the first financial year where we are submitting our returns, and I wanted to make sure everything is impeccable. My wife has extensive experience with Tally and she told me she could quickly make these entries.

I laughed, I knew it was not so easy, and that she was over optimistic!

There is no way this is done manually, I said to myself.

Lazy Programmers Automate Things

Being a lazy programmer, I wanted to automate this. Automating mundane tasks like this has numerous advantage. First, we will save a lot of data entry time (and headache). Second, we will save this time and headache every time in future we wanted to bring our accounts up to date. Third, it will avoid data entry errors. And forth, I will get to learn a bit more of Tally.

(To give you a bit of background on this, I have graduated in Commerce with Bookkeeping as my main subject, but I don’t remember any of it now. I always liked programming better! At the same time, I pity the accountants, seeing them working doubly hard just copying data from one source to another.)

It was my long time dream to import data in Tally. I was always told it’s possible to export from Tally to Excel, but not vice versa.

Time to break the myths!

Strategy 1: Import Excel Data to Tally

I looks around the web to find if someone else had similar problems and came up with some solution. And sure, I found UDI Magic by RTSLink.

RTSLink creates excellent software to import Excel to Tally, SQL Server / MySQL / DBF and virtually any database to Tally. The have a free utility called UDI Magic that allows importing Excel data to Tally.

I felt ecstatic. I found my solution so quickly! The next day, I downloaded UDI Magic and gave it a spin.

I found it worked really well. I could create ledger masters, sales transactions, stock transactions and a lot more with this software. It takes Excel data, converts it to XML and imports it to Tally using RTSLink DLL.

I decided I will convert my Paypal data to CSV. From CSV to Excel in a format UDI Magic can understand. And then to Tally.

This was a perfect solution. But had two problems.

  1. I will still need to convert Paypal data into a format UDI Magic could understand
  2. UDI Magic is a trial software. It works for 30 times / 30 days and expires.

Now I could keep installing it on different machines whenever I needed or try some other hackery to get around the expiry limitation. But I said, heck, why not be clean? Why not push my conversion system a bit further and convert to Tally XML itself?

Strategy 2: Solve the problem once and for all – Write a script to convert Paypal data (residing in MySQL) to UDI XML for Tally

I thought it would be easy. I know PHP and XML like the back of my hand. I can put together a converter in an hour.

Alas. It was not that quick. It took me 8 hours to write the converter. It still does not handle Purchases (I got tired, and did not have so many purchase transactions). But at the end of the day, I was able to import close to 600 master ledgers and about 900 vouchers in Tally in under a minute. That was sweet!

So how does this work?

Here is an overview

  1. Login to Paypal. Go to History. Download CSV reports – along with shopping cart details. If it takes too long to download full year’s transactions, download monthly batches.
  2. Download – unzip the contents to your local web server directory
  3. Create paypal_history table in your MySQL DB using paypal_history.sql file.
  4. Import Paypal transactions to this table using phpMyAdmin – Import Data.
  5. Ensure data is imported correctly. Fix problems if any.
  6. Configure database details and other configuration options in
  7. Make sure “data” folder is writeable (chmod 666)
  8. Hit the index.php via browser!
  9. Ensure generated XML files are valid. (You can open them with browser)
  10. Open Tally. Open the company you want to import to.
  11. Import Ledgers using Import Masters option under “Gateway of Tally”
  12. Verify it worked.
  13. Import transaction vouchers using “Import Vouchers” option
  14. Verify it worked!
  15. Enjoy!

Your Mileage May Vary

I wrote these scripts to solve a specific problem – import sales data from our Paypal account to Tally. Such that Tally shows all customers, their payments and products purchased. You will need to modify these scripts to suit your needs. These scripts support Web Accept Payments, Shopping Cart Payments and won’t record Refunded items. But they won’t import Purchases or simple Payments Received  / Sent (via Send Money tab in Paypal).

You can modify these scripts to import data from any database. If you add any features, do let me know!

Common Problems / Troubleshooting

  • Ensure the financial year is set correctly. Dates in import files must be within current financial year in Tally.
  • Make sure starting voucher number is set correctly. Vouchers won’t import otherwise.
  • If only some of the data gets imported (Tally quits importing at certain percentage), check the imported data. Find out last imported transaction. Locate it in the XML file. You have some problem with the transaction after this.
  • These scripts don’t import Purchase information yet.

Free Download

In a hurry? Download from here.


  • RTS Link website was extremely helpful. Especially their explanation of Sales vouchers XML and Receipts XML.
  • You may need a Tally expert around. My wife cleared some of my confusions about Debit and Credits ;-)

Using Paypal? You may like Putler

Do you use Paypal for your business? Then you may even like Putler – a Paypal Reporting, Monitoring and Planning tool.

Thank you, share your experiences

I hope these scripts prove useful to you. Thank you for trying them out! They saved us many days of work. If you like them, post a comment with your experience!

Gearing up for Entrepreneurship – Best Lessons

If you are coming here after my talk at Prerna – Entrepreneurship Seminar at SFIMAR today, welcome to a budding entrepreneur! What follows is a collection of my best articles on entrepreneurship from last 4 years.

My Best Blogs Posts for Entrepreneurs and Startups

Remember, there is equal risk in jobs and business

You will be concerned about four things when you consider starting on your own:

  • Entrepreneurship is too risky
  • It takes too much time
  • Business requires significant skills and confidence
  • (and best of all) Starting your own business needs lot of money

Consider that first three concerns apply to doing a job as well. As for money, it’s really about cashflows – both for individuals and businesses. If you have an urge, don’t wait, start something of your own. You can do it over weekends, you can do it on a small scale, but just do it!

And yes, you don’t need to be the poster boy of entrepreneurs, you don’t need huge successes

Most people talk about dreaming big and huge successes and the glamor around entrepreneurship. The truth is, you don’t need to be hugely successful. What matters is whether you are happier being on your own and making more than what you would have made in a job. You don’t need to grow to be the biggest company. You just need to follow your passion.

Go out, start something!

Showing Flex Preloader near the top of your Application

Flex comes with a reasonably good preloader (DownloadProgressBar) that shows in application center while the swf is loading and initializing. I had an application that is taller than browser’s view port height. This means the preloader will show below the fold – making it invisible to users who don’t scroll down. Even when the preloader is visible, it “feels” it’s just not in the right position.

I knew I could write some custom preloader, but I did not have the time / need for it. After reading a bit of documentation and diving in the DownloadProgressBar source code, I figured the solution was actually very easy.

Here’s the custom preloader source code that shows download progress bar for your Flex application near its top.

package com.components
  import mx.preloaders.DownloadProgressBar;
  public class MyDownloadProgressBar extends DownloadProgressBar
    public function MyDownloadProgressBar()
      // Set the download label.
      // Set the initialization label.
    // Override to return true so progress bar appears during initialization.       
    override protected function showDisplayForInit(elapsedTime:int, count:int):Boolean {
      return true;

    // Override to return true so progress bar appears during download.     
    override protected function showDisplayForDownloading(elapsedTime:int, event:ProgressEvent):Boolean {
      return true;

    // Override initialize so that we can position the loader
    override public function initialize():void {
      center(stageWidth, (stageHeight > 250) ? 250 : stageHeight);      

The critical part is initialize function. super.initialize(); calls DownloadProgressBar‘s initialization routine – which centers the preloader. We then call center again, but modifying the height parameter. If application size is more than 250 pixels, the preloader will be centered vertically within 250 pixels from top.

The only other code you need to write to make this work, is to tell your Application to use this preloader.

<mx:Application xmlns:mx="" 

Note: Remember to place the first code as within a com/components folder under your main application.mxml file.

That made me happy! But if you are looking for more, you can also check out:

Hope you enjoy!

Better Everyday – get things done, one success a day – I had many today

Where will you succeed today?

My school’s motto was “Better Everyday“. I kept screaming “Better Everyday, Better Everyday” during Friday morning school assemblies for over six years, but did not really understand what it meant.

I have been overwhelmed with work (happens every 3 months, it’s been a pattern, but more about it some other day). And while I was reflecting on this pile of work, I realized I did get at least one solid item off my list almost every day. But I was stressed as that list kept getting longer.

What if I focused on my successes, rather than failures? What if I could succeed in just one thing everyday?

I reviewed the work I did get done last week and felt very happy. That’s when I twitted:

Nothing motivates more than success. Where will you succeed today?

I wrote it, was proud and went to sleep. But when I booted up my MacBook this morning, I noticed it again.

And I stopped. Thought about where do I want to succeed today. Made a mental note of it. And began working.

This is how my day went:

  • By 10.30, I had one client happy. Work was moving slowly on that project, but today we nailed it.
  • Around 11.30, I had another client happy. Solved an annoying bug within minutes and the client said “Wahoo! That’s brilliant!”
  • One major customer called before noon, complaining about a mail server issue. I talked to my team and gave an update in an hour. By the end of our day, we had a good enough solution in place.
  • Shown stick to a project team in our standup meeting at noon. They completed pending work before signing out.
  • Worked on cleaning up some malformed XML files in afternoon. This project was facing lot of technical challenges. But I had a working prototype ready at 6.45pm when I left work.
  • And I even fixed an annoying bug in PlannerX just before I started this post.

Amazing how much happened by focusing on where I want to succeed today.

And I could say:

Satisfying day. Progress on projects. Made 5 customers happy!

Incremental improvements carried out daily can make transform your life in three months. Focusing on small successes can bring you big victories. I understand that’s what our school wanted us to learn from “Better Everyday”.

Did you get better today?

What are you going to succeed at tomorrow?