Yuck. OPC Projects

I have a lot of OPC projects.  I tend to avoid them when I can but sometimes it’s unavoidable.

Whenever I deal with an OPC project I’m screaming ‘encapsulation!’ half the time and the other half the time I’m screaming ‘container controls’!  Yeesh.  Seems like people are making their lives harder than it needs to be.

The answer, of course, is that programming is not easy and they wouldn’t be paying me to work for them if they could do it themselves.  It’s pays the bills so I guess I shouldn’t complain.

How do we teach RB newbies some of skills that will make their lives easier?

Registration Systems For RB

Product registration and licensing systems is a fairly common call for help on the REALbasic forums.  I know I’ve rolled my own registration system and used various commercial solutions over the years.  In fact, we came up with a solution that works with desktop apps using a licensing system meant for servers.  That solution has worked well, but time goes on and what was good for years might not be such a great idea now.  Software grows old and stale and new solutions are born.

To me it seems that there are a couple of issues to deal with.  The first is keeping casual piracy down to a minimum.  I have no doubt that someone determined enough can pirate any piece of software.  It’s just a fact of life-get over it.  This means that if someone pays for the software they can’t post the registration code and have it go all over the internet.  Or if they do, it quickly gets squashed and it’s no longer valid.  Another consideration is that I don’t want to piss off my good customers because my licensing scheme is so draconian (I’m looking at you Microsoft).

The second part of the equation is getting paid.  People want to use PayPal or their credit card (and occasionally checks via snail mail) but setting some of that up on your own is a pain.  PayPal is probably the easiest but I know there are segments of the population that refuse to use it.  Plus I want my money sooner rather than later.  If someone else is handling my money will I have a waiting period or minimum balance before I get to see the money?  Is it an automatic transfer or is it via check?

The third part of the equation is administration of the system.  How easy/hard is it to add coupon codes?  Can I get detailed sales reports?  How easy is it to issue to refunds?  Can I email customers with news?  And do those customers have an easy way to opt-out of future emails?  Can customers retrieve their licenses without manual intervention?

The fourth part is how easy/hard is it to integrate into my application?  Do I have to come up with my own registration code algorithm?  How do I convert existing customers over to the new system?  Does it work on Mac, Windows and Linux?

So I want it good, reliable, cheap and fast!  No pressure there!  ;-)

Kagi and eSellerate seem to be two fairly common solutions.  Both take a chunk of money from the sale price and until I saw the Apple app store I thought their commission was a little high.  Perhaps it’s worth the hassles leaving all of the server details to someone else (after having dealt with server issues in the past six months it might be worth it!)

FWIW, I used Kagi several years ago and was not very impressed with their responsiveness to support issues.  I also found their interface for making a webstore to be very clunky.  Hopefully they’ve changed, and if so, I’d love to hear about it.

What are you using for registration systems?  Do you like it?  Was it easy to integrate into your application?  Has it helped income or hurt it?  What sort of problems have you had?

Yeah, Right. You Can Do It

I ran across this post today:  http://blog.bitquabit.com/2009/07/01/one-which-i-call-out-hacker-news/ The basic story is that the author is refuting the claim that StackOverflow.com could be replicated “easily”.

I think this is an awesome post because it’s a warning to others and reminder to myself that everything is not as easy as it seems.  Often we look at an application and say, “I could do that.”  Yes, you could.  Without a doubt.

Here’s my advice though:  Take your estimate of weeks and make it months and turn months into years and you’ll probably be closer to the truth.  Even copying user interface and data structures verbatim I think most people would still have a hard time replicating an existing application quickly.

One project I worked on was a QuickBooks-like accounting application.  On a four person team.  Five days a week.  For FIVE YEARS!  And we had QuickBooks as the blueprint, if you will, for the accounting side of the application.  Guess what?  Even though I’ve moved on they’re STILL adding to and modifying the accounting engine.  QuickBooks is a moving target and I wish my old teammates luck in striving for it.

Every now and then someone gets a hair up their rear end and brag that THEY could do REALbasic better than REAL Software (because some bug has really pissed them off).  It’s quite possible that someone out there is working on an awesome RB clone and someday release it.  But don’t expect it anytime soon.

The same goes with claims of “I could easily make the RB IDE do this or that!”  If it was easy no doubt RS would already have done it.  Let’s face it, software is often a case of the mistakes of the father now make our lives a living nightmare.  This is not to knock our forefather developers just that what seemed like the best way five or ten years ago is woefully inadequate in today’s terms and to make it do ‘x’ (which seems easy) isn’t because the infrastructure isn’t there to do it.  So the whole thing has to be redone and done so you don’t break backwards compatibility.

Again, sorry for the blog about another persons blog.  I hope you find these discussions helpful and thought provoking.  Thoughts?

It’s Your Party (i.e. GPL Licensing)

Special thanks for John Gruber over at Daring Fireball for finding the post at http://www.red-sweater.com/blog/825/getting-pretty-lonely

I don’t know about you, but I’ve had serious concerns (like most of the REALbasic community) about using MySQL database servers because the GPL-style licensing makes me nervous.  I’d love to use it but if it means I’m on the hook for licensing fees and/or have to release my source code of my apps that use I’d much rather not bother with it.  ARBP did a survey last fall that pretty much showed MySQL usage down 20% and PostgreSQL (which has very liberal licensing) up about the same amount.

Any way you slice it, to us mere mortals the GPL is vague at best.  We’re programmers for heaven’s sake!  We don’t write vague code because vague code doesn’t work.  Be explicit like the MIT license – it’s clear and concise and is far from ambiguous.  I think the GPL should be rewritten to make it explicitly clear.

I didn’t mean to start a whole blog post about someone else’s blog post but I know that there are a lot of questions about GPL and what it means to the developer.  What are your thoughts on the GPL?

Why Pay Someone to Develop Software?

As a software consultant I get asked by non-software developers why do people  have me write custom software when there are easy-to-use tools out there, like Microsoft Access, FileMaker, Visual Basic, and REALbasic?  It’s a tricky question to answer because they aren’t software developers nor or they power users.  They use their computers to write documents, email and surf the web – not exactly the rocket science apps of the world.  So I came up with an analogy that people understand.

This comes from the world of ‘Do It Yourself Home Repair’.  In my younger days (you can read that as not having a lot of money) I would always take a stab at doing all those little projects that come with owning a house.  Faucet needs replacing?  No problem!  I’d go size it up as best as I could, go to the hardware store and pick up what I thought were the parts and tools I needed.

Some of you know where this is going.  On the second trip to the hardware store I’d get the parts I REALLY needed to do the job and on the third trip to the hardware store I’d pick up the things I had no clue I needed to begin with (or possibly to fix what I broke in the process of fixing the original problem).  The final trip to the hardware store is to return all the unused parts.  And all that is assuming I don’t find a leak in the next day or two (or two weeks later).

Did I get the job done?  Sure but it took three trips to the hardware store and an entire day to do it.  I called a plumber to do the same thing recently and they were in and out in 30 minutes and if I’m not happy or something doesn’t work right they come back out (typically for free because I’ve already paid).  My job isn’t too much different than the plumber.

When people come to me for a project I can guess how much work is going to go into it a project before I’m done reading their requirements document (if they have one).  I’ve worked on three accounting applications and the ones that don’t like their current accounting app get excited about that.  I tell them that unless they’re willing to spend a boatload of money and wait a year it won’t happen.  Applications of that complexity are huge, hairy monsters that take time to develop and even then there are yearly (and sometimes monthly) updates (especially if you want payroll taxes calculated automatically).

Sometimes it’s a shame that there are easy-to-use products like FileMaker, MS Access and to a lesser extent Visual Basic and REALbasic.  FileMaker and Access are  powerful tools that let mere mortals do some complex things with a database.  Just like me having a set of minimal tools doesn’t make me a plumber these tools give the user the false impression that they’re a full-fledged database developer when in reality they know how to use some tools.  That’s not to put these folks down because they’ve done some really cool and complex work.

The plumber has a truck full of fittings and miscellaneous parts.  He or she also has a set of specialized tools to aid them in their work and have years of training.  Likewise, software developers have  specialized tools to help us as well and we have years worth of miscellaneous code, controls, libraries that we’ve learned to use.  And perhaps most of all, the software developer knows how to use the tools and parts together.

So sure, you could do your software project yourself and you’ll learn how to do preferences, file I/O, database operations, error handling, licensing and registration, automatic updates, custom controls, and a million other little things.  Software developers already know how to do that.  In the long run, how much is your time (and frustration) worth?

Thoughts?  Did I use the best analogy?  What other benefits are there to having a pro write your software for you?  Do you have any drawbacks?

REALbasic Project Requests up, Up, UP!

I don’t know if you’ve noticed this or not, but requests for quotes for REALbasic projects has been through the roof the past couple of weeks.  Between the REALbasic Developer Network (i.e. the Find a Consultant web page) and the ARBP Find a Developer web page it sure has been busy.  I can only find one “help me learn REALbasic” post in the past month or so.  This is a good thing since there used to be a bunch of them.

I don’t know if  RS marketing efforts are leading to these requests or if the ever-increasing Macintosh presense in the business world is making more people want cross-platform applications but something seems to have changed.  (Or it’s a combination of everything!)  Of course there’s nothing to say if the requests dry up in the next month or so.  Only time will tell.

I find it interesting that a lot of the recent projects are converting from either FileMaker or 4D.  RB can make a nice database application (assuming you know what you’re doing).  RS is always looking to enhance the user experience and I encourage RS to enhance their database tools.  I, however, do not want them to become another FileMaker or 4D because a generic application environment can do things better than a database-centric application, in my opinion.  Likewise there are things that FileMaker, 4D and MS Access do better than a generic application environment like RB.  It depends upon the requirements, in the long run.

Since I help run ARBP you can take this criticism with a grain of salt.  One of my biggest beefs with the RS developer program is that it’s simply a forwarded email.  If you signed up today you’d miss everything from last week (if you did sign up I’d certainly ask for all recent posts since $1k is nice chunk of change).  With ARBP we keep them around for a while (which is a problem all by itself that I’m trying to correct).  Another point is there isn’t a whole lot of information in the posts.  A contact information (name, email, phone) and a brief description of the project.  It would be nice to get more information.  What platforms?  Is it an existing project?  Is it a conversion project?  From what language?  Is it commercial or internal software?  I could probably continue on what I’d like to see, but I’d be repeating myself.

As a consultant, are you busy?  Better yet, are you as busy as you’d like to be?  Have you seen any trends in the past six months?

Vacation Ruminations

One of the things that’s tough as a small business owner is getting away from work.  Heck, even if you’re not ‘working’ you’re thinking about work and stressed about work or the lack thereof or any one of a million things.  So it’s important to get away every now and then.

I know that a lot of my peers aren’t this lucky, but I have an employee that can handle a lot of stuff while I’m gone.  We put that to the test this past week and a half as the family took an Alaskan cruise.  Traveling can be stressful in its own right but I’ve discovered a couple of things about cruises:  if you are hungry or bored you’re doing it intentionally.

Our cruise ports were Seattle, Ketchikan, fjording, Juneau, Skagway, Victoria and finally back to Seattle.  We had three cameras, one video recorder and two iPhones.  Without even looking at the video we have over 1500 pictures from 10 days.  This does not include any that my brother-in-law and his family took.  I think I might have to cull it down a bit to fit it on to the iMovie DVD tradition.  :)

The weather was perfect the entire time.  No rain at all – which had some of the Alaskan’s concerned (because the new Walmart had run out of hoses).  I enjoyed Seattle far more than I expected.  The Science Fiction Hall of Fame was cool (the gift shop sucked).  The Glass Museum in Tacoma was pretty cool as well though the real highlight was taking the bridge across the highway with all the Don Chiluhy samples.

Without a doubt the wildlife and scenery were the highlights of the Alaskan trip.  I can honestly say, though, that I’m done with ‘pretty mountains with snow’ for a while.  We saw a couple of glaciers but didn’t see any calving.  Oh well, the bald Eagles, whales and the bear cub made up for it.

I’m writing this after a hectic day of catching up on emails that my employee couldn’t deal with and doing all the things to catch up on news in the tech world.  It was a busy week with all of the Apple announcements.  Being disconnected from the internet left me feeling ‘disconnected’ but that in itself is a very good thing because I needed it – it had been well over a year since I took any significant time off.

I feel refreshed (though tired) and ready to get back into multiple projects.  My employee handled the minor situations that came up with absolutely no issues and now he’s ready to go on his vacation.  It seems that there are a half-dozen projects that are very close to happening which means we’ll be crazy busy for a while.  But that’s okay.  Being disconnected for a while has restored my sense of balance.  You should try it sometime.

Do You Have a Job or Do You Run a Business?

It’s been an interesting six weeks as our kitchen has been remodeled.  Thankfully we’re within days of getting our kitchen back and can finally do some hosting.  The person doing the remodeling has done an awesome job and we’ve had many discussions on being in business.  It’s funny because our discussions mirror what I have with software developers that have their own business.  I suspect that most business owners have the same sorts of problems.

One topic that comes up over and over again is pricing.  Our remodeler gave up trying to compete solely on price long ago because there’s always someone new to the profession that wants to get their foot in the door.  Either that or they really have no idea what their time is worth.  Don’t forget that you should always be aware of what your real costs are because whatever your hourly rate is it should take into account tools and equipment, all forms of taxes, training time, vacation time, sick time, insurance,  and your retirement.  Also you need to plan on NOT having work for a period of time.  All of these factors increase your rate.

The question of having or not having employees seems to be a tricky one.  I’ve always maintained that I want employees smarter than me (depending on who you ask that might not be hard, but I digress….) because I don’t want to babysit and have to explain everything and make all the decisions.  In fact, I’d like to learn a few things from my employees.  The argument can be made that I’m training my potential competitors and that may be true but so far that has not happened and I refuse to live in fear of that.

I’ve been in business long enough to realize that it takes a special person to own and run a business.  There is no day off and you just don’t stop thinking about work at 5:00 PM and restart thinking about it at 8:00 AM the next day or on Monday.  It just doesn’t work that way and anyone who’s going to start their own business based on that belief should just stop right now.  Sure I have the flexibility to go to the gym at 1 in the afternoon, but does that make up for answering tech support emails at 11:30 at night?  Only you can make the determination as a business owner.

Do you have a plan for your business or are you ‘going with the flow’?  I look at it this way:  Do you have a job or do you run a business?  A job is something you go to every day to pay the bills.  A business is something that you manage and plan on growing into something bigger than it is right now.  So whatever plans you have, write them down.  Once you right them down you can start acting on them.

What are your plans for 6 months from now?  A year?  Do you plan on hiring any additional staff?  Do you have plans for new products or updates to existing ones?

These are all questions you need to ask yourself when you’re managing your business.  If you’re not, you might just have a job.

Are You A Mail Junkie?

I have a confession.  I am an email junkie. My in box is my to do list and I keep it fastidiously clean.  I get an email and deal with it NOW.  I get hundreds of emails a day (most of it spam that I have to make sure isn’t legitimate) and this was distracting me to the point of making my productivity on real work go down.  I can’t live without email because it’s the bread and butter of my business.

My solution?  I simply cut down on the frequency of checking for new mail.  Instead of every 5 minutes (I don’t remember if that’s the default in Apple’s Mail or not) I now have it set for every 30 minutes.

Seems like a simple thing but 30 minutes of uninterrupted work is worth it.

Do you have similar problems?  What have you done to increase your productivity?

Estimates and ‘The Reality Factor’

Estimates aren’t very easy.  In fact, I’d say that it’s the hardest part of being a consultant because of the time and effort that goes into making a decent estimate.  It’s really just an educated guess.

Think about it for a second.  You’re being asked to figure out how much time and money it will take do something without actually doing the work.  And in most cases a client has given you a vague, rough idea of what they want.  If you’re lucky.

If you’re unlucky, the client has an OPC (Other Peoples Code) project that they’re bringing to you to fix.  What’s even worse, they give you a paragraph of what the application does, with no specifics, and expect it to be done quickly and cheaply and correctly.

The other thing that sucks about estimates is knowing that we humans are notoriously bad at determining how much time something will take.  We’re good at estimating a lot of things but time estimates are ephemeral at best.  I started my career as an electrical engineering doing project engineering work.  It only took a few small projects (and getting chewed out when my estimates were horrible) to realize that my ‘it only takes a day to do that’ estimate turned into three days (or more).

So I have my multiply by three rule.  Take your estimate, which is really the ‘if everything works perfectly the first time and I can devote 100% of my day to it’ estimate and then multiply by your reality factor.

The real trick is learning from your past successes and mistakes.  Now that I have a standard tool set of classes, controls and modules that I’ve used on a dozens of projects it’s easy to say that adding ‘X’ is 15 minutes worth of work and the reality factor is 1.5.  Creating new controls, since it has a high degree of initial failure, might have a reality factor of 2 to 3.  If you have a feeling that a client is going to be really picky, maybe that reality factor goes up a little.  If the project requirement details are scarce the factor goes up again.

Trust your gut on this one folks.  The figure at the bottom of the spreadsheet seems high sometimes.  You’ll be tempted to lower some estimates to make it more palatable to the client.  Sometimes you might have to do that to get the job, but try to resist the temptation.  As a consultant your pricing is based on what your time and experience are worth along with all the other things that go into being a business.  You have overhead, marketing, taxes, insurance, and you have a retirement plan, right?

So what’s your Reality Factor?