Chrono-Optimism

At the XDC Keynote a few weeks ago Geoff Perlman said they’d no longer give target dates for new features.  Instead they’re going to say what’s a ‘priority’ and what’s ‘important’.  Software projects are often big and complex and it’s very hard to estimate the amount of work involved with a new feature.  “Happiness is all about having expectations met,” said Geoff and I think it’s fair to say that Xojo has typically been overly optimistic on when a feature is going to ship (much less when it’s going to be usable).  So instead they’re going to stop predicting when a feature will be released.

If you hear them say it’s ‘Important’, it’s something they’re seriously looking into.  It will be in the product in the not too distant future.  A ‘priority’ means it’s either in active development or will be shortly.  The Rapid Release Model is still in play which means we will still get releases three or four times a year.

In one sense I’m disappointed that they’re not going to give us any timeframe for new features.  I really want to know when Web 2.0 is going to ready for testing as we have a number of projects in development or about ready to start development that it would be really nice to know if it’s a 90 day, 120 day, or longer window.  Android is a nice to have feature, but since I’m not doing much mobile development it’s not that important to us, but I can see how for some it is a huge need.

In another sense I understand why they’re not going to give us target dates any more.  They’ve missed every projected release date that I can think of and I’m going back a lot of years.  It was about a year ago this week, in Berlin, that Geoff said that Android would be out by the end of 2017 when the reality is that we’ll be lucky if we see it by the end of 2018 (that’s just a guess on my part and having having been around a long time).  I would love to be wrong on that guess but it’s a new target that involves a ton of compiler, framework, and IDE work not to mention the need for Interops (a dependency) to work well.

Estimating a project is not a science.  You’re asking software developers to take a wild guess at how long a big feature is going to take.  When you make that initial guess you don’t know that replacing this small piece of code will affect this much larger piece of code over here.  Or cause this other piece to not work right thus forcing you to redo that other piece too.

In some respects creating a new project is considerably easier than replacing code.  In new projects you’re touching everything anyway but subconsciously you’re holding most, if not all, of the work in your mind and you shape it as you go.  Big, existing projects, or OPC (Other Peoples Code) projects, are considerably harder since not only do you have to read the code but also figure out the intent of the code and second guess what the original developer was attempting – not always an easy task.  I’ve never seen the code for the IDE but I’d imagine dozens of people have worked on it over the years with varying degrees of competency and coding styles.  So whatever work you do you have to read, interpret, change, and test to make sure it doesn’t break something somewhere else.  Tack on multiple environments and targets and it’s a herculean task.

I’ve spent the last four years working with my son’s FRC robotics team (team 1982) as the programming mentor.  They have six weeks to design and build a robot to a very demanding set of specifications before they crate it for competition.  These 120 pound robots are relatively complex and I’ve seen it time and time again where the kids have ‘Chrono-Optimism’ in what they believe they can get done in after-school meetings (some with mentors present and some without) and on Saturdays.  Granted, they spend a LOT of time working on the robot, but they’re just kids and most of them have never done anything like this before.  They don’t know what they don’t know and most years they’re scrambling just to get a working robot.

This year, the group of seniors really thought about what they wanted to do.  They knew it would be challenging, but they decided to change their build process and use a more modular hardware design which meant new gear boxes, wheels, framing, etc.  They also decided to build two robots which, for a team that’s never done that before, was …ambitious.  Then they decided that they wanted to go two regional tournaments.  Again, ambitious for a team that’s never done that.  From previous years they also learned something else:  they were attempting to design too much on the robot.  If there were three major tasks that a robot had to accomplish they couldn’t do all three with the resources and experience they had.  They couldn’t change the amount of time to build the robot so they changed the one thing they could – the scope of work – and made the robot simple and sturdy.

The Universe works in mysterious ways and has ways of throwing a monkey wrench into the best of plans.  The last day of build season this year happened to be a day off so the plan was to have a twelve hour work day to finish the robot and test.  Instead, Kansas City had a snow storm which cancelled all school activities.  The robot was not mechanically complete and not functional programming-wise.  The kids were devastated.  But there is a silver lining to their story.

The robot was crated away and couldn’t be worked on for weeks, but the second robot allowed them to work on the programming and driver training.  The modular design allowed them to plan the work they needed to do at the tournament before it started.  The simplicity of the robot meant that the work could actually get done in a short amount of time before taking to the field.

To conclude this story (because I’m bragging now), the team won their first tournament which qualified them for World Championships.  They were the eight seed alliance captain in their second tournament.  At the world championships, they finished 42nd of 67 teams, but were picked as part of the 6th seed alliance.  They won in the quarter finals and ended up getting to the semi-finals where they were defeated by the alliance that went on to be third in the overall tournament (out of 400 teams).  All because they examined their past behavior and decided to change it.  They knew they were bad at estimating and changed their expectations.

I will give credit to Xojo for realizing that, like most of us, they are Chrono-Optimistic in their estimates, and decided to change how they communicate to their customers.  As Geoff said, part of their job is setting expectations and they’ve been really bad at it.  It’s clear that they said ‘estimate’ and we heard it as a ‘promise’ which is partially on us.  So now we have what’s a ‘Priority’ and what’s ‘Important’.  I don’t know if this will help them, or us, in the long run but it will be different and I’m willing to play along for now.

What do you think about this change?  Negative, positive, or neutral about it?

Prepping for Real World

Real World is less than a week away!  Real World presentation on Intermediate Database Programming:  Done.  Real World presentation on Reporting Tools: Done.  Training Day morning session on Database programming in Real Studio:  Done.  Training Day afternoon session on Polishing your Real Studio applications:  Done.  Dry runs on all presentations with staff:  Done.

Usually this is the time that I start getting really, really nervous.  I start having dreams about flubbing sessions and stammering during every talk.  Instead, I had those dreams two weeks ago just before we did our first runs through the presentations.

I must admit that public speaking is not my idea of fun.  I get up in front of a crowd and it feels like my brain is mush and my mouth is full of cotton.  When I was editing all of my Real Studio training videos I discovered that  I used a lot of filler words (um, ah, so, you know, etc).  So I decided to do something about it.

Early in 2012 I started attending Toastmasters.  If you are not familiar with Toastmasters it’s an international organization whose sole purpose is help make its members become better speakers.  The big goals in Toastmasters are the speeches.  You start with an ice breaker speech and I’ve found it to be the hardest speech.   I’ve been fairly aggressive in my speeches as I’ve done 5 in the past year and been Toastmaster twice (which in our club is a lot like giving a speech).

We meet twice a month and in each meeting there are number of roles that are divvied up among attendees.  There’s a timer, someone to give a word of the day, a joke master, speech evaluators, table topics master, and vote counter (we vote who does the best speech, evaluation, and table topics).  Perhaps one of the best (worst?) roles you get assigned at meetings is the role of Grammarian – the person who counts everyone’s filler words.

Once you get that role in a meeting you can’t help but notice the use of filler words – whenever ANYONE speaks.  Literally I mean everyone.  At times it’s annoying to be so cognizant of their use.  Then you start catching yourself using them.  Made me mad for a while.  Eventually you start using a pause instead of a filler word.  I’ve only been a member for a little over a year but I’ve seen it happen with newbies to the group several times.  I think the goal is to strive to get better each time you speak.

So I’m not nervous about the speaking in public any more.  Okay, I’m not AS nervous.  🙂

Really, about the only things left to do for Real World is put the final changes to our two new products we’ll announce and the major product upgrade for the conference.  And then practice, practice, practice doing demo’s and writing up final notes.

If you are attending Real World you might want to think about attending our Training Day.  It should be a great way to start off an interesting week.  More information at http://www.bkeeney.com/real-studio-training-2013/

If you are attending Real World please make sure you stop me and introduce yourself.  I enjoy hearing from people who have been reading this blog.

See you in Orlando!

 

Quality Either Matters or it Doesn’t

My Saturday was supposed to be dedicated to a training video for the new Segmented Control introduced in REAL Studio 2010 Release 4 that was release this week.  Unfortunately, I stopped after about an hour after documenting bugs and becoming generally disgusted with it.  What’s the point of doing a training video for something that is THAT jacked up and must be fixed (to be really usable) in a future release of REAL Studio?  Why waste my time doing a video that I’ll have to do again?

I think it’s awesome that REAL Software creates REAL Studio and a handful of other projects using REAL Studio.  But they don’t use it like we do in two different ways:  Their testing process (and I wonder if they really have one sometimes) does not test the way a real world user creates projects.  Their usage of RB for the IDE isn’t a real world example of what anyone is trying to use RB for.  Saying “we build REAL Studio with REAL Studio” isn’t a valid metric for anyone except REAL Software.

I’m not an average REAL Studio user – I get that – I actually make my living off the product.  I use it eight to ten hours a day on average of six days a week.  When I do my testing, I start by creating a simple demonstration project showing the most basic usage of ‘X’ and then expand upon it by exercising most of the properties, methods and events.  Most of these demonstration projects end up being reused in real world consulting projects and in the twenty-plus hours of training videos I have on my website.

I rarely waste my time and, in my opinion, the new features in REAL Studio 2010 Release 4 was a complete waste of my time.  The documentation was late and incomplete and the new features have glaring bugs in them.  If I can document several in an hour what does that tell you?  Where were the example projects demonstrating the new features for Release 4?  There were none.

Have you ever perused the Examples folder?  There are a lot of example projects showing you how to use individual parts of the REALbasic framework.  Depending upon which release you look at, some of the examples don’t even compile.

I also think it fair to say that most of the examples (that are working) are watered down to the point where they only show the most basic usage of a component.  They are not complex examples and therefore don’t do most people much good when they get around to implementing it in their own projects.  Most are not written with best practices in mind or how average people will use them.  They were written with the intent of getting if off the developers, or documenters, plate as quickly as possible.  Comments?  Naming conventions?  Defensive coding?  Good luck.

REAL Software as a company does not create new cross-platform applications using their own product.  They don’t see the day-to-day deficiencies that we do.  They don’t feel my pain and that’s a problem because they’re trying to sell their product to people just like me – or at least that’s what they keep telling me.

I’m about ready to stop using REAL Studio for certain types of projects because they’ve lost control of the quality.  Quality either matters or it does not.  Decide which and let me know – I have better things to do until then.

Here’s my unsolicited advice for REAL Software:  For every new release build a new project that demonstrates EVERY new feature and exercises it.  Major changes to the framework get the same treatment.  These projects should be good enough so that if there is missing documentation, the code tips or autocomplete doesn’t work (all real world examples, by the way), anyone can still figure it out from the code.  It takes planning and a commitment and thinking about how real users will use the feature in Windows, Linux, Carbon and Cocoa applications.

Please, do this for upcoming Cocoa and Web Edition releases.  If you could do that, I’d guarantee you’d find more bugs, earlier, and I wouldn’t have to spend my Saturday writing an opinion piece.

What are your thoughts?

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?

Become a Part of the Community

If you’ve been working with REALbasic for more than 6 months I guarantee that you know how to do something in RB that someone else needs help with.  I frequent the RB forums and for the most part I’m too late in answering a question – that’s how good the community is.  I’ll add comments when and where it makes sense, but for the most part, a majority of the questions are answered by less than 30 people even though there are tens of thousands of people registered.

REALbasic is easy-to-use and it doesn’t take a lot of development knowledge to make applications but, at one point in time, all of us were beginners with REALbasic.  When we had questions we turned to the NUG list or to the REALbasic forums and asked (you searched first, right?) the ‘experts’.

So what are you giving back to the community?  In past nine months or so I’ve been creating little example projects based on the questions on the RB Forums and put them into the The Association of REALbasic Professionals (ARBP) source code repository (free registration required).  Here are few of the highlights:

  • Making a listbox popup menu
  • Multi-line listbox
  • Popup menu with icon example
  • Printing using the Graphics Object along with companion articles for printing with On-Target Reports and RS Report.
  • Stylegrid auto-height rows
  • SQLizing text (automatic formatting of a string so you can use it in an SQL string)
  • Calculator application

None of these projects are outstanding and they could certainly be done better but they are contributions to the community and someone might find them useful.  In fact, people are.  People have downloaded the hundreds of example projects and tutorials a lot.

The REALbasic community needs your experience and your input.  The first thing you can do is participate in the discussions on the RB forums.  Give advice and share your source code when you can.  There are tons of questions that get partial answers and you just might know how to help them.

Secondly, create some example projects demonstrating some very small technique.  Put them on your own website and link them to RBGarage or put them on ARBP.

Thirdly, think about giving something back to the community.  Hopfully you’ve gotten something from the REALbasic community and you can give something back.  Just because you think you’re not a ‘professional’ doesn’t mean you don’t have valuable insights and knowledge. Together we can come up with some amazing examples and help each other out.

Is The About Window Worthless?

Maybe I’m just a jaded Mac user (since 1986) and I’m so used to seeing an About Window in an application that I’ve just assumed that it *should* be there.  Never one to challenge anyone else opinions (yeah right) I decided to do some digging.

Apples Human Interface Guidelines says this:

About window  A modeless window that displays an application’s version and copyright information.

They don’t say that it’s optional but they don’t say that it’s required but I’ve NEVER seen a Mac desktop application (games are the exception on all platforms) that doesn’t have one.  From this we’ve learned that the About Window displays the version and copyright information.

My friends other argument was that this information is found in other places so it’s a waste of space.  On Mac OS X you can find this by using Get Info after clicking on the executable.  I’ll buy that, but why should I have a customer go to the Finder, find the executable and then right click on it or make sure they have Column VIew turned on when I can just have them go to the Apple menu and select About This App?  Seems way simpler.  Let’s move on to Windows then.

I think his argument is even weaker in Windows and yet there are (at least) two other ways of getting version and copyright information.  In the Windows Explorer you can right click on the executable and click Get Properties to get that information and you can hover your mouse over the file to get the same information.  So again, I have to have my dumb user (I say that in the most loving way a tech support person can do) go find the executable on their hard drive.  And when they come back with a, “um….how do I find the ex-a-cute-ible file?  I usually just go to the Start Menu and select it from there.” all I have to do is say,  “Go to the Help Menu and select About This App”.  Simple, no?

Of course this argument breaks down if the app can’t launch.  Then it’s on to Plan B which is the Finder and Windows Explorer.

I did a little research and couldn’t find anything specific on Microsoft Interface Guidelines on About Windows, but I did find a page for creating apps in Visual Studio that tells you what should be on an About Window.  This list includes:  Support Information (including phone numbers and/or web sites; Copyright Information; Version Information; Implementation Notes; and whatever is useful to the users.  Again, they don’t say it’s optional or required, but it sure sounds like they expect it to be there.

So while About Windows don’t do much they provide a standard, easy-to-use way for a user to get version information without having to leave your application.  From my experience in doing some tech support version info can help answer some questions.

On to the original argument:  I said that the REALbasic Debugger Stub(s) aren’t proper applications in a couple of respects.  They don’t a proper About Window showing copyright and version info or any other relevant details.  You could argue that having the version info in the title bar accomplishes the same thing but that by itself isn’t a standard practice (I’m sure there are examples in all platforms so don’t bug me about it).

There’s also no help menu so there’s no place to go for help.  And, oh wait, since there’s no About Window there’s no easy-to-find website URL that you can click on to go straight to the forums or anyplace else.  It seems simple, but we’re talking about hobbyist developers that may not be computer experts.

I don’t really care, but it’s a Windows application.  Shouldn’t it have an installer (and uninstaller)?  Does it matter as much on the Mac and on Linux?

I guess my point is that Real Software is used to create ‘great’ cross-platform applications and yet one of its main cross-platform utilities isn’t that well developed.  How long does a decent About Window take?  2 minutes if you steal it from somewhere else.  A Help menu with a help system is a lot more work, but having some simple FAQ’s would do wonders.

Anyway, feel free to discuss amongst yourselves about the merits of an About Window.  Since I didn’t cover anything about Linux (mainly because I’ve not learned enough about it), what’s the standard for Linux desktop apps?