Skip to content

Business - 10. page

Running a Google Apps Script Once a Month

I needed a way to email a Google spreadsheet to my boss once a month, for some reporting purposes.  I could have put an entry in my calendar reminding me to do it, but I thought it would be a great time to try out the Google Docs scripting that I had read about for a year or two, and seen an AppSumo video about.  (I got the AppSumo video for free, from an ad on HARO.)

It was laughably easy to get write the actual script (here’s a great set of tutorials).  The only rub was Google doesn’t allow you to run scripts in month intervals, only hourly, daily or weekly.  A small bit of scripting got around that.

Here’s the final script (edited to remove sensitive data):

function myFunction() {
  var dayOfMonth = Utilities.formatDate(new Date(), "GMT", "dd");
  if (dayOfMonth == 05){
    MailApp.sendEmail("email@example.com", "Spreadsheet Report Subject", 
'https://spreadsheets.google.com/a/mydomain.com/ccc?key='+SpreadsheetApp.getActiveSpreadsheet().getId());
  }
}

I set up a daily trigger for this script and installed it within the spreadsheet I needed to send.

I really really like Google Apps Script.  I think it has the power to be the VB of the web, in the way that VB made it easy to automate MS Office, reduce drudgery, and allow non developers to build business solutions.  It also ties together some really powerful tools–check out all the APIs you can access.

Once you let non developers develop, which is what Google Apps Script does, you do run into some maintenance issues (versioning, sharing the code, testing), but the same is true with Excel Macros, and solving those issues is for greater minds than mine.

Source Code Escrow

Have you ever considered asking a software vendor to put their source code in escrow? I recently broached the topic with a vendor I was evaluating. They didn’t seem too happy about the topic (at first, they were a bit sarcastic [“does Oracle do software escrow?”] and then they deleted tech support forum post). I did a bit of research, and there doesn’t seem to be a clear consensus on software escrow. Here are two interesting articles: Are you just following the herd? and Source Code Escrow.

Just having started thinking about the topic, my thoughts are still up in the air, but here’s my first reaction. Source code escrow makes sense when the following conditions are met:

  • The software is not open source (duh)
  • The software is or will be crucial to your business
  • The company is small or the future of the company is up in the air
  • You (the purchaser) have the technical capabilities to support the software should you receive it, or you’re willing to invest in those who can
  • You are willing to pay more for source that will be escrowed

I think of source code escrow like a warrenty on a car, or a professional license of open source software (like RedHat or Alfresco). It’s not for everyone (a car mechanic isn’t going to buy the warrenty) but it’s a nice option to have. And, to stretch a metaphor, if you’re going to soup up your car and build a livelihood on it, it’s nice to have a warrenty.

Why the reverse brain drain?

Via a retweet from Brad Feld, I saw this article.

This is confusing to me.  There is no hard data, but I’d like to explore why are people leaving the US to start companies back in the homeland.

Is it because of:

  1. visa issues
  2. the cost to build a company
  3. the economic opportunity in their home country

If it is the first one, I’m in favor of reform, though I think there are a number of ways to encourage founders to stay, and tying their visa to VC funding, like the startup visa does, doesn’t seem like an optimal strategy.

If it is the second, then we need a cost benefits analysis.  Making it easier to start companies is not an unalloyed good.  For example, I wouldn’t want it to be easier to start a company that made cancer causing products.  It’s harder to start a company in the US because we as a society have made choices that impose costs on companies.  Ask the Chinese how it is to have ineffective regulation.  On the other hand, as outlined in comments here, lowering risk for entrepeneurs (lack of health insurance!) could really lower costs for starting a company.

If it is the last, then, good luck to them.  Who can argue with the fact that Indian engineers are cheaper or that “there are no mature companies, like Google and Microsoft” in these countries?

Q and A: Unexpected technical issues when contracting

I got a question from a friend who is doing some freelancing.

Perhaps an odd question, but when you do web work and run into issues that are only showing up in IE browsers, do you bill the client for the extra time it takes to try to figure out how to make the site work on that crappy browser? I know the web developer(s) we used for the farm calculator [a project for which he was the client] bill for everything, even if they are redoing something they screwed up… but I’m curious as to your way of handling things like this. I want to be fair to my client, and myself!

This is a great question, and goes beyond just “IE browser” issues.  Here was my answer:

When I run into an IE problem, I will usually stop and ask the client if making it work perfectly on IE is really important to them.  It would be useful to have stats for IE on their website (or the broader internet: http://en.wikipedia.org/wiki/Usage_share_of_web_browsers ), so they can know if 10% of their users are on IE6 or 0.01%.  It also would be useful to have an estimate for how long it will take (as long as you’re clear that it is an estimate).

If I’m billing time and materials, and I’ve had this conversation, I absolutely bill the client, but try to keep them informed as to how long this is taking me.

If it is a fixed bid, then I might go to the client and say ‘I’ve run into this issue, for this browser, which is x% of your website traffic.  There’s solution A and solution B, but both of them are things I didn’t expect.  Can we talk about this additional work’.  If they say no, I grit my teeth and deal.

So, to make it more broadly applicable, if you run into issues that you didn’t expect, here’s my advice:

  • Stop work and identify the issue.  Don’t keep spinning your wheels.
  • Gather useful facts to help the client make an informed decision (IE browser % in the example above).  Include a rough estimate if you can, but make sure the client knows it is an estimate.
  • Talk to the client about the issue and find some kind of resolution.
  • If the resolution is you doing the work, then, if you are on a fixed bid, explain how you didn’t consider this particular issue and see if the client is flexible about paying for it.
  • If the resolution is you doing the work, and you are on a time and materials contract, then bill for the extra work.
  • In either case make sure you keep the client in the loop about time spent and schedule changes due to the issue.

Surprises come up all the time.  What is important is that you come to a fair accommodation with your client.

Stats mix is out of beta

Statsmix, a cool dashboard builder which I previously reviewed,  is out of beta, according to an email I just received, and an announcement on their blog.

They have have added info about pricing on their site.

I took a brief look at the new release and it seems to address the pricing issue, but not the integration issue.  Still, if I were running a business and needed some custom reporting measured over time, StatsMix would merit a serious evaluation.

On becoming an employee

I made the choice a few months ago to become an full time employee.  After a number of years of contracting, this was not an easy choice.  However, the company for which I work, 8z Real Estate, was not a black box to me.  I had contracted for them off and on since 2005.  Still, this was a big step for me, and I just wanted to blog about some of my thoughts around it.

Key reasons I became an employee:

  • An opportunity to really focus on the technical side.  No more being worried about the next gig.  Becoming an employee makes it easier for an employer to offer more freedom (for example, to explore a different skill set) to an employee as well.
  • The chance to be part of a kickass team with good teammates and a great manager.
  • It is fun to be part of a growing company.  We have Beer Fridays and other social events.
  • Less stress about work in general, although, as Bob Lewis said, the only difference between an employee and a contractor is that the employee has the illusion of job security.
  • 8z is doing some pretty cool stuff with some pretty interesting data, and offers a valuable service to many many people.  I can’t tell you how many folks have told me they love COhomefinder, the flagship webapp that I work on.

What I miss about being a contractor:

  • Business development–it was fun and challenging to think about how I could help everyone I met, or how they could help me
  • Extreme flexibility of hours, including when and how much I worked.
  • Greenfield development is always nice.  I am constantly learning and so sometimes cringe when I see code I wrote years ago.
  • Being able to say ‘no’/fire a client.

What I don’t miss about being a contractor:

  • Waiting for invoices to roll in and/or reminding clients about outstanding invoices.
  • Thinking about the next gig before the current one is done.
  • Regular overcommitment–making hay while the sun shines is what I had to do, but I did over commit at times.  Work life balance is easier to achieve.
  • Paperwork.

I’ll be blogging about my work at 8z from time to time going forward, so I added an 8z category to this blog.

Tech folks can learn from rap stars about social media

At least, this one did.

I am just finishing watching this hour long interview with Chamillionaire, (found via Both Sides of the Table).  It’s long, but worth listening to.  It is very interesting to see some of the patterns that arise in entreprenuership, venture capital, and the music industry. The key takeaway for me is that the rise of the internet means you are not limited to going through gatekeepers like you used to be (and this is true for entrepreneurs and musicians–check out this interesting company I found out about at Boco last year for a nice intersection of the two).

This isn’t strictly due to the internet (Chamillionaire started with mix tapes), but the internet radically increases the scope and breadth of our reach.  All you have to do is put in the time, blood, sweat and tears, and you can build your audience.  And, most importantly, you can take that audience with you wherever you go (Chamillionaire will when he leaves Universal, and Dion Almaer will as he leaves Palm).

Other highlights/takeaways:

  • control your image–even when you hire or use other people’s services, it is still on you maintain quality
  • you have lots of gifts to give–find out what people want and will pay for
  • go beyond your normal boundaries–when promoting one of his hits, Chamillionaire searched out rappers from beyond the mainstream (NZ, Greece) and leveraged their talents, rather than sticking with pop
  • the best presentation in the world fails if you don’t hold the microphone correctly
  • quora sounds like a useful, for pay, collection of questions and answers

In addition, lots of echos of Gary Vaynerchuk’s great video on building personal brands (cursing).  The user questions (the host took 5-10 during the hour) added a nice touch.  This is the first time I have watched ‘This Week in Venture Capital’ and I found the ‘sponsor breaks’ to be a bit abrupt, but I suppose the host has to pay the bills.

Two books of interest to freelancers

I recently read two finance books that might be of interest to freelancers.

The first is The Money Book For Freelancers, Part-Timers, and the Self-Employed by Joseph D’Agnese and Denise Kiernan.  I was pleasantly surprised to see a finance book aimed directly at people with sporadic income.  This book is written in an easy going style, with examples drawn from the author’s lives, as well as those of their friends.

The major takeaway is that you should pay yourself first–when a check comes in, allocate a percentage for taxes, a percentage for retirement, and a percentage for an emergency fund.  Do that first, so you aren’t even tempted to spend it.  I do this because of my corporate structure and SIMPLE IRA, but if you’re a new freelancer, or someone who is a schedule C worker, then it’s great advice.

Then, after a while, when you’re comfortable with the system, you can start to save for other goals.  One of the strongest parts of the book was when they encouraged you to sit down and write out your particular financial goals.  It’s tough to do, because when you do so, then you’re confronted with the hard work of trying to achieve them, but it’s great advice.

While this book was full of tips for dealing with the income side, I felt like the outgo side was covered as well.  They had advice about breaking up your expenses into required (taxes, retirement, emergency), overhead (rent/mortgage, food, insurance), and variable (eating out, classes).  Once you know your overhead and required expenses, if you get a windfall (that big client finally paid!) you can siphon that off into a separate account and use that for future months of expenses.  The authors also did a good job talking nuts and bolts, going down to the details of what type of bank accounts you need.

They didn’t really cover some things that are on the periphery of financial concerns–corporate structure, handling employees and contractors and types of insurance, for instance.  But doing so would probably have distracted from the main point of the book, so I understand.

If you’re a freelancer, and this strategy doesn’t work for you, you probably want to check this book out.

I also read Are you a Stock or a Bond by Moshe A. Milevsky.  This book is a fascinating look at the best way for modern savers with 401(k)s and IRAs to replicate what the WWII generation had–a pension.

The hook of the book is that savers should consider their lifetime earning potential and job prospects when planning a retirement asset allocation strategy.  Those who are in a more stable job (the author uses himself as an example–a tenured professor) should consider their earnings more bond-like and thus invest more in stocks (to the point of borrowing to buy stocks).  Those in a more tenuous job (farmer? I don’t remember his example) should do the opposite.

The hook, while thought provoking, is not really the focus of the book.  In fact, I was a bit disappointed that he didn’t spend more time telling you how to determine if your income stream was more stock like or more bond like.  Instead, he charges off into what you should do with your accumulated savings when you retire.

The short answer–buy an annuity.  The reason for this is that the guaranteed income from an annuity is impossible to replicate from the same amount of capital invested individually.  Why?  Because an annuity spreads payments across a population in which some will die before others.  Annuities essentially transfer wealth from those who die early to those who die later.  This asset class reduces your greatest financial risk at retirement–running out of money.  Just like a pension.

Definitely a thought provoking book, and one that would be especially useful to people approaching retirement.

One customer’s experience with offshoring

I’ve been thinking about offshoring for some time, but haven’t had many interactions with someone who really used an offshore developer. Recently, I ran into a client who did try to develop some software using an offshore developer, and was able to ask him some questions about the experience.  (Disclaimer: this client owns the dating site I blogged about recently).  Plus, outsourcing/freelancing is on my mind, due to the pick.im launch.
——————-

Dan: What did you ask your offshore developer to do? Did they succeed in that?

Michael:  We asked that a dating and friendship site be created for adults with mental illness and that it mimic sites similar to Match.com. We were assured that this would be no problem, but that was far from how things transpired. We did end up with a finished product, but I wouldn’t say it was a success. Nightmare would define things more accurately.

D:  How exactly was the finished product deficient? Did it not perform well? Did it not meet your expectations? Did it not do what the developer said it would do? Were there unfixed bugs? Did it look bad?

M: There were certain features that never worked, and the developer kept maintaining that everything worked just fine.  No, it did not meet the expectation that we would have a fully operational site with the features we had requested along with our bid that was accepted.  He also promised support for his work, but when we started experiencing bugs he would only fix for additional fees.  We didn’t know anybody else and really feel trapped.  … The overall aesthetics were fine, but the internal workings had issues.

D: What were your motivations for using them? What was the cost savings?

M: Money was the only motivation. I have to say that the cost savings were significant up front. However, we were constantly investing money to fix issues that plagued the site from day one. So, we probably ended up spending more, because we eventually scrapped the website and started over.

D: Did the offshore developer build the ASP website we recently scrapped (for skadate), or was there a previous iteration?

M: No, that was the site that the offshore developer originally built.  However, we found a local guy who made some modifications and was able to fix many of the issues.

D: How did you manage them? How were the requirements documented?

M: This was very loose and managed through email. I have to say, we were very ignorant and really should have sought out the advice of an expert before proceeding with the project. We knew what we wanted the site to do, but we really had no clue what we were doing…shame on us. What  can I say though, using an offshore freelancer sounded pretty good for a social worker trying to make things happen on a shoestring budget.

D: So, did you have a master checklist of requirements, or did you just kind of email the developer feature by feature?

M: There was a list of basic features that was provided when we posted the job, but I wouldn’t call it a master list.  That would make it sound like we were prepared!  We didn’t even know what language the site should be written in.  We did not know that asp was kind of a dinosaur language…

D: How did you find them?

M: getafreelancer.com

D: How were they lacking, and/or not lacking?

M: Let me try to recap a bit. Things started out nicely. There was a lot of email communication and even some discussion over skype (although the language barrier made this difficult, so we primarily stuck with email). The great communication didn’t last though. The email responses slowed to a trickle and then all together stopped.

Fortunately, the payment funds had been deposited into an escrow account, and we refused earlier requests to release part of the funds until the work had been completed. This was a recommendation by the freelance site, and were we glad we at least had this leverage. When we finally resumed communication with the developer he threatened to stop work on the site until we released the funds. We were so exhausted that we called his bluff, and told him to go ahead and keep the site. To make a long story short, he completed the project, and we went our separate ways. Oh, and the project took twice as long as he had agreed.

Retelling this is making my blood pressure rise, so I think I’ll leave it there…

D: What would you do differently next time to increase your chances of success?

M: I would not go offshore, and to be honest, I probably wouldn’t choose someone who I couldn’t drive over to their house. I’d also make sure I sucked it up and paid for someone with development knowledge who could  help manage the project.

D: Do you think that your project failed primarily because you went offshore, or primarily because you were a relative novice at managing a technical project, or some combination of the two?

M: I’m sure a bit of both, but it definitely would have helped if we would have had someone with development expertise that could have managed the project for us.

——————-

Wow.  What a nightmare!  (For a contrasting experience, read this excellent article about using RentACoder.)

So, as I alluded to in my last couple of questions, I think that this project would have been hard for any developer, anywhere.  Obstacles to overcome include:

  • shoestring budget
  • lack of technical knowledge
  • missing/unknown requirements
  • lack of project management.  It sounds like the client wasn’t able to do this, and the developer couldn’t or didn’t.

However, I think the issues above were exacerbated by offshoring because of

  • language and timezone barriers
  • missing trust building opportunities (face to face meetings, local get togethers)
  • no real reputation risk for the developer if his work was not up to snuff (sure, his rating on a site might go down, but that’s different than running into someone you screwed at a networking event)

Anyway, a fascinating look at how offshore development can go awry.  Try to think about the total costs, rather than just the hourly wage.

Anyone you know care about society?

As a society and democracy, we don’t need newspapers, but we do need journalism.  Please send Clay’s article to anyone who reads or writes for newspapers.  We all need to start thinking about how to preserve journalism through the internet revolution instead of hiding from it.  Oh, and this too: most of a local newspaper is not journalism.

Thanks to Clay Shirky for a cogent, scary, realistic analysis of this issue.  Via Barry Ritholtz.

PS: I hope the universities know that the internet is coming for them too.