Widgets TechBiz

Flotsam and Jetsam #83

By Nick at May 25, 2014 22:23
Filed Under: Delphi, TechBiz
  • Del Yocam is a former Borland CEO, a purchaser of $30,000 couches, the creator of the immortal “Inprise”, a lover of pizza, and apparently a check kiter.
  • I have decided to take the advice of some commenters and leave the site pretty much alone.  I removed a bunch of the ads that weren’t generating much if any revenue and removed some of the little boxes on the side that I didn’t think were very useful or that anyone paid any attention to.  Hopefully it is a bit cleaner that way. 
  • So I have a “Bleg” – a blog beg.  I’m not pleased with the code formatter used by this blog.  It’s hard to set up, seems to keep breaking, and feels old and outdated.  Anyone have any better ideas?
  • I’d like to personally thank each and every one of you that have purchased my book.  I also really appreciate the kind words I’ve received.  I’m really very grateful.  It’s really cool to know that you have written a book that actually has a listing on Amazon.  And I won’t lie – the extra money has been very timely.  And a quick word about that – I have made far, far, far more money having self-published than I would have had I worked through an established publishing house.  The publishing industry is changing rapidly, and my excellent experience with self-publishing is a testimony to that.  Thanks should go to LeanPub and CreateSpace for making it possible.  If you are thinking about writing a book – any kind of book – I’d strongly recommend that route.
  • I’m going to be giving my Unit Testing talk at the Philly.Net Code Camp next month.  If you are in the Philadelphia area, you might consider coming to the event.  It is a much bigger conference this year, spanning two days and happening at the Valley Forge Convention Center.  Typically there are 700 or more folks there – it’s usually a big event.  The talks are generally aimed at .Net developers, but there is a lot of Javascript and other topics.  I’ll be there both days.
  • I had a great time at the Delphi Developer Days in Baltimore earlier in the month.  It was great to see Cary and Loy, as well as Dr. Bob.  The classes were good, Jim McKeeth was there, and it was nice to meet new folks as well.   I highly recommend these events.  There are DDD’s in London and Amsterdam still left.  I don’t know if there is space available, but if you can attend, I think you should.

Blast from the Past: Delphi Books and the Publishing Market

By Nick at November 27, 2012 02:21
Filed Under: Delphi, TechBiz

Yet another Blast from the Past.  This one was originally posted on May 2, 2006 and is another one that holds true six and a half years later.   It's fun to note that the number of Delphi books out there appears to be increasing as it becomes easier to publish and the bookstore becomes practically the last place you'll go to get a Delphi book.

I'm nearing the end of a pretty big project at a client very near our office.  I've been going in ever day full-time for the past few months.  I've really enjoyed working there, as the folks are nice, the development process is very professional and quite good, and the camaraderie quite enjoyable.

Now that the project is winding down, I've had a chance to actually do a bit more visiting and kibitzing with the folks there about general topics concerning development (plus various forays into the Civil War, American Idol, etc.)  The topic of Delphi books came up, and one of the guys, Randy, made a good point.  He noted that the reason that there aren't that many Delphi books out there is that there doesn't need to be that many good Delphi books out there.

The books that are out there are complete, comprehensive, and well done.  For instance, there are really two books out there right now for Delphi:  Delphi for .NET Developer's Guide by Xavier Pacheco, and Mastering Borland Delphi 2005 by Marco Cantu. Once you've bought one (or both) of these books, you've got pretty much everything you need.  Xavier's book covers pretty much everything you need to develop in Delphi for .Net, and Marco's book covers both .Net and Win32 development.  If you have Marco's book, for instance, you really don't need any other books.

Another factor in limiting the market for Delphi books is that Delphi is a mature product.  It's users are to a large degree familiar with the language and the tool, and thus the demand for books that cover the basics is limited.  There just aren't that many folks out there that need to buy a book about Delphi anymore.  (Now, we can argue that we all need to figure out a way to increase the number of folks that want to buy books, but that is another blog post.) And since there are so many facets to Delphi, any book on an advanced topic would be of limited interest.  And for topics like ASP.NET, there are so many C#/VB.NET based books out there, the content of which is 99.9% useful to a Delphi developer, that there's little reason for a publisher to go to the effort of putting out, say, an "ASP.NET for Delphi Developers" book -- as much as I'd like to see such a thing.

In addition, the presence of resources like makes finding answers to questions and problems easy.  It's a rare day indeed when I can find an answer to a question using the newsgroup archives.  This is an invaluable resource, when you stop to think about it.  Shoot, just Peter Below's responses alone are worth their weight in gold.  Smile  It might very well be that the excellent support received in the newsgroups has limited the market for Delphi books as well.

The bottom line, it seems to me, is that there aren't that many Delphi books out there because we just don't need that many Delphi books.

So what is the future of Delphi books?  I think it's with something like couldn't be easier -- you send them a PDF, and then they'll print out a real book whenever someone pays for one.  No muss, no fuss.  Basically you are 100% in charge of the PDF, and you get 80% of the selling price. Someone like Ray Konopka, who sells his class Delphi Component Development book online as a PDF, would be perfect for something like this.  You want to publish your own Delphi book?  There you go.  The size of the audience matters not.  You want to buy a book?  Encourage authors to use a service like to publish their materials.  Heck, publish one yourself.  The overhead costs seem quite small, and overall, it seems pathetically smart and simple.

I suspect that services like will florish and only get better and cheaper.  The stack of Delphi books at your local Borders (weird -- that link basicall goes to might not be that tall, but the amount of information available to Delphi developers is still staggering.  I've never been a big believer in the "books on the shelf equals market strength" theory -- at least in the sense that I think Delphi's market strength is much, much stronger than one might conclude from a trip to Barnes & Noble.  Delphi book publishing need not be dead, it just needs to shift to a new way of doing business.

Blast from the Past: Takes One to Know One

By Nick at November 25, 2012 13:15
Filed Under: Delphi, Leadership, Software Development, TechBiz

This one is a Blast from the Past -- I originally wrote and posted it on December 15, 2005 -- but it is as true today as it was then.  I even considered palming it off as fresh material. Smile

It's a standard Dilbert joke that managers are idiots.  One doesn't have to hang around programmers too long to find out that many of them work for managers that don't have a clue about developing software and thus make many a nutty decision based on profound ignorance.  Plenty of  Delphi fans have had a boss that follows the "Nobody ever got fired for choosing Microsoft Development tools" rule and choose Visual Basic as a corporate standard. <shudder>  And the old adage states that programmers make crappy managers.

So, I guess, based on the above, it's impossible for someone to be a good manager of programmers.  If one doesn't know anything about programming and has never been a programmer, then apparently, he will suck as a manager.  And if one has been a programmer, and is so good at it that he gets promoted to be a manager, he,too, will suck as a manager.  Sounds like a lose/lose situation all around --   programmers doomed to a life of sucky supervisors.

Well, I'm not buying it.  Surely somewhere, somebody is managing programmers well.  Somebody has to be leading folks to build some of the insanely good software projects that are going on out there.  So, what does it take to manage programmers well?  Good question.  I'd say that such skills and capabilities exist.  I'd also say that they are, sadly, in relatively short supply.  Too many Dilbert strips end up on too many cubicles in software development shops.

First, to be a good manager of programmers you have to be,well, a good manager.  That's easier than people think, really.  Here's my basic list of things one can do and not do to be a good manager:

  • Place the careers of the people that work for you above your own.  Never, ever, ever, ever, ever take a dump on an employee to make yourself look good to your boss.  Always let the boss take a dump on you instead of your employee. Take responsibility for everything bad that happens under your watch.  Dole out all the credit for good things that happen to your people.  If you have some bizarre, overwhelming need to impress and brown-nose your boss, let your employees make you look good.  It's your job to make your employees happy and productive.  It's not your job to get promoted.  (And do I need to say that if your employees are happy and motivated, then they'll do a good job, which means you are doing a good job?)
  • Place the needs of the employees over your own.  What's the quickest way for a Marine Corps officer to be considered the biggest jerk since Josef Stalin? Get in the chow line ahead of his Marines.  Officers don't eat until the troops do.  Take the same attitude, and your people will love you and work hard for you.  Give them the good computers.  Give them the good chairs.  Don't take a perk for yourself until they all have it.  Believe me -- they will notice this.  Another way to state this is don't ask your employees to do anything you yourself aren't willing to do. If you want your folks to work 12 hours a day, you need to be there 13 hours a day.
  • Recognize that your employees know what they are talking about and might actually know more about some things than you do.  (If they don't know what they are talking about and they don't know more about some things than you do,  then you need to get new employees).  If your employees seem to think that the WonderWidget is a much better solution to a problem than the SuperSprocket, then, hey,  maybe, just maybe, they are right.  Just because you read about the SuperSprocket in some magazine that takes $4.6 million dollars a year in advertising from SuperSprocket, Inc., doesn't mean that is the way to go. 
  • As a follow on to that, don't try to impress your employees with your knowledge.  Don't spout buzzwords unless you know what they mean. They probably are going to think that you are an idiot anyway, so feel free to appear to be ignorant about things that, well, you are ignorant about.  If you don't have a clue about what the best printer is for the needs of your team, then let the folks on your team that do know about such things choose the printer.  If you don't know the answer to something, say so.  The quickest way to be thought an idiot is to try to act like you know what you are talking about when you don't.
  • Manage yourself out of  a job.  The best managers are the ones that sit in their office all day surfing the internet because they've set things up so that their people can take care of everything and thus they don't have anything to do.  People love being the ones with the power, authority and skill to do the work. If you are in their shorts all day, making all the decisions, doing all the work, and taking all the credit, you will be a crappy manager.  Once you've managed yourself out of a job, then, besides surfing the net, you can spend all your time making things even better for your employees and protecting them from the foibles of your boss. 
  • Encourage your employees to tell you what is bugging them.  When I was running a 24/7 Intelligence Watch, I told my people that if they found a Dilbert cartoon that exactly described a stupid, irritating, or aggravating situation in our organization or something that I was doing that was "pointy-haired-boss-ish", they could bring it to me or put it on my desk anonymously.  If you are totally committed to the first two items on this list, they will come to you. If you aren't, they never will.  And if your employees aren't bringing issues and complaints and problems to you, then you have a big problem.
  • Reward your employees with what they want to be rewarded with.  Frankly, this is usually good old cash money. But if you can't do that,  perhaps they want better computers, a nicer desk chair, a day off, whatever.  If you want to reward someone, find out what they want and give it to them.  But please, PLEASE -- I'm begging you here -- do not call a big meeting and pass out a "Worker of the Week" award with some cheesy certificate ginned up with Microsoft Publisher.  When I was in the Navy and at a joint command, I had an Air Force Colonel that did this, and he was universally mocked and reviled for it. Everyone thought it was a joke.  No one wanted that silly certificate and everyone hoped and prayed that they wouldn't "win" the thing.  Those that did posted them like they post Dilbert cartoons on their cubicles -- sort of like a badge of "dishonor".

Now, that's all general stuff.  It applies to all managers, whether they lead a team of auto workers or a group of Delphi programmers.  What does it take to manage programmers well?

  • I think that to be a good manager of programmers, you have to be, or at least have been, a programmer yourself.  This goes against the conventional wisdom, I know, but I think that in order to understand the way programmers work, you really have to have done it yourself.  It's true that many programmers would make bad managers, but it doesn't follow that every programmer guarantees that one will be a bad manager.  Programming is one of those strange professions that mixes right- and left-brained skills.  To program well, you have to have an ordered, mathematically oriented mind, but at the same time you have to come up with artistic, creative solutions to puzzles and problems.  One really needs to be one to understand one.  Now the hard part here is that most programmers don't want to be managers. Alas -- a quandry there, eh?  Well, if you run across one thatdoes, don't hesitate to consider it.  If you are a programmer and want to be a manager, let your bosses know, they'll probably be happy to hear it.
  • Give programmers what they want:  challenging work, a quite place to do that work, a good fast computer, a good salary, and the opportunity to expand their skillset.  Don't be cheap on these things.  This may cost a bit more,but you'll make it back in spades.
  • To as large a degree as possible, let programmers choose the tools that they use.  I know, I know, this isn't always possible.  Sometimes those decisions are made above your pay grade.  But then again, if you use Delphi under the table to produce a solution twice as fast for half the cost, then maybe Delphi won't be under the table for long.  If one of your guys wants to try to build that new intranet application in Ruby On Rails, let him.  Why not? Who's going to know?  If it works and gets deployed early, it's likely that no one will care what tool or language was used to make it, and now you have a new skill in your quiver.
  • Be flexible.  Some programmers do their best work between 10:00pm and 04:00am.  Let them.  Some hate to wear ties, dress shirts, khakis, etc.  Don't make them.  Some are flat out nuts.  Let them be.  Nothing wrong with all of that as long as they produce good code, eh?

Okay, that's a pretty good list.  I've been on both sides of the fence, and as a consultant, I see all sorts of management types and methods.  I deal with programmers on a daily basis, and I are one myself, so I think I have a pretty good grip on what's going on from a lot of angles.  I'm sure you all will come up with more stuff and comment on it.  Please do.  After all, I'm not an expert on this stuff and I only write this to try to make you look good.  ;-)

Blast from the Past: The Gaping Hole of Delphi

By Nick at November 20, 2012 22:56
Filed Under: Delphi, TechBiz

Another Blast from the Past. This one is mostly overtaken by events.  The sale of CodeGear makes the whole thing moot.  But I thought you might enjoy a trip down memory lane.  Things certainly have changed for the better.  This was originally published on January 6, 2006


Every situation, properly perceived, becomes an opportunity. ~ Helen Schucman

Yesterday I went on a sales call with two of the Borland sales reps for the region. Before hand, we met at a Dunn Brothers coffee shop to get our ducks in a row, talk about the client, etc. The meeting went well – the Borland guys are very knowledgeable, professional, and clearly know what they are doing and what they are talking about. The client could probably benefit from Borland's tools and hopefully there will be a deal done. I learned a lot about sales from the meeting. (Sales is not my strong point.)

The interesting part of the whole day was the epiphany I had while meeting with the Borland guys at the coffee shop. Sales guys are into revenue generating. They need to maximize the revenue that they get per hour of effort spent in getting revenue. That's their job. That's what Borland wants them to do, they are rewarded financially based on that, so naturally, that is what they do. I don't blame them. Opportunity costs are very real, and they have to choose where to expend their efforts.

If opportunity doesn't knock, build a door. ~ Milton Berle

The big thing I learned from the sales guys is that Delphi isn't even on their radar. They aren't given a commission on Delphi sales. That's frustrating. But here's the thing: even if they were given a commission on Delphi sales, I doubt very much that they'd sell much of it at all. Remember opportunity costs? Opportunity costs drive the salesmen to concentrate on the Fortune 100 to the Fortune 500 crowd, and the sad fact that we Delphi developers need to accept is that the market for Delphi amongst these large companies is very small. Those companies have probably already chosen their tools – either Java or Microsoft or some other open source solution – and while a concerted effort to sell Delphi into that market might work, the opportunity costs are just too high to make the effort worth it for a Borland Sales Representative. Delphi's traction is slim in that arena, but the traction for StarTeam, CaliberRM, and Together is very high. (Remember, it's all about revenue per man hour. Dollars per man-hour selling Delphi is pretty low. Dollars per man-hour for CaliberRM, StarTeam, and Together is pretty high. So, as a result, the Borland sales force doesn't sell Delphi and they do sell the enterprise products. This should not be a surprise.)

Let your hook always be cast; in the pool where you least expect it, there will be a fish. ~ Ovid

When we were at our TeamB conference in November, Boz Elloy basically said the same thing. He told us that “Fortune 100/500 companies don't want Delphi. It's a waste of time for us to try to sell it to them”. (My fellow TeamB'er Dave Nottage blogged about that meeting as well. For the record, Boz explicitly gave us permission to publicly discuss the meeting.) Boz drew a diagram with three levels: the “channel”, SMB, and Fortune 500. He basically said that they only try to sell Borland Core into the Fortune 500. (This is why you won't see Delphi having anything to do with Core. Core is Borland's Java platform, based on Eclipse, with perhaps some .Net mixed in, but only in the form of plug-ins to Visual Studio.Net) For the Small/Medium Business market, they offer Borland Developer Studio and the ALM solution. And the “channel” is sites like Programmer's Paradise that simply sell Delphi for Borland. For Borland, Delphi only really exists in the bottom two arenas. It simply doesn't exist in the highest bracket – but not to a level that would make the effort selling there worth it. (So, if you are a Delphi guy, and you hear stuff about “Borland Core”, just ignore it. I has nothing to do with you. Even though every fiber in your body screams out “Why isn't there anything about Delphi on the 'Core' pages!?!”, resist said temptation and simply let it all roll off your back. Core just isn't your deal. Now, when you hear “ALM”, your ears should definitely perk up, but Core? It's nothing to us Delphi guys. Let it go.)

Now, as I said, all this is very frustrating to a Delphi user. But if you step back for a minute, it makes perfect sense. Sales guys need to generate revenue, and so they spend their time doing that. Double the sales force won't alter this equation. It's purely a strange outcome resulting from the structure of Borland's product line. We Delphi dudes can bitch about this (and Lord knows we will), but the key thing is to get past the bitching, accept reality, and try to figure out a way to deal with this unfortunate situation.

In the middle of difficulty lies opportunity. ~ Albert Einstein

Okay, so I'm past the denial and anger stages (and I encourage all of you to get over the hump into acceptance as well), and ready to move on to trying to figure out what can be done to promote and expand Delphi. Every cloud has a silver lining. For every window that is closed, a door opens somewhere. In the middle of difficulty lies opportunity. (Someone stop me before I break my cliché meter). I really believe that there are any number of effective ways to market and sell Delphi given all of the limitations that we've already talked about.

The first thing to do is to examine the lay of the land. The thing that jumps out at me is this gaping hole that exists in the market. Delphi is sold almost exclusively in the channel. The folks that buy from the channel are, to a large degree, the little guys like us. We buy one, two, five copies for our development shop. If a medium-sized company wants to buy Delphi, they have to go to the channel as well. Unless they run into a Borland Partner that sells product, they won't get any personalized service. Delphi isn't sold into the Fortune 500 companies. But between the real little guys and the real big guys, there is this gaping hole where Delphi is useful and where lots of opportunities lay, but no one appears to be interested in taking advantage of these opportunities. These medium sized companies are ripe for the picking. I presume that many of them have modest development organizations. I presume that many are still evaluating .Net technologies. Many of them are using Visual Basic 6 – a product that has basically been abandoned by Microsoft. They know they need to make a move to newer technologies, but they aren't sure about it all. They aren't pleased with Microsoft, and would be willing to hear about products from a tools vendor that is almost compulsive about backwards compatibility and ensuring that old code can be moved forward. They might be interested in hearing about a company that is continuing to focus on RAD development in the Win32 space.

In addition, I also look out, and I see products flourishing that don't have any corporate backing (Think Ruby, Python, or Perl). These products are known and used, despite not being hawked by professional salesmen. How do they do it? They use the Internet. They use word of mouth. They use “guerilla marketing” techniques that cost very little and can reap large rewards. I see no reason why Delphi can't benefit in the same way.

Opportunities multiply as they are seized. ~ Sun Tzu

Here's an idea. Offer a free copy of Delphi Personal to any Visual Basic developer that will go on his blog and post a picture of himself holding a sign that says “I'm a VB developer and I want to try Delphi,” or witty variations thereon. If there is no Delphi Personal, send them a trial disk and a t-shirt. Something. Have them email their links to Borland so they can be posted on a webpage at Get some buzz going on the VB community about Delphi – even if some of them get mad. Remind disgruntled VB developers that Borland has always and steadfastly promoted backwards compatibility and will never abandon them. The transition from VB 6 to Delphi isn't all that much harder than the transition from VB6 to VB.NET, so there has to be plenty of sales to be had in this arena. Give away a copy of Delphi Architect to the guy with the coolest, funniest, or most outrageous picture.

How about an affiliate program? If you click on the link in the upper right corner of this blog and buy a copy of FeedDemon, I get a kickback. Hence, I take every opportunity I can think of to mention the fact that if you click on this link and buy FeedDemon, I get a kickback. Good for me, good for FeedDemon. I'm also constantly hawking Amazon products as well. (Heck, I'd be a NetFlix affiliate, but they turned me down!) Now, wouldn't it be cool if we had a similar program for Delphi? Of course it would. You'd put a link on your blog, wouldn't you? Wouldn't you like to make a little cash selling the product that you love so much? Of course you would! Can you think of a reason why Borland shouldn't have such an affiliate program? I sure can't.

Finally, it would be great if, in addition to an affiliate program, it was fairly easy to become a value-added reseller (VAR) for Delphi. As a guy who's company tried to do this, I can tell you that it was really, really difficult to sell Borland products for Borland. We had to front the cash for all purchases, and deal with a maze of bureaucracy to get product delivered to customers. It sure would be nice if we simply had a vendor ID number that we could use to order product for our customers online. It sure would be nice if Borland recognized and knew the consultants that actively want to sell Borland products. It was way, way to hard for us to sell Borland products, and if it is one thing a company ought to do, is make it easy for your fanatical supporters to sell your products.

If a window of opportunity appears, don't pull down the shade. ~ Tom Peters

Delphi has a great opportunity to make a lot of traction in the current market. There is a big transition to .Net going on, and many, many organizations haven't yet made the move. Many, many organizations still want to do Win32 development, and Delphi is really the only path from Win32 to .Net, as well as the only RAD tool still actively supporting Win32. Opportunities are only valuable if they are seized, and as Sun Tzu noted, they multiply when they are seized.

The problem of course, is that Delphi is caught between two worlds. It's stuck somewhere in between the grassroots, individual developer market and the big money, big company enterprise market. Delphi's position inside Borland makes it a bit of a red-headed step child. I think the product needs more autonomy to thrive. (That's why the idea of Delphi being sold and becoming part of a separate company was pretty appealing to me.) Delphi's bright light all too often is left back in the garage, and it needs to be brought out and allowed to illuminate the marketplace. The mistake that Borland makes, I think, is in utterly ignoring this gaping hole. If you go to, the content will vary, but you'll almost always see information about Core and about items of interest to Enterprise-level decision makers. What you won't see is “Small/Medium Businesses Click Here” or something like that. There practically nothing there for them. If Delphi is going to be treated differently than the Core/Java offerings, then there at least ought to be a place on the Borland website where the people that Delphi/BDS/ALM is aimed towards can go and get information. Again, there's that gaping hole. The information may be there, but it isn't utterly obvious how to get to it.

Small opportunities are often the beginning of great enterprises. ~ Demosthenes

If there is one sure thing in the marketplace, it's that gaping holes will be filled with something by someone. Right now, it seems like that gaping hole left by Borland and Delphi is being filled by Visual Studio and Microsoft. Sure, Microsoft has a huge budget to market to these folks, but if ever in the history of free enterprise there was a time when you can go crazy and market a product with little or no cash, it's now. With the advent of the Internet and the shrinking world it creates, all bets are off. The opportunity is out there. What can Borland and the Delphi community do with it?

Using LeanPub’s Markdown

By Nick at November 18, 2012 05:53
Filed Under: Delphi, Software Development, TechBiz

I’ve been doing a lot of Markdown lately.  It’s a pretty interesting notion – it’s similar in concept to HTML (a mark”up” language), but Markdown is about 443 times simpler.  Jeff Atwood is a big fan (StackOverflow uses Markdown for formatting questions and answers…) and called out Markdown’s creator, John Gruber, to be a better “parent” to Markdown back in 2009.  Recently, he has called for a standardization of the language, asking Gruber to take the lead in doing so.

Apparently, however, John Gruber, creator of Markdown, wasn’t as, ahem, “supportive” as he could have been.  At first, Jeff didn’t at first get response, but apparently then he did.  But apparently Gruber wasn’t exactly into it, or even that respectful about Jeff’s reasonable request.  I guess he’ll “think about it”.  Gruber clearly is more from Philadelphia than most people from Philadelphia, I guess.  Jeff points out that Gruber created something pretty cool, but then hasn’t exactly been the most benevolent of fathers.  And he’s not asking for anything other than a blessing on what they are doing, really.  Gruber could clearly be a bit cooler about it than he is being.

Markdown is one of those things that can easily become bastardized.  It’s specific purpose is to be human-readable and human-writable.  However, the temptation is quite great to start adding to it, making it not both of those things.  Hence Atwood’s appeal.  I hope Jeff makes something happen in this area, with or without Gruber’s support.

Anyhoo.  I’ve been using Markdown because that is what LeanPub™ uses it to create books.  As I said above, one of the main ideas of Markdown is that it should be both easy to type and easy to read un-rendered.  But that doesn’t mean that we geeks don’t want a tool to create it.   Winking smile.  The most popular editor for Windows appears to be MarkdownPad, which is a nice tool.  There is an early version of a WYSIWYG editor for Markdown called Texts – it looks promising but has a ways to go.  Some folks appear to be using Emacs (yuck!) or other editors only available on the Mac. 

However, LeanPub™ appears to be doing what Atwood is worried about – extending it just a little bit beyond what the standard is.  That’s fine -- they’ve added Tables, and different code tags using Pygment – all of which are not supported by the “normal” editors.  For instance, I’m writing a technical book with lots of code samples, and tools like MarkdownPad can only be so helpful.  As  much as Markdown is meant to be human-writable, it’s a bother to add in manually the tags for Delphi code blocks, for instance.

So pursuant to that, and because I want to make writing my book as easy as possible, I’ve built a Markdown Editor -- I'm calling it LeanTed --  that is designed specifically for LeanPub™ authors.   It implements the LeanPub™ Markdown standard, supports code tagging, and other Markdown stuff that is used by LeanPub™.

It is written in Delphi XE3, as you would expect of me.  The main editor window is a TSynMemo, and it uses the Ribbon controls that ship with Delphi. 

You can get it here.  Please be warned – this is currently a very early version and not fully featured.  I’m using it myself to write my book, but I understand all the quirks.  I’ll be refining it as I use it more, of course. 

Features that I already have on the list to be added include:

  • Implementing LeanPub’s Table support  and CrossLinking -- (The current Table stuff doesn't do anything other than display what would be added....)
  • Associate it with *.md files
  • Notice when the file has changed elsewhere
  • Timed Autosave
  • Synchronize the text and preview modes (anyone have any idea how to control the scrolling on a TWebBrowser control....?)
  • A lot of little details that I’m keeping track of in my TODO list…
  • Anything anyone thinks of that would be a good feature.

I’m releasing it as Freeware, but please feel free to donate to me for the software.  $15 would be niceSmile

In any event, please let me know what you think in the comments, and please remember that this is totally alpha-level software and that you use it entirely at your own risk.  I will, of course, be updating and improving it, incorporating feedback and suggestions. 

On Why I Think Twitter is Awesome

By Nick at March 04, 2012 11:57
Filed Under: TechBiz, General, Tech Stuff, Software Development, Delphi

I have this friend who totally doesn’t get Twitter.  He doesn’t get it so much that it actually kind of makes him angry that anyone does get – and like – Twitter.  To him, it is a total waste of time in every way. He can’t imagine why anyone would spend any time at all having anything to do with Twitter.  And that’s fine – to each his own. But I do find it amusing that someone would feel that way about a service used and enjoyed by millions of people. 

I’m a Twitter lover.  I find it entertaining, amusing, interesting, and good for my brain.  I really enjoy reading it, and I really enjoy posting tweets.  I get good news, good development information, and a good laugh when I read twitter.  I get to express my self in short bursts that  help me formulate my thoughts.  What’s not to like?

The common impression is that Twitter is for “letting you know what your friends are doing” – or at least that is how it was originally marketed.  The common misconception is that Twitter is just a bunch of people posting “Now I’m eating lunch.  Yum!”, and perhaps it was that in the very beginning.  But in the spirit of “Let a thousand flowers bloom”, Twitter became a lot more than that.  Twitter is a forum for expressing not only what you are doing, but what you are thinking, what you are watching, what you are reading, and anything things that you are up to.  It is many things.  It is a means of conducting a conversation across the world.  It is a means of sharing information with like minded people .  It can help you track your customers are thinking.  It can be a source of entertainment.  It can ensure you are up to date on the latest news, and it can even help foment a real live revolutions.  Not bad for a site that posts things  140 characters at a time.

Short and Sweet

Here’s the main reason why I like Twitter:  It forces us to express ourselves in short, concise sentences.  140 characters isn’t a lot, but it’s not nothing.  It is sort of real-world application of Strunk & White’s exhortation of “Use fewer words”.   It’s really quite amazing the amount of humor, wisdom, and pith people can cram into that little chunk of text.  Anyone who cruises around the internets knows that, while it allows people to publish openly without the barrier of a publishing house, folks – this blog included – don’t get the benefit of an editor.  Twitter is the one place where you can know that if you read it, you’ll get things in short, concise, crisp chunks.  (And I should add that I pride myself on never using ‘4’ and ‘2’ and other similar shortcuts….)

I find that pleasing as a reader, and valuable as a writer. If I can express my thought in 140 characters, then I know that I’ve really distilled it to the essence of the thought.  For instance, it took a while for me to get Hodges Law down to 140 characters but I did.  (And I also now have the added advantage of it being in a single place that I refer to my awesome idea – as well as showing that I was the first to think of it.  Winking smile  )

The other big reason I like Twitter is that it is an “easy read”.  If I have a few minutes to kill, I can pull out my Kindle and flip through the latest on my Twitter feed. I’ve knocked out more than a few pages of Twitter feeds at the Doctor’s office.  It also is perfect for solving that First World Problem of being bored while, ahem, “indisposed”.

Third reason?  It’s a wealth of information about Delphi and software development.  Many great developers tweet, and point to articles and blog posts that teach and explain about development.  Want to know what the latest Delphi articles are?  Follow DelphiFeeds.   You can’t say it is impossible to know what is going on with Embarcadero – they have a Twitter feed that updates with just about everything going on with the company.  You can tailor your feed to bring you whatever you are interested in.  I’m interested in Software Development, the NBA, specifically the Timberwolves, certain American Idol contestants, and generally funny stuff.  That’s exactly what my feed brings me. 


Another feature that is both fun and powerful are hashtags.  As far as I know, the power and coolness of hashtags was actually an invention of the Twitter community and not an original part of the “spec” for Twitter.  According to this article – which is a great history and summary of hashtags -- the idea actually came from a guy named Chris Messina, and his idea has become part of the power of Twitter.  Hashtags are used to create groups or topics.  Sometimes they are fleeting – like a hashtag for the Superbowl – or sometimes they are ongoing, with people constantly adding to them, like the “#overheardathome” tag.  Want to see what others are saying while American Idol is on?  There’s a hashtag for that.  They have even made a difference in world events.  The valiant folks fighting for freedom in the Arab Spring used twitter hashtags to inform the world and each other about important, world-changing events.  Businesses are event starting to include hashtags in their advertisements (and of course, folks aren’t always respectful of those tags…..)  There’s even a website dedicated to tracking the use of hashtags.  From the humble beginnings of an idea from a single users, hashtags have made twitter into a useful and powerful communications medium.


It may have started out as a site to tell your friends that you are eating lunch, but Twitter has become a great place for some quick-witted comedy and entertainment.  Heck, I tweet a lot about technology and programming, but I try hard to make a witty, funny comment every once and a while.   Some people’s sense of humor is just made for Twitter.  One of my favorites is Josh Hara.  If you are looking for a series of laugh-out-loud funny, but off-color tweets, look no further than Pauly Peligroso.    There are tons of lists of (allegedly) funny people on Twitter.  I should add that in my experience, the people that are “supposed” to be funny – that is, comedians whose names you know – aren’t really that funny. But hands down, bar none, the funniest feed on Twitter is Sh*tmydadsays.   In any event, Twitter can definitely make you LOL.  (I only use “LOL” when I, well, actually do laugh out loud. You should follow the same rule.)

Parody and History Sites

Another feature that dovetails on the straight comedy sites are some of the excellent parody sites.  There’s a whole slew of Star Wars characters on TwitterLord Voldemort of Harry Potter fame is enormously popular, on topic, and very funny.  He and Severus Snape often exchange barbs.  (Actually, there are quite a few folks tweeting as Severus Snape on Twitter….)  You can keep track of Batman, Drunk Superman, Aquaman  (Warning: he’s a little….”salty”), Spiderman, Drunk Hulk, and just (presumably sober Hulk. (Apparently there are many facets to Hulk’s personality). Want some history? You can follow Henry VIII, Calvin Coolidge,   You can follow the history of the Byzantine Empire, the first 1000 days of the JFK administration, and real-time events of World War II.  And that is just scratching the surface.  Believe me.  There is no end to the inanity, craziness, and imaginativeness of the folks on Twitter. 

In The End

Yes, Twitter would be boring if it were nothing more than people telling you what they were doing.  It may have been that at one point, but it’s become way more than that.  Shoot, a recent cover of Sports Illustrated had a hashtag for the cover article about Jeremy Lin. In the end, Twitter can me what you want it to be.  You can follow technologists, pop stars, actors, authors, characters from books and movies, business, news sites, newspapers, bloggers, family members, humorists, athletes, historical characters, and more.  You can keep up with technology, world events, politics, all manner of news and events, what your favorite authors/actors/singers are up to.  It’s really a huge, fascinating party that you can control to your heart’s content. 

Why anyone wouldn’t be interested in that, I have no idea.

I don’t want to hear another frackin' negative word about Embarcadero Marketing.

By Nick at February 26, 2012 09:19
Filed Under: Delphi, TechBiz

Not one more word.

For many years, it has been very fashionable to say how “[Borland|CodeGear|Embarcadero] sucks at marketing”.  You could very easily establish your bona fides by bashing Delphi marketing.  Everyone knows that Borland always sucked at it, and all the cool kids say so, right?

Well, I think those days are over.

What is Marketing, Anyway?

First of all, I’m guessing that about 99% of the people saying this didn’t understand the difference between “marketing” and “advertising”.  They aren’t the same, just so you know.  They overlap, but they aren’t synonymous.  The Wikipedia page for marketing starts out with "Marketing is defined by the AMA as ‘the activity, set of institutions, and processes for creating, communicating, delivering, and exchanging offerings that have value for customers, clients, partners, and society at large.’"  My personal definition is “whatever you do to make people aware that your product is for sale and what the reasons are that they should buy it”. 

Sales and marketing are related, but very different.  In general, marketing’s job is to create leads for sales to act upon. 

I think that the root of much of the complaining over the years has been the result of a lack of advertising.  People who don’t see advertising think that there’s no marketing going on.  Marketing is much more than just running ads.  Marketing activities include, but are very much not limited to, advertising. In fact, some of the most effective marketing is that which requires zero advertising.

For instance, Dropbox has a brilliant marketing strategy that has been amazingly successful and requires exactly zero budget for marketing or advertising. What do they do? They get people like me to try to get people like you to sign up. The more people sign up, the more potential paying customers they have. They give away 2GB of space (which probably costs them something like $0.000001….) and then induce those folks to do their marketing for them. They have been enormously successful doing this. They spend zero money on advertising, but they have a fantastic marketing plan that makes millions of people aware of what they have to sell. Awesome.

Delphi Marketing in the Past

I’ll concede that the marketing of Delphi has been historically “limited” or “hard to find” . I’ll not concede that it has been “bad” or “terrible”. The marketing itself has been good – there just hasn’t been enough of it.  Marketing success is largely a function of budget, and over the years, and the budget for marketing Delphi has not always been huge. As noted above, there isn’t a direct relationship between marketing and money, but certainly money is a big boost.  Limited budgets have made it harder to market Delphi, but that doesn’t mean that the marketing that was done was done poorly.

Despite limited budgets, here has always been marketing going on around Delphi.  Every new release resulted in many activities, a “world tour”, webinars, etc.  And here’s a key point to remember:  if you are an existing customer, then marketing to you is fairly easy. You already know the products and benefits.   To a large degree, efforts spent on marketing that you see is wasted effort.  The perfect marketing plan would be visible only to non-customers and invisible to existing customers.  And here’s the second thing to remember -- if you know that Delphi is on version XE2, and even the basics of the current feature set, then you have been successfully marketed to, whether you want to admit it or not! That’s always been the case – if you knew about the latest release and it’s features, you were successfully marketed to. 

Delphi Marketing Today

However, over the last few years, things have been getting better.  And over the last year or so, things have gotten, well, really good.  In that time, I’ve seen a marked and obvious increase in marketing activity and an rise in the quality of things done for Delphi and Embarcadero products in general.  Clearly someone has decided to spend some money and make it a point of emphasis. 

I now see the following on a regular basis:

  • First, the overall outbound communication in general has steadily picked up.  I now see people who for years didn’t hear a peep from the Delphi marketing team now complaining that they are getting too many emails.  Some are even upset that their sales representative has called them.  Yeah, that’s terrible!  I myself had a very nice chat with our sales person last week --  they were pleasant, knowledgeable, and helpful.  We probably won’t be upgrading our licenses until next year, but they were happy to know that, and interested in hearing my feedback on a wide variety of things, including the product, the marketing efforts, and other things of concern.  I appreciate a vendor that takes the time to hear me out.
  • A steady stream of webinars on a wide range  of topics.  It seems that at least once a month, they are conducting a webinar of some sort, on topics ranging from Delphi to database design and enterprise architectures.  I get very professionally done emails, I sign up, they remind me about the event, and they follow up with emails after.  If I miss it, they send an email saying “Sorry we missed you, here’s the replay”.  As a result, you see their products in action, you learn the new features, and you are steadily reminded that the product is there.  Excellent work.
  • When they aren’t doing webinars, they are letting me know about White Papers that well known Delphi community members have written.  There a lot of them available, and a steady stream of new ones coming online.  Nice.
  • I haven’t seen them recently, but for the last few years, Embarcadero has had a full page advertisement in every issue of SDTimes.  I’ve also seen banner ads on the SDTimes website. 
  • And while on the subject of ads, I see Delphi banner ads all over the place.  They clearly have paid Google for the adwords, and since Google knows I’m a Delphi user, I see ads for Delphi and RAD Studio all over the web.  Nice.
  • They also appear to have bought keywords on StackOverflow.  Try this – log out of StackOverflow and go the Delphi tag page and see what you get on the right side.  (If you don’t any reputation at StackOverflow, you don’t have to log out – they stop showing ads after a certain reputation score).
  • For a long time, the Borland/CodeGear/Embarcadero website was….less than helpful.  However, now, it is really well done.  Checkout the Delphi page.  It’s visually appealing with a  good highlight of the product. Easy to find links take you to the Product Edition page, a page showing cool third-party stuff, and free resources out on the web, among other information  And of course the page has a clear “call to action”, either buy or download a trial.  This is a very nicely done web page.
  • And if the webinars were not enough, the Developer Relations team did an excellent (and well attended, I might add…) series of live seminars all over the world.  These were well advertised and well run.  They included user group events during week nights, and for the first time. some day long events on Saturday.  In talking with the DevRel folks, I know that these were particularly successful.  I had the honor of being the guest speaker at two of them, in Washington, DC and in Newark, NJ.  Over the last year, the team has also put on a CodeRage event, the 24 Hours of Delphi, and a Delphi Birthday Party.  The hits just keep on rolling.
  • The marketing department even has a blog – The Delphi Insider – run my by friend Tim Del Chiaro.  If you want to  know everything that is going on, that is a good place to start. And of course, there are a number of active (an inactive, sadly) blogs on the Embarcadero servers.

The folks marketing Delphi are doing some really good work, and we should appreciate and recognize it.  Embarcadero has clearly stepped up its game, and we should all give credit where credit is due.

My Amazon Kindle So Far

By Nick at February 11, 2012 21:59
Filed Under: General, Tech Stuff, TechBiz

A while back I wrote about why I got my Amazon Kindle Fire, and in that post I promised you that I’d write about my thoughts about owning the Kindle.  And since I’d rather rub shredded fiberglass in my eyes than break a promise to you fine people, here are my thoughts on owning an Amazon Kindle

  • First, I want to say that I also am an Amazon Prime customer, so what I talk about below may include benefits of being in Amazon Prime.  Those benefits are actually quite numerous considering the $79 annual price tag.  If you are at all involved with Amazon, I’d give the Prime membership a good look.   You can save a lot of postage – and a lot of time and gas – with Amazon Prime.  “Gas, you say? How?”  Well, I’m glad you asked.  Here’s an example:  I don’t drive to the Pet Store anymore, because I just have Amazon ship me – at no charge and with no sales tax – my dog food.  And cat food .  And that is just the beginning of what Prime offers.  I’ll leave it now to say that it’s a pathetically good deal if you have even the remotest notion of buying things from Amazon, and point out some more specific things as I go along.
  • The second point to make is that at $200, the Kindle Fire is pretty much a loss leader for Amazon.  I don’t know for sure what it costs to make the Kindle Fire, but I’m guessing that Amazon is selling them at a loss or very close to it.  And the reason is that the Fire is, in Amazon’s eyes, merely an Amazon content delivery device.  They want to get this device – a Kindle – into your hands. At $200, it’s an attractive tablet that runs Android apps, had a dual core processor, a color screen and has all the advantages of a Kindle.  Sure, any tablet can run Kindle software, but as a Kindle, I  can do things like borrow a free book a month from the Kindle Owners' Lending Library (another Prime perk….) as well as watch Amazon Video (another Prime benefit…) on the device.  I can store all my Kindle content (another Prime benefit….) with unlimited space on the cloud, including magazines, books, and music. 
  • The Kindle Fire is pretty impressive hardware. It is a dual core processor, and a very nice seven inch IPS screen. I haven’t really ever thought that it was slow because of processor power. It seems plenty powerful to me.
  • Things I like to do with a tablet (and that don’t really matter that it’s a Kindle Fire….)
    • Read Twitter.  I’ve taken twitter off my phone because now I can….
    • …actually read the web article on a link from Twitter instead of putting it in Instapaper because my phone makes it too hard to read the link. 
    • Watch movies and TV in bed with a nice, crisp seven inch screen. The Fire is really easy to hold however I like.
    • Play games. The screen is big enough to actually see the cool graphics on some cool games. I’ve taken all games off my phone, and the Fire has become a nice little tool for wasting some time.
  • Things I like to do with my Kindle fire (because it is a Kindle…)


  • Nice: One thing I like is the “Lock screen” feature which locks in screen orientation.  Sometimes you want to lie on your side and still read in portrait mode even though you are holding the device in landscape mode.  I like that. I suppose that  other tablets have that – I don’t know – but I do like it’s easy access.
  • Nice: Amazon's Android AppStore gives away a paid app every day.  Mostly it is cheesy games, but every once and a while you can get a nice paid app.  While not the Android Market, you can get many of the apps you want from the Amazon AppStore, including things like NetFlix, Pandora, Evernote, etc. 
  • No Google apps, though.  I guess I’m not 100% clear while Amazon blocks Google apps. I guess they view them as a competitor. I sure would like to be able to run Google Mail and Google Calendar on it. I also prefer Google Music, but Amazon’s music is workable. It is a bummer not to have the Google/Tablet connection.
  • To add insult to injury regarding the above note, there really isn’t even a decent third-party calendar app in Amazon’s store. Alas.
  • Bummer: The device has no camera, no microphone,  and no GPS.  This is okay, because the GPS on my phone works much better when I’m driving.  The camera on my phone is as good as any they’d put on the tablet.  I pretty much have my phone with me all the time, so those missing features in the Fire aren’t a problem. 
  • Bummer:  The Kindle Fire runs Android, but it is a very customized and restricted version of Android.  As a result, the device has no Google apps, including no access to the Google Market.    However, if you want, you can root it (though if you do, you lose the ability to watch free Amazon Prime videos).  You can then sideload the Google apps.   You can sideload apps without root access, but it is a bit of a crap shoot whether any given app will work.  (Here’s a good open letter to Jeff Bezos on this topic, the general sentiment of which I support.  I don’t’ regret my Kindle purchase, but it would be a really, really awesome tool if I had the Google stuff on it.)
  • A Bit Strange: There is only one physical button on the whole device:  the power switch on the bottom.  This means no volume rockers, which Android users are kind of used to, I guess.  It hasn’t bothered me too much, but I know that it is something that bothers other users.
  • Bummer:  Amazon advertises their custom Android Silk browser as “lightening fast”, but my experience has been, uhm, different.
  • Nice to Know: I have kept my device “Kindle-ized”, but if I wanted to, there are Android ROM’s available for the Kindle Fire if I wanted to move the device to be a “pure” tablet.  But again, I’d lose the advantages in Amazon Prime of the device being a Kindle.

Final verdict:  I’m happy with my Kindle Fire – I like using and having a tablet – but I’m going to save up an buy a “real” tablet in the fall.  I’m interested in the Google Nexus Tablet – or at least in concept.  I like having a Nexus phone, and I’d like to have the same thing in a tablet.

…Wherein I Rant Vigorously About Mobile Twitter Clients

By Nick at February 04, 2012 15:23
Filed Under: TechBiz, Tech Stuff, General, Delphi

I am now going to go on a rant about Twitter clients – mobile Twitter clients in particular (though some desktop clients are rant-worthy as well).  I am going to do this because I can’t understand why they are such a pain in the ass and work so badly, when they could so easily work so well.

Okay, first, don’t get me wrong.  I really like Twitter.  (If you want, you can follow me, I’m @nickhodges --  no surprise in that handle, eh?)  I like it because it’s a great place to keep up on news, find interesting articles, read funny stuff, and to post your thoughts in short, pithy statements of 140 characters or less.  It’s also a great time killer.  If you are waiting at the doctors office, it’s a much better way to pass the wait than looking at a two and a half year old copy of People Magazine.  It’s interesting, fun, never the same thing twice, and frankly, I’m a little addicted.  I do almost all of my twitter reading on my phone or on my wonderful Amazon Kindle

But yet reading Twitter on my mobile devices drives. me. crazy.  When it comes to mobile Twitter clients, I’m not addicted -- I’m inflamed with a rage that burns like the heat of a thousand suns.

I’ve tried just about every one out there. They all drive me insane.  And so here is  my rant:

  • A twitter client should never, ever, ever, under any circumstances, for any reason, at any time, ever, ever, EVER move my “cursor”.  EVER. And by “cursor” I mean my location in my Twitter stream.  I determine where my cursor goes, not you, you blasted twitter client that thinks you can just show me whatever you want when you want to.  If I am reading Twitter on my phone, leave off on a funny Pauly Peligroso post, go away to another app, and then I come back, you darn well better have my twitter client looking right at that same stinking Pauly Peligroso post when I come back.  I don’t care if I’ve been gone for five minutes, five hours or five years, you flipping better have your cursor right there where I Ieft it. Not anywhere else.  Where. I. left. it.  Leave a gap if you have to. I don’t care, just leave it. Don’t try to do me a favor and “catch me up”.  If I need catching up, I’ll get myself caught up. Give me an option to get caught up, fine.  But for the love of Adam Sandler, DON’T MOVE MY POSITION IN MY TWITTER STREAM.   Ever,  ever, ever, never, ever, ever. 
  • Second, if you tell me that there are “143 new tweets”, and I say “Great, some new tweets”, put me at the freaking START of the 143 new tweets, not at the current time!!!!   Why in the name of sweet baby Dick Van Dyke would I ever, ever, ever what to start at the most recent tweet out of those 143 new tweets? Why would you tell me that there are 143 new tweets and then start me out at the point where there are zero new tweets? Why do I open up the fracking client and see some tweet from three seconds ago, when I want to read the 143 new tweets?  Why do I have to manually scroll down and try to figure out where the new tweets start?  What is that, some kind of sick, twisted joke?  Really?  I have to scroll?  Seriously?   I mean this is basically a variation of the “Never move my cursor spot”, but come on, this is ridiculous.
  • Third – stop trying to shorten my shortened URL’s.  I’m smart – I can shorten my URL’s myself.  It’s nice you want to do that for me, but at least let me opt out of it.  Nothing says “wasted time and resources” as a link that is a Twitter shortened version of a link that started out as a link.  I mean, come on, I can keep my twitter posts under 140 characters myself.  I don’t want your help.  I don’t need your help.  Stop it.

Bottom line: Mobile twitter clients stink and they make me want to bash public monuments with a sledgehammer. (I’d never do that, really, but I want to when I go back from checking my mail and the stupid TweetCaster moves me to  a tweet that was posted 23 seconds ago.)

Phew, okay, I feel better now.

Why I Prefer Android to iOS

By Nick at January 16, 2012 10:54
Filed Under: TechBiz, Tech Stuff, General

I have an Android phone – a Samsung Nexus S 4G which I love. It’s a "pure Google” phone in that it’s sponsored by Google and doesn’t have any of the vendor specific stuff on it that some of the carriers like to include.  And as you know, I just bought an Amazon Kindle which has a version of Android on it.  I’m still saving up for a full-fledged, 10 inch Android tablet.  I really like Android. 

And I have no interest at all in the iPhone, the iPad, and their accompanying operating system, iOS.

So I thought I’d explain why.  There are a number of reasons why I like Android and generally avoid Apple.  Here they are:

First, I really like that Android has the notion of a desktop similar to Windows.  On it you can place all kinds of things called “widgets’ – clocks, weather updates, twitter feeds, Facebook timelines, and shortcuts.   They are all available instantly on the pages of your desktop.  You can put almost anything you want on your multiple pages of the desktop.  I have one touch access to turning on and off things like WiFi and sound.  I can turn on the “Flashlight” (the camera flash) with a single touch of my desktop.  I can read news headlines just by swiping to my “news page”.  That’s a lot of power without having to hunt for and find a specific app.  The desktop on iOS (if you can call it that) is nothing but a listing of the applications on the device.  That’s fine as far as it goes, but the Android desktop provides a lot of very valuable and cool functionality.  I find that very useful.

Not only does Android provide the notion of a desktop with Widgets, it allows you to configure almost any aspect of the system.  You can choose from any number of configurable, intelligent keyboards that make typing easier.  You can pick from an array of desktop launchers that work in ways you might prefer.  You can choose launchers for efficiency, for visual appeal, or for configurability.  Or for all three.     You can even customize the lock screen if you want.  Again, this is really cool and I prefer it over the limited system that iOS provides. In the end, you have complete control over the appearance and functionality of your device – something I really value.

And the reason that Android provides so much flexibility and power to the user is that the OS is open source.  Developers can see how the OS works and build apps, launchers, and widgets accordingly.  And of course, they can even modify the operating system itself.  In addition to the Android Open Source Project, there are a number of alternative operating systems.  The most popular are CyanogenMod and MiUi.  Some handset vendors lock down their bootloaders, but most are wising up and allowing users to easy root their phones and modify them in ways of their choosing.  The stock systems customers buy are plenty powerful, but if one is so inclined, one can completely control what runs on the phone.  Sure you can jailbreak your iOS devices, but you are still stuck with the single, closed operating system.  Android users have no such restrictions.

Since the system is open, there are multiple ways to get applications.  Android users can get apps from the Google Android Market, from the Amazon AppStore, and other places like AppBrain, and they are perfectly free to “sideload” applications from any source if they so choose.  There is no single, controlled point of entry for applications.  That’s cool. And hey, maybe you don’t like Flash, but at least you can run it on an Android device if you want to. And oh yeah, you don’t have to pay for the privilege of distributing your apps, nor do you have to get “approval” from the AppStore gods.

And of course, Android customers have a wide choice of hardware as well as software.  The iPhone and the iPad hardware is cool, and yeah, you can have any choice of hardware you like -- as long as it is the hardware Apple provides.  Android phones and tablets come in many sizes, colors, and flavors.  Most come with removable and configurable storage. They come from different vendors and carriers. (iPhone initially launched with one (1!) choice of carriers, slowly moved to two, and now begrudgingly added a third.) They progress and advance more quickly.  Each vendor competes to out do the other in providing features and power.  You can already buy quad-core Android tablets.  

Now let me be clear:  If you like Apple, love Apple, or even are an “Apple Fanboi”, that’s fine with me.  Knock yourself out.  You won’t get any argument from me.  We all have our preferences, and if you prefer Apple over PC’s and Android, that’s great.  I’m not going to get into a flame war over “My OS is better than your OS”.  I’ve been there, done that, and frankly, I’ve grown out of it.  I happily admit that I was an immature fool to engage in those kinds of discussions.  You like Apple?  Awesome.  I don’t myself, but live and let live, eh?    I know it is too much to hope that the comments won’t prove to be contentious, but I myself am not going to get into a debate.  I’m just expressing my opinions here, and am 100% fine if you disagree 100% with me.

And easily one of the coolest things about Android is the whole Google eco-sphere and cloud.  Android is completely integrated with all the Google apps that we know and love:  Gmail, Maps, Docs, Reader, Tasks,  Google+, Google Music, everything.  A single sign-on brings it all together on your phone, on your tablet, and on your desktop computer.  There basically isn’t a Google App that isn’t completely integrated with Android.  And because the Google cloud is completely open, third-parties can easily integrate into it and use its functionality to enhance what Google provides. For instance, gReader is a third-party app that leverages Google Reader to provide a better RSS experience on Android.  Integrating with what Google provides is easily one of the most powerful and valuable features of Android.  Okay, call me a Google FanBoi, but there is a lot of cool power there that I really like and  use.

But at a more basic level, one of the more fundamental reasons I prefer Android is that, well, it’s not made by Apple.  I do not – and never really have – liked the way Apple does things.  I don’t like how they strictly and ruthlessly control their eco-systemsI don’t like the way that they treat developers.  I don’t like how they use lawsuits to try to stifle competition  (I thought the “look and feel” wars were over, but I guess not).  I’m perfectly happy to admit that Apple makes wonderful hardware and has blazed some important trails in many ways.  That’s all well and good – I just prefer not to do business with them.  Moreover – and I agree that this is harder to qualify --  I’ve never really like the “hipster, holier than thou” attitude that seems to emanate from the Apple community.  I know it’s totally my problem, but as far as I’m concerned,  the smuggest place on the planet is the center of an Apple store. And I don’t do smug.  I literally shake my head and snigger constantly when I take my daughter there (She has a Mac – despite my best efforts to persuade her otherwise...).   I know that’s not really rational, but that’s just how I feel.

So in summary, I like Android because it really doesn’t lock you in to anything.  It doesn’t lock you into hardware, application sources, carriers, or operating systems.  Just as DOS/Windows was more open flexible, and easy to develop for back in the early days of personal computing, so is Android currently the open, flexible, easy to develop for platform on portable devices.  I totally get that openness has it’s price – but I preferred the openness then, and I still prefer it today.

Why I Bought a Kindle Fire

By Nick at January 14, 2012 09:47
Filed Under: TechBiz, Tech Stuff, General, Personal

Last week I became the proud owner of a Kindle Fire.  I know that in my last post I spoke a few unkind words about Kindles, and so I wanted to write about why I decided to get a Kindle after all.

Here at our house, we are in Debt Assassin mode, so I have very little leeway for discretionary purchases like a tablet.  I get a monthly allowance to spend on anything I want, so if I want a new tablet, I have to save up.   I decided that I wanted a tablet earlier in the year, and I originally set my eyes on a Samsung Galaxy Tab 10.1 which at the time was the Android tablet to get.  (I have a blog post coming up about why I prefer Android over iOS…)  It is still a very nice dual-core tablet, but as things go in the tech business – and since it took me a while to save up my pennies – technology marches ever forward and I soon switched to wanting the more powerful and more feature-rich ASUS Transformer Prime

The Transformer Prime is a really, really sweet tablet.  It’s a quad-core machine using the Tegra-3 chip, with an amazing 1280x800, ten finger multi-touch screen.  It  has a flexible, add-on keyboard that effectively turns it into a notebook computer.  It even had a fifth core which would do minor tasks like check email and other background tasks while the screen is asleep.  It was priced right at that sweet spot of $499.  Interest was very, very high in this device, and all the Android blogs and news sites were abuzz with anticipation. 

It was supposed to be available just before Christmas, but pre-ordering the device was troublesome.  Amazon, which has a very good policy of not taking pre-orders unless it is sure it can deliver them, stop taking pre-orders in late November.  Delivery dates for other vendors were unclear.  When Amazon did start taking orders again before Christmas, they listed fulfillment as 5-7 weeks out.  Clearly ASUS had that good problem you don’t want to have – demand far outstripping their ability to deliver on that demand.  As a result, I held off on placing my order. 

But then a few hiccups began to occur.  I suspect that because it was the first tablet to use the Tegra-3 Quad-core chip, they had some problems with the product.  While initial quick-looks were very encouraging, reports started to surface of problems with wireless receptivity and the GPS.  Apparently the actual physical design of the case was causing reception problems.  These reports didn’t seem to dim interest in the device, however, as it’s still hard to get a hold of one, and as of this writing, Amazon itself isn’t taking orders, instead is is fulfilling the order via a reseller – who currently is jacking up the prices to over $600.  FInally, though it was short lived and ASUS pretty quickly backed down, word came out that ASUS had locked the bootloader for the Transformer Prime. 

Okay, so given all that, I decided to hold off and see what would happen.  ASUS was actually pretty good about acknowledging and fixing the problems, but I decided to defer my gratification (I was pretty jacked up for getting a tablet, and it was hard to wait…..) and let things shake out.  But then again, I wanted a tablet now.  And of course, as I’m holding off, Google announces their “Google Tablet” and that catches my eye, because I have a Nexus S phone and I’m a big fan of the whole “pure Google” concept. However, that isn’t coming out until the fall.   What to do?

Well, I took the advice of one of my co-workers and decided to get the Kindle.  His advice was this:  Tablets actually can have an impact on your life – you don’t know how it will fit or what role it will play. $500 is a lot to spend to find out, so get the Kindle at $200, find out how tablets work for you, and then save up for the Google tablet or whatever tablet is the “must have” tablet to get when I’m ready to buy.  Plus, the Kindle will likely hold it’s value, and I’ll be able to easily sell it when I decide to make the move.  In a sense, the Kindle is a “Starter Tablet” for me, and a pretty inexpensive one at that. 

And so far, I really like my decision.  I still have a pretty good chunk of change in my “saved up allowance” envelope (no sense putting it in the bank with interest rates hovering a hairs-breath of 0.00%….), and I can save for my next tablet.  I’m finding that I like the Kindle a lot (I’ll write about that in a future blog post) and the notion of “finding out how I work with a tablet” is definitely playing out.  I can now keep an eye on the market, and make a good decision on a good, quad-core tablet when the time comes.   Overall, it was outstanding advice, and I’m really happy with how things are working out.

The Bookstore of the Future

By Nick at January 08, 2012 15:17
Filed Under: Delphi, General, Tech Stuff, TechBiz

Bookstores are Cool

I love bookstores.  A lot of people love bookstores.  I love hanging around in a bookstore and seeing what is new, what is popular, and what is available.  I love seeing the cool games and other non-book stuff they have.   I love how most bookstores now have wireless, a café, and plenty of large cozy chairs to sit in if you want a closer look at a book. Bookstores are very cool, and I like having a good one nearby.

There are more than just superficial reasons to like bookstores.  First, they provide instant gratification.  If you want a book, you can get it immediately.  You can hold it in your hand and walk out of the store with it.  Another nice feature is the ability to browse – you can wander around, look around, and perhaps find a title that you didn’t know you wanted.  In addition, the ambience of a good bookstore is appealing and valuable as well.   The addition of café’s, music, and other products have also made bookstores much more appealing.  Clearly there is demand in the marketplace for bookstores, since whenever I go to one, there are always people there. 

Bookstores are in Trouble

But bookstores clearly are struggling.  Big player Borders recently went out of business (Anyone else notice where goes?)  Many smaller, independent vendors have been driven out of the market as well , though some of superior quality to survive (For instance, my sister loves Wild Rumpus, near her home, and they seem to be doing very well).  Online retailing has affected brick and mortar sales.  In addition, used book stores seem to have grown as well, putting market pressure on retailers of new books.  The Books-4-Less store near my house is a pretty good source of reasonably priced books, and they have a very nice selection.  They also accept “trade ins” for store credit, so you can clean out your basement and get a few new books at the same time. 

But people shopping online in the comfort of their own homes at sites like Amazon can get a much wider selection, recommendations, reviews, and all kinds of information available.  Online retailers can offer reviews, an almost infinite range of other books to “browse”, recommendations, and more.    If you know what book you want to get and aren’t feeling an urgent need to have it at this exact moment, dialing it up on Amazon’s site and ordering it with (often free) super-saver shipping can be a great time saver.  Plus, there’s non tax, and you save the gas and time of a trip.  I don’t have specific numbers, but I’m guessing that the ease of buying books online has hurt bookstore sales more than anything else.  For instance, books are always a popular gift, and the convenience of Amazon’s gift giving capabilities make giving a book as a gift vastly more convenient.  Amazon gets the book, wraps it in gift paper, and takes it to the post office for you.  Very convenient.  I’m guessing that I’m not telling you people something that you haven’t already figured out yourselves -- you are taking advantage of them in increasing numbers.

And if that isnt’ bad enough, adding to the online competition for bookstores are devices like the Amazon Kindle and other similar electronic reading devices.  Sales of Kindles and Nooks continue at a brisk pace, and every one of those represents countless book purchases that won’t be made in a bookstore.  Digital books don’t need a bookstore at all (Can you even have a bookstore of digital books?)  I know people that have Kindles who have bought many books, but haven’t held a new book in their hand in a long time – a fact good for Amazon, but not good for the brick-and-mortar retailers.  Why  even go to a bookstore?  Your friend at the local Starbucks can recommend a book and you can be reading it in just a couple of minutes – not something the owners of Borders were happy to realize. 

The Kindle is cool, but there are a few things I don’t like about it.  The top one is there isn’t any easy way to “peek ahead”.  Surely you do this – you are lying in bed reading, and you start feeling tired.  Do you just quit now, or is there a natural breaking point coming soon – a chapter ending, a sub-chapter break?  You can’t do that easily with a Kindle.  Second, (and this is why Amazon is so up on it), you pretty much have to pay for everything you want to read.  You can’t easily loan books to friends (the time limit is no fun – what to do if you have two chapters left when the time runs out?) Borrowing books from the Library has the same problem.  Amazon Prime does offer a lending service, but again, you pay for it. (See why Amazon likes the Kindle? Winking smile)  There’s a lot to like about Kindle’s, but there are a few things not to like as well.

The Current Model Costs A Lot

One of the largest struggles of the average bookstore – and the broader book industry – is costs.  The current business model is staggeringly inefficient.  Huge boxes of books – most often more books than will ever sell – are printed at a central location, loaded onto trucks and shipped to bookstores all around the country.  Those boxes are opened, and books put out on the shelves.  The rest are stored somewhere at the bookstore “in the back”.  After a while, a certain percentage – hopefully a high one, but not always – of the books are sold.  The rest are put into the “bargain bin” and sold at a discount.  Eventually, the remainders end up at those sad little bookstores at the mall or destroyed.  The costs of transporting books – they are heavy, as anyone who has moved house knows – is high.  The waste of printing books no one wants is high.  Trying to figure out the right number of books to go to the thousands of different locations – some books may be more popular in Topeka, KS than in New York City – is pretty difficult to predict.  It’s the common problem of centralize planning – who can know?

The bottom line is that the costs involved with the current bookselling/bookstore business model are simply too high.  It’s no wonder Borders went out of business – they were a day late and a dollar short with their eReader – and it’s a wonder that Barnes & Noble have kept their stores, too.

Emerging Technology

Despite the aggressive onslaught of online retailing and eReaders and very high costs, I still think there is a future – a pretty cool future -- for brick-and-mortar bookstores. However, they are going to  have to change a bit, and adapt to some new and emerging technologies.

That key emerging technology bookstores need to learn to leverage is on-demand printing.  On-demand printing is a relatively new technology, but one that can be a positive and powerful inflection point for bookstores.  On-demand printing is the ability to print a book – cover, contents, everything (even hardcovers) – immediately and on demand.  Think of it as a copy machine for books.  I’m not intimately familiar with the current technology, but I understand that it is getting to the point where a book from an on-demand printer is virtually indistinguishable from a “real” book.  Services like and other retailers enable authors to publish any content completely unencumbered by the established publishing houses.  Because books are printed as ordered, they don’t care about volume. 

In addition, the margins on book sales are much better, and so authors can make more money – much more money – on each book sale.  Delphi authors like Marco Cantu and Bob Swart have leveraged these services to bring you high-quality content while making more money in the process.  Sweet for everyone.  On demand printing is clearly an technology that will require some adjustments to business plans throughout the bookselling business.

The Bookstore of the Future

In the future, I envision a bookstore working very similarly on the surface, but very differently behind the scenes.  Bookstores will become a retail outlet for on-demand printing. On the outside and to the casual observer, bookstores will appear to be much the same – books on shelves, cafés, calendars, music, videos, etc.  But a closer look will reveal some differences brought about by on demand printing. 

First, a bookstore will have the ability to print immediately any book.   The shelves will be full of books as now, but a customer will also be able to ask for, and get, any book in the publishing system.  This feature will help bookstores match the online retailers by allowing a book buyer to get almost anything they want.  The ability to print any book immediately will be a big feature that will enhance a bookstore’s market appeal. 

And not only will a customer be able to get any book they want, the bookstore could offer any number of customizations to a book.  Kids could get copies of the Twilight series with a selection of different covers of their favorite characters.  Readers could choose font type and size, and perhaps even different colors of paper.  Each feature could cost extra, increasing margins.  I can foresee computer kiosks at the store allowing users to pick features a la carte.   Heck, I can even foresee bookstore branded kiosks at grocery stores much like RedBox.

The second subtle change that will take place is that the books available on the shelves will consist of fewer duplicates.  Since the books are printed onsite, they don’t need to stock up on multiple copies, leaving room on the shelves for a wider variety.  This will improve the browsing experience.  And of course the store can keep the shelves fully stocked.  The point of sale system would record each sale, and a book is sold, a replacement can be immediately and automatically printed. Efficient printing and stocking would mean that the shelves would be full, and a wider variety of books would be available on the shelves almost constantly. 

And of course, the printing of books right in the store means no more distribution costs – no more centralized printing with the subsequent distribution inefficiencies. New books will be distributed electronically of course.  Book stores will still need paper, glue, ink, toner, etc., but t’s much easier and less costly to distribute supplies than it is boxes of specific books.  And the waste of printing books that never get sold will be reduced because inventory will be wider and flatter with little over-stocking.

How it Will Happen

The transition to this new model will be interesting.  I don’t think that you’ll see it come from existing chains like Barnes & Noble.  Generally, a radical, disruptive change like this needs a fresh, upstart business to challenge the existing firms.  I also suspect that existing chains are too tightly tied to the existing publishing houses to allow them to be this flexible.  And I’m pretty sure that the existing publishing houses will not embrace this new model. The music industry has been glacial in accepting and understanding the changes brought by digital music, and I suspect that the book publishing industry will have a similar reaction. 

However, I think it will eventually happen.  The current bookstore model is clearly in trouble – even Barnes & Noble is having trouble in the marketplace despite the lost of major competitor Borders.  But in the end, the demand for the things that bookstores offer is strong.  The industry will be fine once they figure out how to leverage the advantages that on-demand printing offers.

One Right Thing at a Time

By Nick at November 24, 2011 13:44
Filed Under: Delphi, General, Software Development, TechBiz

Wherein I discuss how to do things that you should be doing and how not to do things that you shouldn’t be doing….

Sometimes you tweet something and it makes sense to you, but then you realize that it also kind of begs for more discussion. 

For instance: “Things move so quickly that doing the *one* most important thing means it's less likely that you'll do the wrong things in the long run.” 

I thought that a little more explanation would be in order.  Let’s say you have ten cool features on your “Things Customers are Screaming For” list.  There are two basic approaches you can take to getting them done: You can do them in series or in parallel.  If you do them in parallel, you’ll get them all done sooner, but you may not get them done as thoroughly.  If you do them in series, it will take you longer to do them all, but you’ll likely get each one done more thoroughly.

However, doing them in series – that is, sequentially doing only the most important remaining item – has an added benefit:  It can help you not do things that you shouldn’t do.  You may have ten things on your “We need to get these done right away”, but as time passes, some of those things may prove to be not needed, overtaken by events, or just plain dumb ideas.  Doing things in parallel may mean that you get everything done sooner, but it also means that you might do something that proves to be a waste of time later on.

For example, if you have a team of five folks, and you have five ideas that take six man months each, you might give each person one idea to work on, and then six months later, you have all five ideas done. Great!  But uh oh! -- as it turns out, over the course of those six months, things changed and events transpired in such a way that two of the ideas weren’t really good ideas after all, and at the end of the six months you regret ever starting on them.  So in the end, you have three things done that needed doing, but have wasted your time on two ideas that you should have left undone.  Furthermore, since you only had one person working on each idea, you may not get a fully fleshed out solution, but instead, one that may have missing features or is not complete in some way.

But consider what happens if you work on them in series: say that instead of starting in all at once on the entire list,  you pick the single most important of the ideas on the list.  You focus your whole team on doing that one idea.  You will likely be able to get it done somewhat sooner, say in one or two months instead of the six months in our example. (Five team members working on a six man-month project will likely take a bit longer because of transaction costs.)  In addition, you will get a “five-headed” solution instead of a “one-headed” one, and thus the solution would likely be more complete, fleshed out, and feature rich.  In other words, you might very well end up doing one thing properly and thoroughly instead of doing five things not so completely. 

The added benefit comes when, after doing the most important project, you realize that one of the ideas you had originally thought was awesome isn’t really that awesome, and that you can take it off the list and not waste time on it. You might add another item to the list, or another item that was on the list suddenly becomes vastly more important than it was at the start of the first project.  Instead, you can repeat the process and start working on the next most important thing.  You end up with a very nice implementation of each project you do undertake, and you don’t do the projects that shouldn’t be done.

In a rapidly changing technical environment, that which looks like a no brainer in January might be old news by July.  Obviously you want to avoid working on that project.  A practical example might be that you are a software tools vendor, and people are pressing you to do, say, a development tool for Windows Mobile 6.  You could choose to add staff and get that request done sooner, or you could stay the course and do more important things, only to discover with massive relief that you didn’t do Windows Mobile 6 at all when Windows Mobile 6 becomes a legacy technology.  (Sound familiar? Smile

Now, I’ll grant that if you follow this plan, you’ll end up with fewer features in the long run.   But you’ll also end up with more complete features with less wasted effort.  You won’t have spent time on things you ultimately should not have.  It might take a little longer to get any particular feature to market, but in the above example, you’ll end up with three really solid features and no time spent working on things that you should not have worked on at all instead of five half-baked features, two of which were a waste of time.

Repeat this process enough, and it becomes much more likely that you will end up with a product that has the right – and fully rendered -- feature set.  In many ways, inefficiencies are the result of choosing to do the wrong thing.  If you keep your choices finely grained – that is, always put your efforts only into the things that are obviously the very most important thing to do do right now – you will end up doing the right thing every time, even if there is slightly less of it. 

It’s often been said that knowing what you should do is easy; it’s knowing what you shouldn’t do that’s hard.  If you repeatedly focus on and complete the one single thing you absolutely should do and do it well, it will be more readily clear what those things are you should not do. So, I guess ultimately, you have to choose: More features done less thoroughly with time spent on things that turn out to be a waste, or fewer, more complete features with fewer projects that you shouldn’t have done.

Revenue Recognition and the Software Development Industry

By Nick at September 28, 2011 15:10
Filed Under: Delphi, General, Software Development, TechBiz

Before I start, I want to stress that I am not a lawyer.  I am not an accountant.  You’d be a total fool to base any business or legal decisions on anything I write here.  Consult a an attorney or a fully accredited CPA or some other person who truly knows what he’s talking about before deciding how to make any decisions whatsoever about anything having to do with money, the law, revenue, etc.  I don’t know anything, and if you listen to me, you are making a big mistake. 


Developers and other people involved in the software business have heard a lot about “Sarbannes-Oxley” (SOX) and “revenue recognition” and how it effects what Embarcadero can and cannot do with respect to updates, upsells, promotions, and all kinds of issues surrounding selling and releasing Delphi.  SOX was a significant, game-changing piece of legislation here in the US, and it affects virtually every public company in the country.  It also affects private companies that might someday want to be a public company.  It affects software companies in particular, because software is not a physical good in reality, but “acts” like one in the marketplace. 

When I was at Borland/CodeGear/Embarcadero, it took me a while to come to grips with what SOX meant and how it altered our business and what we wanted to do.  Frankly, I found it all very frustrating.  On the face of it, the rules and limitations seemed ridiculous. At first I complained bitterly about it.  It took a while, but finally I came to accept them and realize that SOX and the ensuing rules were the “field we had to play on”.  Finally, I think I actually gained enough insight into it that I was able to come to grips with the new rules and understand why things work the way they do.  As a result, I thought I’d share a bit of that with you fine people.

What is Revenue Recognition?

First, it might be obvious, but let’s be sure we know what the term “revenue recognition” means.  Revenue recognition is the process by which a business says “Yep, we actually earned that revenue”.  Note, it most decidedly does not mean “We got the cash”.  In an accrual accounting system – common to businesses of almost any size – the receipt of cash can actually go down as a liability. Think of taking an advanced payment for services: If you take half the money up front for a job, you have it in the bank, but you still owe the services. Revenue can’t be “recognized” until you do in fact deliver that good or service for the money you’ve received.  So if you are a software company, you can recognize revenue only when the software you sell is actually delivered. But software is a strange product in this regard, as we’ll see. As a result, The rules for  revenue recognition for software are somewhat cloudy and definitely untested in a court of law.

Why it Became an Issue

When it comes to software, one of the main roots of the revenue recognition rules stem from the (previously) common practice of "pumping the channel".  Near the end of the quarter, firms would "sell" lots of stuff to their channel partners.  For example, lets say that there was a software company called TrollWare.  Selling for a given business quarter started looking a little thin, so TrollWare would "sell" $1,000,000 of product to their favorite online/catalog retailer.  (And remember, this was actual, physical boxes back in the day.)  Then, they'd claim $1,000,000 of revenue on their books.  Wall Street, creditors, and anyone else interested in a company's revenue would think "Hmmm -- that's $1,000,000 in revenue more than we thought!  Buy TrollWare stock!” Obviously, this wasn’t a real sale, and could actually end up being a net cost because of the need to actually ship (and maybe even actually destroy) physical boxes of software.  This was a common practice throughout the industry, and many companies that we have all heard of did this.

Of course, most often, TrollWare would only really sell, say, $100,000 of all of that "shipped" software by the end of the month and have to buy back $900,000 of it at some point, but hey, revenue is revenue!  Clearly this is not a practice laced with clarity, openness, and integrity with respect to people looking at the viability of Trollware.

New, Tougher Rules

This kind of thing was one of many reasons that prompted passing of SOX.  The results of SOX are varied, but the results of interest to us software developers were new Generally Accepted Accounting Principles (GAAP) rules for software companies that defined revenue as truly delivering something to the customer.  Now, for a hot dog company, it's pretty clear when a box of hot dogs has been fully manufactured and when that box has left the warehouse on the way to a consumer or a business, or whomever is the "end user" of those hot dogs.  For example, if you are a rake manufacturer and sell rakes to Home Depot, you can claim the revenue when the delivery truck leaves your loading dock heading to that big orange building.  Retailers of rakes like Home Depot can claim the revenue when the rake is scanned across the Point of Sale on its way to clear someone’s lawn.  In the first case, Home Depot is the "end user" and in the second case, the guy with the leaves on his lawn is.

But then the question becomes:  What does it mean to "deliver a completed software product to the end user"?  Well, that's tricky.  There are two things here, of course.  First, when is the product really “completely produced and manufactured”.  Is a beta good enough?  What if a promised feature isn’t quite finished? How about a feature that was promised but isn’t there at all? Second --  assuming that you can define the first item -- when is that completed software product actually delivered? Who *really* is the end user?  As it turns out, it’s not quite analogous to the rake manufacturer/Home Depot relationship described above.  Because software companies were actually fairly guilty of the dubious “channel pumping” practices described above, the rules about what constitutes “final delivery” of software are fairly restrictive, and certainly different than those dictating gardening tools.

There is a lot of accounting literature about this (I’m not thrilled about the fact that I've read a lot of it.  It’s not exactly scintillating).  For instance, do a Google search on “revenue recognition software licenses”  and start reading.   The rules are pretty complicated and hard to qualify exactly. And further complicating things, no software company has yet been brave enough to test these rules in court, so they are even murkier as companies work hard to stay well away from the borders of where the rules end and a call from the US Department of Justice starts. 

Thus, software revenue can only be recognized when said software is fully and completely delivered to the end user.  For a "normal" sale like most of us think of it, revenue can be recognized when the end user has the ability to install the software -- a license is delivered and the user installs it.  (For physical software, it's still the truck leaving the loading dock to the actual end user  and not merely the reseller). 

There's a catch, though:  It has to be the complete, finished package.  As mentioned above, revenue can only be recognized when a completed product is delivered.   If you deliver a "preview" of your product or even a feature of your product, this can imply a commitment to deliver something at a later date.  If you even implicitly promise that the purchase today will result in a delivery later, then that probably means you can't recognize revenue until that implicit promise is met.  Again, I say “probably” because this is turning out to be the common interpretation of the rules in a world where no one wants to test this in court.  This is a unique problem for software because no one normally buys a “preview lawn mower” with the promise of more functionality later.

An Example

So, for example: Troll Software delivers a Trollware 1.0 in mid-February.  Their spell checker isn't really quite ready, but they need to ship because their main competitor has already shipped a version with a spell checker. Or maybe the need to get some Q1 revenue to keep from not making any money and having to to massive layoffs is a driving factor in the decision.  So they ship the product with the label "Spell Checker!!! (Preview only)”.   Then, a week into April, they deliver their fully ready Spell Checker to all existing purchasers and update their downloadable ZIP file.

They sell $1,000,000 worth of Trollware by March 31, and think "Yay! We have $1,000,000 in revenue in Q1! Wall Street will love us!"

Oops, not really:  They actually have $0 of revenue in Q1 from Trollware.  That’s right:  $0 in revenue. All of those sales become Q2 revenue, because they didn't actually complete the delivery of any Trollware versions in Q1, but instead in Q2.(This brings about the interesting situation where a company can have $1,000,000 in the bank and $0 of revenue on 31 March for Q1).

Another example:  Say you are a Trollware subscriber, and sent them $1200 a year as part of your subscription, receiving updates, improvements, and new features during the term of the subscription.  Troll Software can only recognize $100 a month for the 12 month term of the subscription.  And consider this:  What iff Troll Software wanted to move exclusively to subscription model starting the first of the year?  They might have the same number of customers buying, but now their revenue for the first month would immediately be 1/12 of what it normally is, despite having a lot of money in the bank as noted above. 

Bug fixes to existing functionality is actually excluded from this -- this is why you normally don't see new features in bug fix updates.

The same might go for "Special offers to registered users".  Say they sell a bunch of Trollware in the first half of the year.  Starting July 1, they say "Free Grammar Checker to anyone that buys Trollware 1.0!" and in the small print it says "... and if you already have Trollware 1.0, you can have the Grammar Checker, too".

Well, now, if this is the case, have you actually delivered the software to the buyers who purchased before the special offer?

That's why I said "might".  As I understand it, this particular issue isn't exactly clear and hasn't been tested in court as far as I know.  And of course, no one wants to be the test case for the SEC or the Department of Justice.  So in the end, it seems that no one is willing to risk such a deal.

Revenue is King

And of course revenue is everything in business and finance, because it represents the value that you have actually delivered to customers.  Revenue is the only real way to measure the accomplishment of a company.  And that's fair if you think about it -- that is where Enron is a great example.  They weren't actually delivering anything to end customers, but still racking up revenues like crazy.  So in the end, measuring accurately what is really, no kidding delivered to end users is what finance people are interested in knowing.

Sarbannes-Oxley was sort of the root of this.  One of its main features was to actually hold the corporate officers of public companies criminally liable for their GAAP compliance.  The threat of prison time has a tendency to focus the senses.  As a side result of SOX, the definition of revenue recognition – and more importantly the desire to strictly follow that definition -- really became an issue, and the need to know a companies real revenue was one of the main fallouts.  CEO’s wanted to be 100% sure that they were recognizing revenue correctly because, well, they don’t want to go to jail.  Now, there is a lot not to like in SOX, and I personally would like to see it repealed, but the end result being that software company CEOs became far more focused on correctly recognizing software revenue.  It's still a bit unclear, and the software industry is still very wary of all of it, because it is untested in court, and as I said, no one wants to draw the attention of the US Government on the matter. 

In the end…

Every public company that produces or sells software has to follow the rules set up by SOX.   Any business that wants to get a loan from a bank or otherwise interact in the general community of businesses needs to follow GAAP.  It's not always  fun, but that is the way it works.  These revenue recognition rules can result in companies having to do some strange things and, more importantly, not being able to do things that they might want to do and which might even make good sense.  But in the end, all organizations in the software business have to follow these rules. 

However, in the end, I have no problem with their being clear, concise rules about what "revenue" really means.  Really, I think it is hard to disagree.  Revenue is a measure of actual, delivered value, and thus a measure of the real value provided by a corporation.  That's something that is really good to know.

The Programming Book Business

By Nick at August 12, 2011 12:29
Filed Under: TechBiz, General

More content from my old Embarcadero Blog.  I think this is even more true than it was when I wrote it a few years ago, especially with the rise of the Kindle and Tablets.  Those new devices are changing publishing, but I still think that what I wrote here is germane.

I’ve blogged about this before — the programming book industry continues to fascinate me. Jeff Atwood comments this week on it, talking about how "The Internet has rendered programming books obsolete."  Lately, there has been a resurgence of Delphi books, lead by Marco Cantu and others, but these guys are not using traditional book publishing channels.  Instead, they are taking advantage of the  budding "on demand publishing" industry, most notably on   I know that I first do a Google search if I have a programming issue, and if I want to learn to do something new, I tend look first to the Internet rather than for a book.  But that doesn’t mean that books aren’t valuable — they are.

I still buy programming books, but I find that I don’t buy the books that "teach you to program <insert language name> in <insert ever shrinking period of time>." Instead, like Jeff Atwood, I tend to buy books about the practice of software development — my latest is Facts and Fallacies of Software Engineering by Robert L. Glass.  This is a cool book. Easy to read, and full of terrific nuggets of wisdom.  Probably my all time favorite is The Pragmatic Programmer by Andrew Hunt and David Thomas.  Atwood makes a great, great point when he says, "If you feel compelled to clean house on your bookshelf every five years, trust me on this, you’re buying the wrong programming books."   I think he’s dead on about that.  (I’m happy to note that the two books I mentioned above are in his list of top five programming books. ;-) I need to get Peopleware and Don't Make Me Think .)

I have been involved with the publishing of a few books done in the "old-school" way, and I dare say it is really, really inefficient.  Really inefficient.  Really, really inefficient.  There were editors and more editors and them some other editors.  And they don’t know one thing about programming.  (I remember a book in the early days of Delphi where an editor decided that the word "Pascal" should be replaced with "Delphi" everywhere.  Or maybe it was the other way around.  In any event, it wasn’t pretty.)  You have to submit your work to them in a special MS Word template, and then they comment (generally very ignorantly), and then you do a huge back and forth with them.  Then of course, once the book fiiiinally gets past that treacherous gauntlet, they print up boxes and boxes and boxes of them, ship them all around the country, put them on shelves, sell a few, and eventually box the remainders up again and send them back to the publisher.  They pay the author a very small royalty relative to the book price. This whole thing simply does not make sense to me.

Marco Cantu was here last week — and he graciously gave me a signed copy of his new "Essential Pascal".  This book was printed on demand by Lulu, and is a nicely made and bound as any book I have.  Marco has been very pleased with the way his Lulu publishing as gone.  Julian Bucknall has said the same thing about his The Tomes of Delphi: Algorithms and Data Structures.  There is a nice collection of Delphi books on Lulu, including a number of them from Dr. Bob as well. (Ray Konopka, call your agent!)

On demand publishing is clearly the future.   It’s a classic case of cutting out the middle man.  A guy like Marco makes a lot more money per book sale, so he doesn’t have to sell as many books to make it worth his while.  This enables authors to publish books of smaller and tighter scopes — that is, books that the traditional publishing industry wouldn’t touch in a million years.  This is good for authors — they make money where they wouldn’t have been able to previously.

It is also good for customers — they get books that they want that would never have been published under the previous model.  Prices are lower, too, because with the overhead gone, authors can charge less and still make more.  It’s simply a vastly superior business model.  And the cool thing is that anyone can publish almost any book at all, and sell it to anyone.  You could, quite literally, take that paper you wrote for a conference a while back, work it up a bit, and be selling online in a week.  I don’t know why I haven’t done it.

Why haven’t you?  :-)

My Book

A Pithy Quote for You

"A man's got to know his limitations"    –  Dirty Harry Callahan

Amazon Gift Cards

General Disclaimer

The views I express here are entirely my own and not necessarily those of any other rational person or organization.  However, I strongly recommend that you agree with pretty much everything I say because, well, I'm right.  Most of the time. Except when I'm not, in which case, you shouldn't agree with me.