Category Archives: Programming

[[UIDevice currentDevice] orientation] vs [[UIApplication sharedApplication] statusBarOrientation]

Biblicious was originally an iPhone only app because the iPad did not exist.  When the iPad was coming out, I used a similar algorithm to my Elastic Window product in order to naturally scale up the drawing so that the game looked just as good on the iPad as it did on the iPhone. The iPad was released, and then the iPad2 was released, and Biblicious still only worked in portrait mode.  After a few requests and knowing that Apple prefers iPad apps to work in any orientation, I started the work of manually repositioning controls on the game screen.  After a couple of days of work, mostly in the iOS Simulator, the game was ready. I could control when changing orientation was allowed or not. For example, not allowing the orientation to be changed while any Core Animation was going on. Everything looked great! I thought it was so neat that I would actually sit there and play with the orientation just so I could watch the controls move around. Life was good, and I was happy that I finally got this code done. I released that update & everything was good. But after a few days I saw a “nasty” review on the AppStore: “With the latest update the answers are all on top of each other and cannot be read unless you start trying to tilt the iPad in such a way they clear up. It doesn’t always help. Please try to correct.” Not very helpful, I know.

I repeatedly tried to make Biblicious do this, asked Pariahware followers on Facebook & Twitter, and received no responses.  I asked a few friends and nobody said they had every seen this overlapping button issue.  As every developer knows, we have no way of contacting our customers when they comment and we have no way to rebut. After a few days this person also sent me a support email from within Biblicious. I told them that I could not make it happen and asked them to send me detailed steps. — No response.

I figured that I should go ahead and try it again. Due to my scaling code, I thought I would try to make the overlapping button issue happen on the iPhone where no scaling happens. If it didn’t happen on the iPhone, then I knew I would need to concentrate on the scaling code. So, I hooked up my iPhone and ran the app from Xcode. I start a new game and began to play with the device’s orientation. Lo and behold I saw a button partially land on top of 2 other buttons as the buttons were being animated onto the screen. I was perplexed and tried it again, this time on the iPad. How could this happen? I check the device orientation for UIDeviceOrientationPortrait  and UIDeviceOrientationPortraitUpsideDown and perform portrait drawing code otherwise perform landscape drawing code.

Upon further searching, I noticed that sometimes I was checking for [[UIDevice currentDevice] orientation] and in other places, I was checking for [[UIApplication sharedApplication] statusBarOrientation]. The latter was actually “forced” upon me with the iOS 5 SDK install due to compiler warnings.  The former, obtains the device’s orientation which can return a number of results corresponding to the 3D plane, including face down.  The latter essentially returns landscape or horizontal.  So, what was happening in my code was, I was asking the device for it’s orientation in 3D space which was most likely returning UIDeviceOrientationFaceUp. Since my code didn’t know how to react, it just kept drawing in it’s last known state and place the button in the incorrect spot. I was able to get this to happen by changing the device’s orientation and then holding it at an approximate angle of 45 degrees. By changing all of my orientation checking code to [[UIApplication sharedApplication] statusBarOrientation] the problem was solved.

My conclusion: [[UIDevice currentDevice] orientation] it NOT necessarily the same as [[UIApplication sharedApplication] statusBarOrientation]

I hope this helps other people out and saves them some time when coding for their iOS devices.

One year later: Thinking outside the cube.

It is hard to believe that it has actually been just over a year since I wrote my controversial post about REAL Studio. So what has transpired in the last year?

  • REAL Software has dropped their SQL Server product. (Yay!)
  • ARBP has put on one conference in Colorado, and has another one announced this year in Georgia.
  • The Cocoa framework is still not done.
  • The horrible 3-tier product line still exists.
  • The database server has been replaced a new “Web Edition” build. (*cough* Cocoa is still not done! *cough*)
  • The first Omega Bundle has been executed to a great success!
  • REAL Software’s logo has changed to minimize the cube.
  • They made a report designer.

Last year I wrote that REAL Software should scrap their database server product.  They did, but replaced it with the new “web edition” and embarrassingly tag all of their messages with “Web 3.0 is here”. Really? Again, embarrassing. Developers still are not able to pre-compile their classes for others to use, they must still use “encryption” and it still defaults to the broken encryption format!  It is not hard to default that checkbox to true, in fact, that checkbox should no longer exist. Compatibility with a five year old product is not necessary (v2006R2)!  There still is not a way to drive the IDE.  I was told by Geoff after my post last year that switching to LLVM for the compiler would fix the problem with large binaries.  That, along with Cocoa, still hasn’t happened.

Launch time. Last year I complained about how long it takes to launch REAL Studio, and that hasn’t gotten any better either. My 6 month old MacBook Pro (until yesterday) was top of the line. 2.66GHz Core i7 with 8GB RAM and 7200RPM 500GB drive.  Time to launch Xcode: 2.9 seconds.  Time to launch REAL Studio: 33.4 seconds.  Pre-compiling plugins in the background still doesn’t happen, so if you change your plugins folder, the next time you compile, you will need to wait. That is why I still have empty projects (1 console, 1 GUI, and 1 Cocoa) and I compile them each time I change my plugins folder so when I have work to do, I don’t have to wait. Obviously, by stating my routine, plugins can not be added dynamically yet.

From my “do nots” last year… As mentioned before, the Cocoa framework still is not done… STILL WAITING? REAL Software still hasn’t put on a conference.  The ARBP put on a conference in Colorado last year instead. Geoff was invited to speak, but instead of actually showing up he did a video chat via iChat.  REALLY? At a minimum it was rude, perhaps arrogant. I’m still trying to decide.  Perhaps it’s another “REAL thinks it’s Apple” moment where they don’t need no stinking conferences.  On the brighter side, I think Geoff is actually going to show up in the flesh at the Georgia conference.

What does the state of these things mean for me and REAL Studio?  Well, it’s not looking good.  Over the past few years, REAL has lost some excellent developers, false-started a database server, and extraordinarily raised the price of both REAL Studio and the developer program.  In order to justify their price raise for REAL Studio, they bundled in the database server which we didn’t want.  Then, when they got rid of the database server they replaced it with the Web Edition. Since Cocoa isn’t done, I’m not giving REAL Software any more of my money; they’ve had enough time. I’m speaking with my wallet.  I already allowed my developer program membership to lapse because it honestly didn’t bring in much money.  My REAL Studio license expires on March 5th.

To be honest, I am slightly torn. The OmegaBundle was a great success which means people do want 3rd party REALbasic add-ons and, I have plenty of new customers!  Thank you bundle buyers! You have restored some of my faith in the community!  Does that mean I’m going update my Studio license right away? Heck no. If REAL is still supporting old broken “encryption” from 2006, I think my current version of REAL Studio will continue to work fine for quite a while.

On a side note, have you seen the new Xcode 4? YUM! And WWDC is looking awfully appealing this year.

By popular request, the Omegabundle has been extended until Valentine’s Day! (You’re welcome!)

Omegabundle 2011 for REAL Studio Extended to Valentine’s Day

The vendors behind the extraordinary Omegabundle 2011 for REAL Studio bundle of professional tools for REAL Studio developers announce that their special bundle through February 14, 2011. The vendors include MonkeyBread Software, Pariahware, True North Software, Paradigma Software, DesignWrite, IconPeople and the Componentman Group.

Omegabundle 2011 for REAL Studio includes over $3200 worth of high value development tools for users of REAL Software’s REAL Studio (formerly REALbasic) cross platform development tool set. The Omegabundle includes:

* Formatted Text Control:  Instantly add word processor capabilities to REAL Studio based applications. Sold separately for $150.00.

* Elastic Window. Provides elegant window resizing in your applications. Sold separately for $195.00.

* Mask-R-Aid. A developer’s tool to generate masks for photo realistic icons. Sold separately for $19.95.

* RB Code Reports. Generates reports on software metrics for your REAL Studio based applications. Sold separately for $24.95.

* REAL Studio Developer Magazine. All previously published issues plus one-year subscription, from publisher DesignWrite. Sold separately for $261.00.

* Aspen Icon Set. 80 professionally designed, cross platform compatible icons for your applications. Sold separately for $179.00.

* Valentina Office Server Unlimited. Advanced database and reports server based on the ultra fast columnar database engine Valentina. Sold separately for $1499.

* Franklin 3D Game Engine. Easy to use, multi-platform cross-platform 3D engine for games, simulations and 3D apps. Sold Separately for $299.

MBS Complete. Thousands of new functions that transcend REAL Studio limitations. Sold separately for $259.00.

* Valentina ADK+ for REAL Studio. Embedded local ultra fast database for REAL Studio on Windows, Mac OS X and Linux. Sold separately for $399.00.

REAL Studio is the modern, cross-platform, integrated development environment for building object oriented BASIC applications on Windows, Linux and MacOS X and available separately from Austin, Texas based REAL Software.

Also of interest to bundle purchasers, Paradigma Software has released iValentina for iOS (iPhone and iPad), a pair of apps for the Apple mobile devices that allow remote database users to work with Valentina Office Server, which is included with the Omegabundle 2011 for REAL Studio.

More information is available on http://www.omegabundle.com

The Omega Bundle 2011

Developers using REAL Studio, you can rejoice! In the first of its kind that I know of, there is a bundle of 3rd party add-ons that you can buy, for 80% off of the standard price.  If you were to buy all of these products separately, they would cost you $3200, but for a limited time, you can get the entire package for $399! Even if you only want a few of the tools, you are saving money!

Pariahware is proud to be a part of this original concept for the REALbasic community. Check it out! Go! Now!

Omega Bundle 2011

Omega Bundle 2011

Omega Bundle 2011 for REAL Studio Released

10 Essential Tools for All REAL Studio Developers

(January 07, 2011) — Paradigma Software has joined with a group of professional development tool vendors to produce and release Omega Bundle 2011 for the REAL Studio environment. This limited time package contains $3200 worth of tools but available in this set for $399 – over 80% savings.

Omega Bundle 2011 for REAL Studio brings together 10 essential plugins, add-ons and more, including:

- Formatted Text Control:  Instantly add word processor capabilities to REAL Studio based applications. Sold separately for $150.00.

- Elastic Window. Provides elegant window resizing in your applications. Sold separately for $195.00.

- Mask-R-Aid. A developer’s tool to generate masks for photo realistic icons. Sold separately for $19.95.

- RB Code Reports. Generates reports on software metrics for your REAL Studio based applications. Sold separately for $24.95.

- REAL Studio Developer Magazine. All previously published issues plus one-year subscription. Sold separately for $261.00.

- Aspen Icon Set. 80 professionally designed, cross platform compatible icons for your applications. Sold separately for $179.00.

- Valentina Office Server Unlimited. Advanced database and reports server based on the ultra fast columnar database engine Valentina. Sold separately for $1499.

- Franklin 3D Game Engine. Easy to use, multi-platform cross-platform 3D engine for games, simulations and 3D apps. Sold Separately for $299.

- MBS Complete. Thousands of new functions that transcend REAL Studio limitations. Sold separately for $259.00.

- Valentina ADK+ for REAL Studio. Embedded local ultra fast database for REAL Studio on Windows, Mac OS X and Linux. Sold separately for $399.00.

This package will elevate your REAL Studio programming to a whole new level that will allow you to produce more polished applications, or applications with features not possible using REAL Studio by itself. REAL Studio is the modern, cross-platform, integrated development environment for building object oriented BASIC applications on Windows, Linux and MacOS X and available separately from Austin, Texas based REAL Software.

For more information and immediate purchase visit http://www.omegabundle.com.

Not all Walmart people are bad!

It has recently come to my attention that some people were offended by my previous post.  Hopefully it was a wake up call. Others say that I have tarnished my name in the community.  Well, that is your opinion and you are entitled to it.  A true friend would tell you if you still had food on your face after a meal, or a booger hanging from your nose.  The realization might embarrass you, but how much more embarrassed would you be if you weren’t told?  How would you feel if your friend knew, but didn’t tell you.  Well my friends, some of you have food, some have boogers, and some have both.  :P

While you might not like how I said what I did, I still stand by it.  If you are a hobbyist user of REAL Studio, you are not necessarily the problem; we all start out as hobbyists.  However, if you want to color every other row of a ListBox control, and the first thing that comes to your mind is to post the question “how do I color every other row of a listbox” to the Forum (or NUG), then I’m sorry.  You fall into the problem category.

It has been an “unwritten code” since the dawn of programming, that apparently needs to be written down now.  When you need to figure something out and can’t, precede your question with what you have already tried.

Back to the ListBox example… if you haven’t looked at the ListBox‘s events (to get an idea of what is going on), checked the language reference (to get more detail), searched the forum (because you couldn’t possibly be the first person to ask such a question could you?), searched the NUG archives (for the same reason), or done a search on Google, well, you haven’t held up your fair share of the bargain.  Us “old timers” will come along side of you and help, but we’re not all going to do the heavy lifting for you.  It’s the old adage about teaching a man to fish.

Can we have a serious 1 on 1 chat here for a minute?  Yes, you bought your copy of REAL Studio.  But do you honestly expect it to do everything out of the box?  If so, you are kidding yourself.  Every programming language that I know about has a vibrant 3rd party ecosystem.  Microsoft, as big as it is, does not make every possible control… they let others do it so they can concentrate on the language & IDE.  If you really want REAL Studio, the great product that it is, to survive… you are going to need to support the 3rd party ecosystem for REALbasic.  And right now, it is very ill.  Who makes it ill? The community.  When you ask a question, and someone says, it is in “abc plugin” or “xyz encrypted classes”, don’t complain that it costs money or that you don’t have the actual source code.  So what? You either couldn’t do it or don’t have the time, and the solution does the job that you need it to do.  If you don’t support the 3rd party developers, they will leave because they also have a family to support.

If you want everything to be free, then you should be running Linux and programming in an open source language.

REAL Software, the opposite of love is not hate, it is indifference.

I am worried about REALbasic, or now, REAL Studio. I have been a fan since it was a Mac-only product, running on OS 9, maybe even OS 8. I have been a writer for REALbasic Developer Magazine, spoken at multiple REAL World conferences, was an adviser to the Association of REALbasic Professionals, and am now a board member of that organization. I have loved this product and have been sad and mad at both REAL Software and the community.  The stages of grief:

  • Denial: This can’t really be the state of the community.
  • Anger: Why are they going in that direction?
  • Bargaining: I have had debates with Geoff.
  • Depression: Saddened that I may have to move on from my favorite programming language.
  • Acceptance: This will be bad for REAL Software, as more people get to this stage. I am just about there.

In the past, I have written posts about the state of REALbasic and its community. The longer I observe the community, the more sad & angry I get. I have been using REALbasic since v2. In that time, I have seen REALbasic flourish and now stagnate. It has stagnated for years and is now settling for mediocrity instead of excellence. So, if anyone from REAL Software is reading this article, it is for your own edification. It is not to solely bash the product REALbasic.

I’ll get straight to the point of the problem:  REAL Software favors the hobbyist and allows the professional high-demand customers to flop around on the ground like fish gasping for breath out of water.  The problem with this thought pattern is when these “fish” die, it will be nearly impossible to bring them back.  The side affect of these dying fish is two-fold for those of us professionals still gasping.  The REALbasic ecosystem is unhealthy, and instead of a giving community, it is a black hole of novice questions that could easily be answered by opening the language reference in the REALbasic product itself. 3rd party vendors are ridiculed for trying to make a living by actually charging money for their work. It is no use trying to rationalize with the people in the community — the people there now want everything for free, and don’t want to put in an effort.  This is the class of people that REALbasic is attracting.  Perhaps you are reading this and are having trouble getting a grasp of what I’m saying.  For you, here is a real world example.  Go to your nearest Target store. Look around, study the people… how do they dress & how do they act?  Got it?  Good. Now, go to the nearest Walmart and see the difference.  REAL Software is attracting far too many Walmart class people to REALbasic.

Yes, previously I blamed the community.  But after further thought, it is the company behind the community.  If REAL Software wanted to change the community they could. They have the power to change it, and heal the flailing REALbasic ecosystem.  Here is how they could do it:

  1. A 3-tier product is too complex.  It wreaks of Microsoft’s 7 OS SKUs. Offer the language and sell cross-platform development as an add-on.  Up-sell the the database server if you really must keep it.
  2. Consider dropping the database server. The licensing options are not attractive and there are too many open source alternatives.
  3. Allow developers to pre-compile code (libraries) that can be sold as REALbasic add-ons. This is a much better alternative to the half-baked “encryption” we now have, which has been broken in the past (2006!), and the broken option is the default!  A few years ago I mentioned the latter and watched as a developer made the “new” encryption option selected by default, and check in the change, but mysteriously it was removed by the next release of REALbasic.
  4. Allow an API for the IDE so that 3rd party software can extend it.   Allow tools to analyze the code, insert code snippets, drive the IDE, and extend it.  One of the best tools that I used in VB was from a third party.
  5. Work on reducing the size of the executable created.  When I release a shareware product, I am embarrassed by the size the binary.
  6. Speed up the launch of the IDE.  I have reduced my plugins to the bare minimum that I can. In the time it takes for REALbasic to start up, I can launch Xcode a number of times.
  7. Pre-compile plugins in the background as the developer is coding. When I want to make a build, I don’t want to wait for that.
  8. Plugins should be able to be added dynamically without needing to re-launch REALbasic.  (See 6 & 7 above.)
  9. Give the fanatics the ability to make REALbasic the best IDE & language possible.

And now the do not’s:

  1. We should not have had to wait for Apple’s removal of Carbon APIs before Cocoa APIs were taken seriously. Get it done!
  2. Stop canceling the REAL World developer conferences!  No, we don’t want mini-regional PR conferences. We want one big conference where we can gather with like minds.
  3. Customers do not want to hear about “small company” & “limited resources”; we want solutions. If REAL Software can not provide them, it would be nice to be able to point them to a 3rd party that had the ability because the IDE was able to be extended.
  4. You are not Apple! Stop trying to be everything to everybody.  Concentrate on the core of REALbasic & do it well. Let others build, say, a report writer.

If you are still reading this, you probably see a theme. The IDE needs to be opened up so that REAL Software can work on the language & IDE. Power users need more tools. Until then, I fear for the future of REALbasic as more of the fish die when the Acceptance stage is reached.  For years I thought that Xcode and Interface Builder were too complicated. That may have been the case at one time.  But it isn’t anymore and REAL Software should be concerned about their Mac-only customers.  After spending the past few months in Xcode, it is not nearly as bad nor as complicated as I had thought. It looks better and better every day.

This has been a loving warning letter to REAL Software…  from a long time customer, supporter, and evangelist who has been pushed out of his comfort zone due to your corporate decisions.  For your sake, I hope you take to heart what has been written.  If changes aren’t made soon, it will stop hurting me when I launch REALbasic, because I won’t be launching it anymore.

Do you know which OS your customers are using?

Do you know which OS your customers are using?  Both Panic and The Omni Group do.  I think this information is important, if not a curiosity regarding the state of the Mac OS.  It is astounding to me that people are still using Mac OS X 10.3.  As a struggling college student I didn’t upgrade my hardware often, in fact, I’ve never owned a G3 Mac nor a G5 Mac.  However, I always kept my OS up to date.  I’ve made it a policy here at Pariahware to support the current OS and the previous OS for desktop operating systems.  As of this writing, for the Macintosh that means OS X 10.6 (Snow Leopard) and 10.5 (Leopard).  For Windows that means Windows 7 and Vista.

When one is developing software, it is important to decide what platforms will be supported.  Sometimes the requirements placed on software are only placed there for support reasons.  Other times the requirements are there because of dependencies.  For example, one of Pariahware’s products, Doc Merge, requires Word 2008 on Macintosh and Word 2007 on Windows.  Why? Because the scripting functionality for Mac won’t work on the previous version, and the other scripting for Windows will throw errors if 2007 isn’t installed.  Even though some people didn’t meet the system requirements, they were trying anyway, not that I blame them.  But, the error reporting mechanism we use would give us strange errors telling us that requirements weren’t being met.  Now, if the user is doing this willingly, no problem.  However, if the user was unwittingly installing the software it looked bad for Pariahware.

To alleviate this problem, in the latest version, I added some checks to Doc Merge at start up.  So, on OS X it checks to make sure that the OS is 10.5 or 10.6.  It also checks to make sure that Word 2008 is installed on the system.  If either of these doesn’t qualify, the user is told with an apology which requirement has not been met and the application quits.  For Windows, the application checks to see if the user is running Vista or 7, then it checks the registry for Word 2007.  Again, if one doesn’t meet the requirements a similar dialog is displayed.  While this may seem draconian to some, the error reports for the latest version have quit coming in. To me, that shows an improved user experience, and in turn, shows an improved quality in the product.  Another one of Pariahware’s products is File Stitcher.  On Windows, a check was added to see if QuickTime had been installed because File Stitcher required it.  Since iTunes is ubiquitous it is rare to find a Windows system without QuickTime, but it can happen.  Macs come with QuickTime so it is not an issue.

To sum things up, if one is developing a product with certain requirements for reasons other than support, add checks to your applications to improve your user’s experience with your product.