Archive

Archive for July, 2009

My Most Wanted iPhone App

July 30th, 2009 Bob Keeney 1 comment

I’ve had a sudden uptick in time spent at the gym and I have a heart rate monitor. I’d love to be able to track my workouts to see if I’m doing okay or need to up the intensity a little.  Apple and Nike have the Nike+ where millions of people are storing and tracking their running statistics.

In the July issue of Wired there’s an article on how Nike unleashed the power of personal metrics.   This is what I want for my heart rate monitor.  I want to track and be reminded of what I can push myself to do and I want it in an easy-to-use, no-brainer iPhone application.

I’ve even looked into it a bit.  There’s the SMHeart Link heart rate monitor but it uses a ‘wireless bridge’ (does that mean it’s wifi?) and the reviews on the Apple App store have not been stellar (but is that in part due to the free app requiring a $125 adapter?).  Is there a BlueTooth heart rate monitor that I can use with the iPhone (even if I have to develop it myself!)?

I found this page that has a lot of iPhone apps that aid in your workout.  But after reading through the reviews none of them use a heart rate monitor (I might have missed one so please be gentle!).

Is it really that hard or is the technology not available yet?

REALbasic Consulting Inquiries

July 29th, 2009 Bob Keeney 1 comment

I had a brief conversation with another REALbasic consultant the other day. We both remarked on how often the consulting inquiries never go anywhere. I would say that it’s price but half the time they never even bother to reply after the initial contact.

I’ve even found that potential clients that post on the REALbasic Developers list and the ARBP Find a Developer page never respond to emails. It seems odd especially when I know many of the people that post on those two sites don’t get any responses from developers to begin with! I know this because after a couple of months I’ll do a very short “Hey, have you found an RB developer yet,” email to those I don’t initially respond to and I get a response more often then not saying how the response was poor by RB developers. Go figure.

Well, to be fair to us RB developers, sometimes the specs are worded pretty poorly or are so specific that unless you know exactly what they’re asking for we don’t respond. Other times they’re so broadly worded that the project could mean anything or they’re lacking so many details you start to wonder if they really know what they want. One project that went through the network had a 20 page requirements document. Awesome, I thought, finally someone that knows what they want. Unfortunately, it only had a single page of what their current system is and does and nothing in regards to database details, screenshots, or anything else really helpful. In other words it was 20 pages of technical jargon that didn’t mean anything to a typical REALbasic application (which they were pretty sure they wanted).

A few years ago I used to have these nice formal proposals that I used for everything. These multi-page documents, contracts really, took me about a half day to customize for each project. After a few years of wasting time writing documents I now just send a summary email now because most people aren’t very serious about getting their project done. Let me revise that statement: They’ve not very serious unless it’s going to be dirt cheap.

So what has your experience been? Why do you think clients don’t bother to respond? Have you found the RB developer networks to be useful or not?

New To RB: Windows are Special Objects

July 23rd, 2009 Bob Keeney 5 comments

Other Peoples Code projects are always instructive because it gives me some insights and things to talk about.  REALbasic is easy-to-use.  I sometimes think it’s too easy-to-use because it lets people get away with a lot of things that aren’t necessarily good. Today, in my ongoing occasional series on things that new people have problems with in REALbasic we’ll talk about Windows.

REALbasic has strong typecasting and is very object oriented, but Windows are a prime example of an object that can quickly get new developers into trouble.  Take this bit of code:

if myWindow.visible = true then
     myWindow.visible = false
end

What the user was TRYING to do was keep the window from loading. Unfortunately, what he was doing was loading myWindow and then making it invisible regardless if myWindow had been created previously. What the user should have done was something like this to see if that window has been created already:

for i as integer = 0 to windowcount-1
     if window(i) isa myWindow then
          //do something special here
          return
     end
next

What is this? Windows are special objects in REALbasic. They can be called without explicitly calling the ‘new’ statement. For example, the following two pieces of code do the same thing:

mywindow.show
dim w as new myWindow
w.show

The first one uses the implicit instance of a window, meaning that if you call it, myWindow gets created if it’s not already created and shows it. The second bit of code creates a new instance of myWindow and then shows it. In the first bit of code you can call this a million times and you’ll only get one window. The second example will let you create as many windows of myWindow as you have memory for.

Real Software introduced the ImplicitInstance property in RB 2007 R4 and, to me, this should be false by default (I wish it were a preference setting). Turning this property off and compiling will immediately tell you if you’re accessing the properties/methods/constants of the window definition rather than the instance of the window.

Look at it another class as an example. This code will fail:

dim d as date
d.totalseconds = 123412354

Why does it fail at runtime with a nil object exception? Because d is a date object and it hasn’t been created yet (i.e. d is nil). The following code will work because d, the date object, has been created using the new command:

dim d as new date
d.totalseconds = 123412354

The fact that windows can be created implicitly is both a feature and a hindrance. Turning off the implicitinstance property in your windows may just save you some time in tracking down window issues.

A good friend of mind said, “If you’re using the implicit instance, you’re code is broken – you just don’t know it yet.” While it’s somewhat of an exaggeration it’s advice well worth listening to. Treat your windows like classes and you’ll have fewer problems.

Happy Coding!

Categories: REALbasic Tags:

RB Language Reference

July 16th, 2009 Bob Keeney 7 comments

Am I the only one that think the RB Language Reference is less than useful?  Honestly, it seems about the only time I check it now is when the auto complete messes up (usually by not giving me any choices) and I want to make sure I’m not wrong on what I thought AC should show.

I’ve said it before and I’ll say it again, I think having the Language Reference online with user added comments is better solution.  In my ideal world, the local Language Reference gets the comments from the web IF I want them (and I do in most cases).  It’s a brave new world and it’s time to embrace the web (of course this means we need a new/reliable web browser control but again, that’s a different topic – see here, here, and here).

You know it’s bad when you think OPEN SOURCE documentation is better.  See Java, php, MySQL documentation for examples.

Am I wrong about this?  Or am I not looking at it from a complete newbies perspective?  Maybe the LR is good for beginners and not for experienced users because I’ve heard from various sources that new people really like the language reference.  However, I also see an awful lot of questions being answered on the forums that might have been eliminated if a simple comment or two was added in the Language Reference.

Thoughts?

Yuck. OPC Projects

July 14th, 2009 Bob Keeney 4 comments

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

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

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

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

Categories: Business, REALbasic Tags:

Registration Systems For RB

July 14th, 2009 Bob Keeney 2 comments

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

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

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

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

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

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

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

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

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

Yeah, Right. You Can Do It

July 8th, 2009 Bob Keeney 9 comments

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

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

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

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

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

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

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

REALbasic 2009 Release 3

July 7th, 2009 Bob Keeney 6 comments

RS released RB 2009 R3 today.  I won’t go into any big detail here as I wrote a fairly lengthy review of the changes over on ARBP.  I will hit on one change that I’m particular happy about.

Back in May is posted about the stupid error message and problem that occurs when you load a version control project with missing files.  I am happy to report that it’s much better now.  The IDE will ask for the missing file and if you click cancel it will load as much of the project as possible.  Before it would just stop loading the project and you’d get a mysterious File Error 0 message.  Now you get this error message:

MissingFiles

This is great but in one project due to file corruption issues I clicked cancel over 25+ times.  So at this point this dialog isn’t exceptionally helpful because it tells me something bad has happened it just doesn’t give me a clue as to which ones were bad unless I happened to write every one of them down at the time the dialog was shown.

What would be more helpful is having a log file of missing files generated or list the files in System.DebugLog.  Either way it would more helpful.  Ideally I’d love to have the option to have it stop asking for the missing files and just create the log file but I understand that the IDE might have to undergo some significant changes to allow that.

And before anyone says it, of course it’s my fault, if the files weren’t corrupt/missing to begin with I wouldn’t have this issue.  Stuff happens – get over it.  Regardless, this one improvement will make my life a little saner.

Is there one fix/new feature that is really good news or bad news for you?  What do you think of the EditField deprecation and subsequent replacement with TextField and TextArea controls?

Categories: Opinion, REALbasic Tags: ,

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

July 2nd, 2009 Bob Keeney 5 comments

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

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

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

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

Categories: Business Tags: , ,

RB Developer Briefs: Price Competing

July 2nd, 2009 Bob Keeney Comments off

The July/August 2009 edition of REALbasic Developer magazine is out.  In this edition my column is about competing on price and why it’s a bad idea to complete solely on price.

What did I get right and what did I get wrong?