Formatted Text Control Version 2

As a consultant I use the best tools available to me and my clients.  One of those tools is the Formatted Text Control (FTC) from True North Software.  Today they announced version 2 of their excellent text editor control.

FTC is one of those controls that I find indispensable and use a lot because of its power and flexibility.  Because it’s done in 100% unencrypted REALbasic code you have complete control over how you use it.  Need to do something that it doesn’t do?  You can do it yourself if you have the patience for implementing your own changes.

FTC is big and powerful.  It has around a hundred classes that let you implement a full-featured word-processor with very little work (literally drag and drop and maybe add ten lines of code).  With a little bit of elbow-grease it’s very easy to create your own reports via code (perhaps I’ll write a little tutorial on that one of these days).

If you’re interested in learning how a control can be implemented in REALbasic using just a canvas this is excellent code to learn from.  FTC does class inheritance well, is optimized, and the code is easy to follow.

Brendan Murphy, the creator of FTC, is very responsive to bug reports and feature requests.  We’ve been users since the early days of development so you’ll see the BKeeney name in a few places in source code from bug reports and feature requests.  It’s rare to see somebody share the credit so readily.

Version 2 has a number of welcome new features and enhancements.  The first is that the alignment of the display when it’s in Page display mode.  Before it was always flush left, but now you can center and right justify it.  It’s a minor thing, but very high on my own wish list.

New search and replace functionality was added.  You can do it either programmatically or interactively.  There is also a new Replace All function.

You can now scroll to the selection which, as the name suggests, scrolls the display to the current selection (and presumably the insertion point).

A new KeyPress event was added that allows you to have more control over what characters can be inserted to the control.  Since this is an event in the TextField and TextArea controls this is a welcome addition.

A new subclass was created from the FTC.  The FTTextField is a replacement for the RB TextField control and has all of the advantages of the FTC.  This means that the FTTextField can do spell-checking, undo, and the ability to read/write true Rich Text Format (RTF) files where as the RB TextArea is fairly limited in what it can do with RTF (no graphics).

Also new in the FTTextField is the ability to limit the number of characters in the control and the ability to use masks.  Given that the RB mask property in the TextField is bad (perhaps sucks is a better word) this by itself might be worth the purchase price.

The cost of the version 2 of the FTC is $150.  A demo and more information about  version 2 is available at

What a !$&# Week

It’s not been a great week – even though it’s been a short week.  I’ve now seen two separate bugs that are HUGE and affecting me for Windows.  In REAL Studio Release 3.1 there is memory leak in the Timer Class and in the StaticText class.  The end result is that my app, in Windows, will eventually chew up all available memory and bog the entire machine down to the point of being unusable.

Not good at any time, but this mean that both 3 and 3.1 are not usable for me, at least for Windows builds.  R 3 has some issues and a memory leak as well.  Thankfully, the leak is not as bad. I would go back to R 2.1 but since *that* release also has a nasty Windows bug I can’t go back to it.  Dare I go back to R 2?

Initial indications are that RS will not be issuing an interim 3.2 release, however.  This is why I think their Rapid Release Model stinks.  I’ve got two bugs that keep me from using the latest and greatest release and now have to wait to get a fix.

Your plan runs out in the next 60 days or so?  Sorry.  You’re S.O.L.  It might be great for RS but the Rapid Release Model is becoming the Rapid Bug Model for me.  Pretty soon, it’s going to start costing me clients.


A couple people have asked me what I think about Apple changing their stance on letting 3rd party development tools for developing iOS apps and what that means for REAL Software.  Meh.

Really, there are so many items RS has to get done before thinking about iOS that it’s not even a concern right now.  The only thing that would concern me is if they decided to jump both feet first and devote a lot of resources to it.  Cocoa has taken way longer than anyone ever dreamed of (I feel that personnel changes have bit them hard on that one) and now the highly anticipated Web Edition will distract them too.

Don’t get me wrong, I’m looking forward to the Web Edition.  I think being able to leverage all my RB knowledge for iOS apps is a great idea too.  But, as they say in Missouri, “Show Me!” – I’ll get excited when I see them and can work with them and keep my business in the black.

July/August 2010 REALbasic Developer Magazine

The July/August 2010 edition of REALbasic Developer Magazine is out.  This months column title is “Having a Thick Skin: Take the Emotion out of Your Tech Support”.

I talk about the pitfalls of providing tech support when people asking for (or is it demanding!) for tech support aren’t nice.  Email and forums posts are awful mediums for communicating to each other so you have to take the emotion out of the equation.

Do you have any horror stories, tips, or jokes about tech support you’d like to share?

The Bad Thing About Automated Backups

I discovered, today, that automated backups are only good if the backup actually takes place.  A directory on the BKeeney website got corrupted and unusable today (don’t ask since that’s a really good question) wiping out the key to, well, everything.  After scrambling to figure it out I called the ISP to see if they could help (like maybe from their backup).

They gladly said that, of course, they could help.  They usually have 2 backups that they can restore from.  The tech looked up the info and then sheepishly said, “Until it gets too big”.  Which of course, with 20 hours of video (in both H.264 and Flash formats), easily exceeds their limit.

So, for now, the bkeeney site is down until I can get things reinstalled.  Oh, and just to make matters worse, the website of the software author we use is also currently down (related?  possibly but I doubt it) so if it takes a full install to recover I’ll have to wait until they come back up to download the install packages.

Did I mention that I’ve been incredibly busy with consulting work?  I don’t have time for this crap.

Insecurity Doesn’t Pay the Bills

If you have your own business, are a consultant, or even simply sell your own stuff (whatever that stuff is) I recommend the article at

I can’t even begin to tell you how much this post struck a chord with me.  I feel like this all the time with my blog posts, my REALbasic training videos, my software products and even my consulting.

I have to push myself past the insecurities every day.  I am my own worst enemy because whatever you think about me, my internal monkey chatter tells me the same and much worse – trust me on that one.

Thankfully, my fear of regret is bigger than my fear of failure.  And yes, I’m just as messed up as you – probably more.  😉

The Arrogance of Intelligence

We’ve all met people like this.  Within ten minutes of meeting them they’ve worked it into the conversation that they belong to Mensa, have you heard of it?  Oh, you haven’t, it’s for people that are really smart.

Really?  I’m happy for you.  Really, I’m being honest.  But I don’t care.  You see, I don’t care about your intellectual IQ.  I care about how you relate to other people and to the problems at hand.  Do you listen to me to learn or to put up with me?

(Before I get the hate mail, I have plenty of friends that really belong to Mensa and have never mentioned it until they asked me if I was interested in joining.  I’ve always declined, thank you very much.)

I’m being cynical because people like this drive me nuts.  If it’s their idea it’s THE PERFECT SOLUTION because, well, they’re the smartest people in the room.  Never mind if you have practical real world experience that says that idea, while good, isn’t the ideal solution.

I’m not a farmer, but I grew up in farm country.  All of my neighbors were farmers and while most of them never had a college education they were practical people.  The old joke was that you give a farmer, baling wire, gum, and a welder, they can fix almost anything.  They were practical smart because plants and animals either do well or they don’t and if they don’t they didn’t stay farmers very long.  The best part, is that they never went around bragging that they were very good farmers – they didn’t have to nor did they want to.  Heck, most of them would admit they weren’t very  smart, but they knew how to manage their business with thousands of different tasks, machinery, animals and plants and make a profit (in most years).

The smart people, the smartest people in the room, don’t bother to ask the pertinent questions, or make measurements, or ask for previous results of tweaks because they are, well, the smartest people in the room.  They assume they are an expert at everything they put their mind to.

I look back at Apple in the late 90’s and early 2000’s and I think they had a fair amount of the “Not Invented Here” syndrome where if they didn’t make it, or code it, it wasn’t going to make it into their products.  We all know that Apple was in dire straights back then.  When Jobs came back to Apple he got rid of a lot of projects and now their very focused and they use a ton of ‘open’ standards in their operating system.  Why?  Because they get to expand upon the ideas of hundreds of thousands of developers rather than a few thousand.

In my engineering days I saw plenty of engineers that would re-engineer a solution because it wasn’t the way they’d do it.  It generated a lot of unnecessary work and wasted money.  The software industry isn’t any better.  They feel that because they have user interface designers they need to tweak the user interface on every release.  Every major new version adds a bunch of new ‘features’ that the average person won’t use because they need to keep the developers busy.  That’s called software bloat.

If I had one bit of advice for people that own their own business is this:  hire people that are smarter than you.  I mean it.  Hire people that are as close to an expert in their field as you can afford.

Let them challenge your (the boss’) ideas and assumptions.  Make an atmosphere where their ideas get a fair hearing without shooting them down right away because they’re not smart enough.  If you listen to the smart people you’ve hired to get things done you will probably learn a few things.  After all, don’t smart people want to learn new things?  Don’t smart people want their ideas to be challenged?

If all you do is hire ‘yes’ people then your product will suffer.  Your product won’t have focus.  Ideas that should be shelved for another time get put in now because the boss wants it and no one can tell him no.  Ideas from customers are ignored because they’re ‘just customers’.  When customers quit using the product, ask them why – you might just learn something.

Neither do you want design by committee.  What an awful thought that is.  It’s the exact opposite of being focused.  A good leader or leadership team will pick the good ideas out and let their people run with it.  The bad, or not so good ideas, will be stored away and revisited every now and then.  What was a bad idea might be a good idea in a year or two.

I’ve rambled enough for now.  I’m sure you’ve all had ‘leaders’ in your organizations that were never open to ideas unless it was their idea.  They used circular reasoning to shoot good ideas down and to keep their ideas alive.  Are you still with that company?  Is that company still around?  Is it financially stable?  My educated guess says that they’re not as smart as they think they are and you’d agree.

RE: The opposite of love is not hate, it is indifference.

Fellow REALbasic developer, Christian Miller penned an interesting blog post at  I suggest you read it.

The stage that Christian didn’t add was what happens after acceptance.  This is the point where you ask yourself, “So what am I going to do about it?”  As I see it, there are only three options that are worth talking about.

Deal with it.  Accept the fact that RB is a flawed product and learn to work around its many deficiencies.  We all know that RS is a small company and can’t devote as much resources to it as say an Apple or Microsoft can to their respective development environments.

Leave.  Move on and use the tool(s) that work for you.  I’ve said this to many people:  If you expect RB to make a great Mac OS X only, Windows only, or Linux only application you might be very disappointed.  If you’re looking for a good cross-platform application using one code base it’s one of the few tools available.  The other dev tools available wouldn’t be considered Rapid Application Development tools in my opinion.

Try to change the situation.  This is the approach that I took.  One of my goals with the Association of REALbasic Professionals was to bring the conversation out and be more vocal with what we, the professional developers, need and want.  I found the training materials wanting so I started my own video series available on my website.  I blog regularly about RB here and on the ARBP website.  I’ve written tutorials, answered questions in the RB forums, talked at RB conferences and, written articles.

Without patting myself too hard on the back and injuring myself, I have been a pretty vocal supporter of REAL Software.  Hopefully you all have read the posts where I’ve been just as critical of REAL Software.  I’ve hitched my wagon, so to say, to the REAL Software bandwagon because I like the product, like the people that work there and, it has satisfied the requirements of my company and my clients for a decade.  I’ve been called a shill for the company and I’ve received hate mail for my anti-REAL Software stances.  My point is that I’m not a mindless cheerleader for the product because that does no one any good.  My family and my employees families fates are intertwined with the fate of REALbasic so I need it to be a viable product.

From my perspective the constant focus on new hobbyist users does absolutely no good for my business.  Too often new features are implemented that are ‘good enough’ for the hobbyist but suck for me (think toolbars, the report generator, htmlviewer and Windows flickering to name a few).  The hobbyists can’t pay for advanced features.  Businesses can, and will, if it makes sense for them.

RS is right to be proud that they ‘eat their own dogfood’ and that the RB IDE is made in RB.  That’s great, but making an IDE/compiler isn’t what I make.  Its obvious, at times, that there is a disconnect between what RS perceives we need and what we really need.  I’ve been using RB since the 3.5 days and yet there’s only one Date control, one Calendar control and one alternative to the listbox (i.e. grid).  In the corporate environments I used to work in that’s unacceptable.

I’ve long advocated that REAL Software create an internal consulting group.  Start with one person.  That group bids on potential projects like all the other developers in the network (to make it fair to existing developers, their rate must be HIGH).  When they’re not bidding or working on projects they do two things:  1)  they create real world examples and check each one for each release to make sure they still work; 2) They create training videos and tutorials, and answer tech support issues.

Having an internal consulting group does a couple of things:  1)  they quickly learn the pain of making real world applications in REALbasic; 2) provide valuable feedback to the powers-that-be in RS on what needs to be fixed and in what priority; 3)  it’s a (potential) revenue stream; 4) Makes sure that the documentation and examples really work; 5) Makes corporate users feel better knowing that if their own development team gets into trouble RS can back them up.

The truest definition of insanity is doing the same things over and over again and expecting a different result.  As we’ve seen with some very vocal criticisms (like Christian’s) and others, the perspective is that RS is doing the same thing over and over again and failing.  Unfortunately, so are we, the users.

Redesign The User Interface At Your Own Peril!

I’ve written a few times about The Sixty One. I thought it was a great example of a web app that works well.  I was able to discover some great new bands and for a few of them I track their progress to see if they come to town and play.

Unfortunately, The Sixty One is a prime example of how redesigning the user interface can make your existing user base very angry and make them leave.  Common complaints about the new design are “antisocial and unnavigable” and I happen to agree with them.  The new changes made a great music discovery site not nearly as much fun and discover new bands.  It sure looks pretty though.

Microsoft has gone through similar criticism with the Office ribbon.  Some people love it and others hate it.  The few times I’ve used Office with the ribbon I was frustrated beyond belief because of the way *I* learn how to use applications.

A friend recently commented to me that they learned to like the ribbon.  I’m not sure that Microsoft would get that benefit (of time) if Office wasn’t ubiquitous.  I can say that as a Mac user I’m not excited about getting the ribbon in the next version of Office but them I’m already using Pages and Numbers more and more because they do everything I need them to do for far less money and less bloat.

From my own experience, we went through interface changes on Task Timer, our Mac/Windows desktop application that tracks your time.  It’s a very simple interface.  Version 1 and 2 let you track one project/task combination at a time.  People complained so we opened it up to five.  People (mainly lawyers – go figure) said that five simultaneous timers weren’t enough so we made it unlimited.

We rewrote the interface to allow an unlimited number of simultaneous timers and project and task combinations.  The beta users were very happy and we were happy too (since we use it every day as well).  We released and the very first bug report was from a long-timer user who complained that we destroyed the simplicity of the interface.  I guess there’s no winning.  Thankfully, with a few minor tweaks we were able to make that customer satisfied but most users will just walk away in disgust.  It’s not easy to get a second chance.

Every time FaceBook changes their layout there’s always a round of complaints.  I generally fall into the group that is willing to work with it but I do have to admit that I generally don’t mind the changes after I’ve gotten used to it.  But then, I also find that the new interface isn’t that much better than the old one – usually.

I sometimes think that companies redesign their website and products because they’ve got designers on staff and they think the designers need to earn their keep.  Don’t fall into that trap and change the interface ‘just because’.

Interface changes should be well thought out to satisfy existing users and to get new ones.  Doing so without some serious thought and effort, both before and after the change, can result in people abandoning your product or service.  Tough to stay in business that way.

Any other examples of a bad user interface change?

eReader Devices: You’re Dead To Me

If you’ve been reading this blog for any length of time you know that I really like my Sony eReader.  Well, I used to really like my Sony eReader.  Now that the iPad has been announced I look at my eReader with fond memories and can’t wait for the iPad.  My Sony eReader is now dead to me.

The eReader is fine for what it does but it’s a one-trick-pony.  I’ve grumbled on more than one occasion that I don’t like seeing book graphics in 16 shades of gray and the slow refresh rate is annoying (but livable).  Not being able to zoom graphics is annoying too.  The ability to play MP3’s on my eReader is totally worthless (to me at least) since I always have my iPhone with me.  I’ve never used it so why pay for it?

I have an accessory that allows my eReader to be read at night that works fairly well.  But, it uses regular batteries that wear out in a couple of weeks and it makes using the eReader during the day a pain because it makes the text less readable.  The iPad won’t have those problems.

Let’s talk briefly about software.  The Library application that comes with the Sony eReader stinks.  It’s not a native Mac app, it’s not a native Windows app.  It sucks on both platforms.  In fact, I hate it so much that unless I buy a book through their store I use an application called Calibre.  I hate it too, I just hate it much less because it manages my books much better.  iTunes does a great job of managing my music, movies, and podcasts so I can’t imagine that it would suddenly suck at managing my books.

I thought that selling the iPad to my wife was going to be hard but it turned out to the be exact opposite.  She wants one in the kitchen.  Why?  A little background is needed first.

My lovely wife is also a very talented cook.  She’s adventurous and is always trying a new recipe or even making one up from several she’s found on the internet.  She prints the recipe out and then takes it into the kitchen.  Imagine being able to do that from the iPad which she just puts on the counter.  If there’s not an iPhone app for a chef (I bet there are several already) there will be a couple of specific ones for the iPad (soon)!  And with a nice glass screen, there’s not too much worry about getting the device dirty.

The iPad has one huge advantage for me – the app store.  Our family already has 3 iPhones.  Don’t make me count up how many apps we’ve downloaded (both free and commercial) but I’d bet that it’s probably close to a hundred.  When we get our iPad we’ll already have the software for it.  No researching and purchasing new pieces of software that may or may not do what we want – we already have them!

I think the iPad will be awesome for Boomers.  How many of you have Boomer friends or relatives that call you for tech support on the Windows or Macintosh computers?  Show of hands?  Thought so.  The iPad is so for them.  Do any of your friends and relatives call you on how to use their iPhone or iPod Touch?  Didn’t think so.  The iPhone is so simple that hardly anyone has issues figuring it out.

Anyone who says the iPad won’t be a huge for business is nuts.  I have clients, right now, that could sell an iPad application if we converted their app to work on it.  Imagine an HVAC service technician, rather than lugging around a ton of paperwork and a big, clunky laptop, showing up at your house, logging all of his work, including when he arrived, what tests he performed, results, and then showing you the iPad display showing all of this and then billing your credit card directly (though an add-on card reader) and then emailing your the results?

Another example:  My doctor is all electronic and the interface to his current tablet stinks – they all hate using it!  They spend minutes clicking and doing crazy things in the interface.  I can imagine them using an iPad with the keyboard attachment and being more efficient with their time when they use an interface designed around a touch screen rather than an interface meant for a desktop app that’s been forced onto a tablet.

The list goes on but the possibilities are limitless.  You think Apple demonstrating the iWork apps on the iPad was a fluke?  Nope.  Apple thinks this thing is going to sell like hotcakes to business and I happen to think they’re right.

What do you think?

Tracking Your Time in 2010

Happy New Year everyone!  This time of year is an awesome time to review the previous year and make plans for the upcoming one.

Many of us charge clients by the hour regardless if we tell them that or not.  In a fixed bid project we estimate how long it will take to do the various parts of the project and then give the client a value based on those hourly estimates.

Reliable and accurate estimates are just the first step in making your business profitable.  The final step is going back and seeing if you estimated properly.  The only way to do this is to track your time on a project by project basis.

There are variety of tools available for doing this, but Task Timer, one of our products, is a very simple and inexpensive ($24.95) way of doing this.  Task Timer is designed to be simple and easy to use.  It’s as simple as pressing a button!

Setting up Task Timer isn’t much harder.  Add your project, add the major tasks you want to track, and add your initial estimates and start using it.  The new built-in estimate graphing gives you a minute by minute graphical view into how you’re estimate is tracking in comparison to your actual time spent.

For many of our consulting clients we give them a discount rate when they pre-purchase a block of hours (usually 40 hours).  Task Timer’s new estimates feature makes tracking the hours used really easy.  When the client purchases a new block of hours simply create a new task for the project and put the block of hours into the estimate field.  Task Timer is now tracking your bulk hours used for the client!

Many people who have purchased Task Timer have told us that it pays for itself in the first week!  We can’t verify their claims but we can say that when we created Task Timer and started implementing it for all of our projects we found that our billable hours rose over 15%.  It seems we were not very accurate reporting how much we worked on any particular project at the end of the day.  If we reported (really guestimated) our hours at the end of the week the numbers were even worse!

For additional information about Task Timer, please see this link:

Download links:

Mac OS X:


Tracking your time is a good reality check.  Were those products you were spending so much time on really worth it?  How much time are your blogging?  What about video production for those training videos?  For that big size month project what did you get right (and more importantly wrong) in your estimates?

Plan on getting a handle on your estimating skills in 2010.  Task Timer is just one of the tools you can use.