Archive

Archive for the ‘Opinion’ Category

Dear Idiotic Developer

February 3rd, 2012 11 comments

Dear Idiotic Developer:

OPC is our internal slang for Other Peoples Code.  I’ve talked about this before but just in case you’ve never been here before, OPC projects are always the most dangerous kind of projects to work on.  They can quickly become a rats nest and cause no end of grief mainly because you have to figure out what the original programmer (or programmers) was thinking.  Because it’s a Friday afternoon and I’ve been up to my elbows in digging through your OPC project all week here is my list of complaints:

  • Poor variable names:  Variables such at ‘tmpd’ and ”bDbDl” don’t tell me anything.  Long variable names aren’t going to kill you and using Real Studio’s autocomplete will (usually) make this a non-issue.
  • Three Letter Acronym (TLA) Variable names:  Stop being lazy and use some real words.  Obviously you didn’t expect someone else to read your code in five years.  If I ever find you I promise I will mock you.  I hope you are doing a better job of naming variables in your new job than your last one!
  • Poor method names:  Methods named “SelAcc” and “DoWork” don’t give me any type of clue on what it does – especially when you have no comments in your code.
  • Nested If-Then Blocks from Death:  There are times you need to do this but it’s been my experience if you’ve got more than 2 or 3 at any given time your method is too long and should be broken up into smaller methods.  Keep it simple.  Complexity kills.
  • Multiple nested loops from death:  See nested if-then blocks from death above.
  • Long methods:  This kinds of goes with the previous two.  If your methods scroll and scroll and scroll you have a problem.  If you had a problem in that method (i.e. it throws an exception) good luck finding the problem.  Break it up into smaller chunks of code.  Perhaps you can take the 100 lines of code you have the first part of your IF statement and break that out?  Just sayin’.
  • Controls using the default names:  Really, you expect me to figure out the difference between TextField1 and TextField11 by making me look at the UI?  Next time, please use a name that will mean something to you in code.
  • Controls using generic names:  On the flip side you used a name different than the default one.  Good for you.  Perhaps next time you can use something other than ‘s’ for its name because it took me a while to figure out it was damn text field rather than just a plain string.
  • Constant names versus property names:  Quite ingenious the way you used the same constant name as a property name so that the IDE doesn’t help me in autocomplete.  Thanks.  That’s ones special.
  • Stop trying to be fancy:  I get it.  You went to whiz bang college and learned some cool programming tricks and techniques and you’re pretty smart.  Remember, you’re writing for your boss/client/person who signs your paycheck so don’t forget that you’ll eventually move on/get fired/hit by a bus.  Be nice to the poor bastard that has to learn your code after you.  Assume they do not have your skill set.
  • No comments/documentation.  Of course given all the previous bullet points this one isn’t surprising.  Would it have killed you to put a sentence – ONE SINGLE &*^!@% SENTENCE – describing what a method does?  If you hadn’t done all of the above items too that’s all it would have taken but instead you have ZERO comments in 10,000+ lines of code.

But, I must say thanks for reminding me why I don’t like working on OPC projects.  You’ve taught me that just saying “no” in future projects will make my life easier and less complicated.  My wife, kids, and dog will like me better if I don’t take another OPC project.

I think if I had any advice for programmers just starting out.  Spend six months fixing Other Peoples Code (OPC) and see what drives you absolutely bonkers.  Then, and only then, can you start writing your own code.  You’ll hate it but it will give you some very valuable experience early in your career, on the things not to do.  Being kind to the developers that come after you is just as important and by doing this you’ll know.

Ultimately I’m a lazy programmer.  Not that I don’t do the work I just don’t want to work that hard at figuring out old code.  If you name your variables and methods properly and consistently, keep your methods short, and if you write minimal comments it’s not that hard to figure it all out later.  Having to guess at someone else intent makes my head hurt.

Sincerely,

Bob

So dear readers what OPC foibles drive you crazy?

Busy Month

January 25th, 2012 4 comments

I haven’t been posting much this month for a reason.  This is, in all seriousness, the busiest January we’ve ever had for Real Studio consulting (and we’ve been doing this for over ten years!).  All three of our full-time Real Studio developers are maxed out on projects and not just on single large projects either.  We all have multiple projects awaiting our attention as soon as we have the time.

Being that busy is always a good thing-bad thing proposition.  My backlog of Real Studio training videos just gets bigger by the day.  Oh well, they’ll wait until I’m slow or want to do something completely different for a few days.

I’ll admit that I have been very critical of Web Edition – especially when it first came out.  I felt that it was released too soon with obvious bugs and holes in the frameworks, wasn’t adequate testing, and was without features that were necessary.  A lot of that has changed recently (though WebMoviePlayer still burns a hole in my stomach) and we’ve found that most projects these days have some sort of web component in them.  Web Edition fills that need for us and while it may not be the best, fastest, scalable, or comprehensive web platform to deal with it has increasingly become a part of our standard package.

I mention this because all three of our developers are working on projects where Web Edition is used to some extent in conjunction with the desktop apps.  I think it safe to say that about 1/4 of all our Real Studio work is using Web Edition.  Not bad considering it wasn’t really usable until mid-Summer 2011.

Web Edition is much like Real Studio desktop apps.  You have limited options and there are a bunch of compromises that you might not be able to live with.  If you can live with the compromises, development is very fast.  While deployment can be kind of a pain it seems that most of them revolve around three or four issues (FTP transfer, file permissions, 32 bit compatibility libraries, and the .htaccess file).  The fact that you can reuse much of your code between desktop and Web Edition is icing on the cake.

Anyway, that’s what’s up with us.  How is 2012 starting for you?

Beginners Don’t Stay Beginners Very Long

January 4th, 2012 16 comments

There have always been Real Studio users that have been critical of the company and their products.  I have been known to throw a fit every now and then when I get bit by a bug.  There are currently several users in the Real Software forums that seem to be overly critical of the company these days.  These users go out of their way to hijack threads and tell everyone what a crap product Real Studio is and how Real Software is screwing everyone over.

I get their anger.  I really do.  I’ve been using Real Studio for ten years now working on a commercial products for clients all over the world.  Some of those are private apps, some are vertical market commercial apps and some are mass market  commercial applications.  I have probably been bitten by a bug in nearly every release and on every project.  It sucks but thankfully I’ve been able to find workarounds to most and come up with alternatives to others.

Don’t get me wrong, I’m not happy about bugs.  As a developer dealing with bugs is part of the job.  When I was an electrical engineer I dealt with hardware and software bugs ALL the time.  Try explaining to the client why a 1500 degree furnace stopped working because of bad firmware or why you stopped an automobile assembly line because a PLC glitch  When I was doing Visual Basic 6 development my code was a masterpiece of workarounds.  There is no excuse for bugs but they happen.  It’s part of my job to identify them and work around them.

One Real Studio user sent ME an email explaining how crappy Real Studio is.  It was reasonably intelligent email from someone who felt very passionately about the subject.  It was obvious he had a history of using Real Studio as a consultant.  I disagree with him on most every part of his email but I can sympathize.  Am I becoming to ingrained to ‘just dealing with it’?  I dunno.

Part of the problem, I feel,  is that Real Studio is geared for beginners and hobbyists.  That’s great and it’s how many long time users started.  Beginners don’t stay newbies very long if they stick with the product.  Soon enough they get past the initial learning curve and figure out how to ask the questions they couldn’t even formulate before and this is where the experience sometimes falls apart for many Real Studio users.

It feels sometimes that RS is solely interested in getting new users (and hobbyists at that).  New users are not a bad thing (in fact they are critical to any company).  However, isn’t retaining existing customers even more important?  You’ve already done the hard work in getting them to buy into the platform.  All you have to do is find the way to get them to stick with the product and ideally find ways to get them to upgrade to a higher priced product.

The Personal license is so cheap it’s practically giving it away at $99.  The Professional version is $299 so for every Professional license you have to get three Personals.  The Enterprise Edition is $995 so for every one Enterprise license you need ten Personal licenses.  Now, I don’t know what the renewal rate is among the licenses but I would suspect that Pro and Enterprise users renew more often Personal license users.  I know from a business standpoint my toolset is part of the cost of doing business so why NOT keep upgrading until I no longer use the tool?

My point is that Pro users are valuable and Enterprise users should be the most valued customers.  Instead, many of us feel abandoned for a variety of reasons.  As an Enterprise user I really like being able to use Web Edition, and use the product on all three platforms.    IDE Scripting, Build Automation are nice, but I could live without them.  I use the Profiler maybe once a year so it’s a feature that is wasted on me.  What makes the Enterprise edition worthy being an Enterprise product?  What are the compelling features for people to upgrade to Enterprise?  Not much at this point.

I’ve been doing this for ten years and I’ve been asking for the same things over and over again:  a grid component, a calendar control, date and time controls, less flickering in Windows, and finally reporting.  I lobbied hard for reporting and I feel like a fool for doing so since the reporting tool in Real Studio isn’t what I need (nor can use).  Instead I feel like I got a checkmark on a marketing page.

Granted, there are alternatives to many of the things I mentioned.  That’s not the point.  Instead of giving me the things I could use, today, in selling the product to my clients, I’m getting a new User Interface that will probably have some major bug when introduced that will make it less than ideal to use.  Did I ask for a new UI?  No.  I could think of a dozen things I’d like to see BEFORE a new UI comes down the pike.

So my hope for 2012 is some focus on features that Pro and Enterprise users need.  You can debate all day long on what those features are but the fact no one from RS has ever seriously asked me (or any other pro developer that I know of) what I need.  That says what they are focusing on instead.  Perhaps with some true Enterprise features more people would purchase Enterprise.

Well, but then again, I’m a long time Enterprise user and probably a bigger pain to support than those ten Personal licenses.  Happy coding!

Categories: Opinion, REALbasic Tags: , ,

Bugs Are In The Eye of the Beholder

December 29th, 2011 4 comments

The other day someone on the NUG list posted a somewhat lengthy message on Web Edition bugs. They were asking “why was Web Edition so buggy after a whole year?” Here is my response (mostly the same but with some changes).

Sure, Web Edition has more than its share of bugs. Like all bugs, however, it all depends upon the beholder.  What bug causes the most pain for RS’ is the one that gets fixed first.  I’ve seen a lot of the same things the community has discovered and have just worked around them (where I can).  I was using WE in a commercial project during the first beta ( a year ago) and while we got it to work it wasn’t very good.  That one project probably generated over a hundred feedback reports.  In my opinion WE really hasn’t really been usable until 2011 R3.

Part of the problem, in my opinion, is that RS has NOT created enough Web Edition applications for themselves.  If you don’t thoroughly exercise the framework you just don’t see the things you’d see in a big, complex application (like we are creating).  There is ONE real world example of Web Edition on their website.  While I don’t know how many examples are ‘enough’, I know that one is definitely not enough.

Web Edition exposes the same problems that we all see in Cocoa, Carbon, and in the IDE on a regular basis.  Unless RS experiences the pain it won’t get fixed in a timely manner because it’s not as important to them.  The Reporting editor and generator and the database editor are but two examples of things in the IDE that RS doesn’t use in ANY of their products. It shows because there are gaping wholes in usage that make them unusable for many developers.

RS takes pride in saying they eat their own dog food because they use Real Studio to make Real Studio.  Admirable, but they tend to be on a restricted diet since they don’t eat everything on the menu.  They rarely change the menu’s for the IDE so the Menu Editor hasn’t seen many changes or enhancements.  As far as I know, they don’t use a database in the IDE so I see no reason why they’d be using the database editor on a regular basis.  They don’t do much with StyledText or Movies so its no surprise that those classes are minimalistic (at best).

Since the IDE has no need for date pickers, they have never provided one.  Likewise, the Listbox is good enough for the IDE while we’ve been asking for a more powerful grid component for years.  Full RTF support?  Forget about it because StyledText is good enough for the IDE. A better toolbar control? Well that one’s a bit of a mystery since the IDE is obviously using something different than what they provide to us.

My point is I’m not sure why anyone would be perplexed about long standing bugs.  Sure, they’re painful to you and me (and my clients), but they’re not (as) painful to RS.

Lobbying the community to get Feedback reports higher in the list is about the only way to realistically get a bug fixed. But even that is a crap shoot as there are quite a few bugs (not feature requests) very high on the list that have been there for a long time. So the only thing conclusion that I can come up with is that the bug that all the rest of us are seeing isn’t painful to RS so therefor it isn’t a priority for them.

This is my opinion as a ten year Real Studio consultant.  I know and respect most of the engineers and staff at RS and I think they do a remarkable job.  However, I think as a company they mostly ignore those like me (an Enterprise user that ponies up thousands of dollars per year) and focus, almost exclusively, on the hobbyists (that bring in a hundred dollars a year at best).  If they could make me happy(ier) the hobbyists would come along anyway (see history of Visual Basic).

Bugs happen in every software product. I remember grousing about Visual Basic bugs when I was a big VB6 user. I know that my code back then had plenty of work arounds for bugs in their API. There is no doubt that Microsoft had more developers working on the product (as a whole) than RS has working on Real Studio. There’s also no doubt that VB6 has a considerably larger user base than Real Studio. I feel that this resulted in more workarounds being posted and more alternate solutions.  The reverse is that our smaller community doesn’t have as many solutions and documented workarounds so it feels worse but I feel that it isn’t.

Anyway, that’s enough on my opinions about bugs and such.  Have a good New Year and be safe. Happy coding!

Time Waster Feedback Reports

December 14th, 2011 4 comments

Someone on the beta list asked a good question the other day about things that cost you time when using Real Studio.  It’s a really good topic because some really good ideas come out of the brief discussion.  We were kindly reminded that there was no current beta and the topic is more general so I’m bringing it out into the light of day for those not on the beta list.

I have created a Shared Folder in Feedback where you can put your “Top Time Wasters” Feedback reports into for the world to see.  The Feedback link is <feedback://subscribe?folder_id=34>.  There currently about 20 reports in the shared folder that are worthy of your perusal.  A few examples:

  • Plugin compiling glacially slow (currently ranked 768th)
  • The compiler repeatedly prepares plugins.
  • Edit Code button should jump to exact position
  • Add version identifier to plugins
  • Debugger:  Visually mark values that have changed
  • Debugger:  Watchpoints (currently ranked 264th)
  • Debugger:  Show variable values as tooltip when hovering over it (currently ranked 11th)
  • Add Debug Run Default per project (currently ranked 1360th)
  • Standardize Format should be automatic

These are really good ideas that could make my use of Real Studio more efficient.  Feel free to add your own productivity enhancement ideas.  With a new IDE user interface coming there’s no guarantee that RS will use any any of these ideas but you can at least give them some feedback on what you want to see.  The fact that some of these are ranked already says that some already agree with the user who posted it.

My own personal feeling is that the debugger is woefully incomplete.  It needs some redesign and some features added to make our lives easier.  An old ARBP survey asked about things that people wanted and the debugger was a very high want after more powerful grids.

Feel free to add your own in the comments section below, but what would be better is creating a Feedback report and putting it in that shared folder.

Real Studio 2011 Release 4 [u]

December 6th, 2011 10 comments

Real Studio 2011 Release 4 was released this week by Real Software.  This release marks a number of significant changes that might affect how your application behaves so take care when making the decision to upgrade (as you should with all new releases of your development environment).

The first significant change in R4 is that it no longer compiles for PowerPC (PPC) which means that Universal Binaries can no longer be built.  Mac OS X versions 10.5 (Leopard) and better are now supported.  I have not tested this premise but your app might run on older versions of Mac OSX, please let us know your experience.

The R4 release sports a huge number of Cocoa fixes.  Cocoa is now mostly usable but there are still bugs and oddities in this version.  Drawers, StyledTextPrinter and MoviePlayers do not work in this release.  Drawers are not used (much) in Mac OS X any more and not many use StyledTextPrinter but the MovePlayer could be a significant problem for quite a few RB developers.  However, if your app makes use of these controls and classes you will not be able to upgrade and will have to wait for a future release of Real Studio.

You REALLY need to start testing your apps in Cocoa (if you haven’t started already).  You are bound to find something that RS hasn’t fixed yet, or, at a minimum, requires some additional optimization.  One bug that has hit us particularly hard in trying to port one of our apps to Cocoa happens when trying to access a toolbar with a separator.  When accessing it an un-trapped exception occurs which means your application goes “poof” and there is nothing you can do to catch it.  <feedback://showreport?report_id=18971>

Another Cocoa bug that’s affecting some of our projects is the graphics object.  If you use FillRect or ClearRect on a picture that ISN’T new it is extremely slow.  So, for example if you have an overall picture and you’re just updating a section of it, it will be very slow.  <feedback://showreport?report_id=18915>

Cocoa really is different than carbon and some things that appear to be bugs aren’t necessarily so.  For example, all fonts in carbon apps can be made italic.  In Cocoa not all fonts have an italic version so it won’t render it in italic’s regardless of the setting.  Carbon just happened to force an italic version regardless of the font whereas Cocoa won’t.

Web Edition has changes too.  The first is that all Web Edition projects now require the app.ApplicationIdentifier to have a value.  The IDE will no longer allow it to be blank and if it’s not filled in when opening an older project one is added for you (so be aware of it).  This is important because the each Web App running on the server must have a unique identifier.

The WebListbox received some much needed attention in this release.  Column widths now work properly (yay!) and no longer shows an extra column.  A new boolean property, called Multiline, was added to match desktop listboxes more closely and when set to true, each row will expand automatically to fit all the text.  If false, text is truncated to one line with ellipses if it’s larger than one line.

The WebToolbar has some new style options available.  These are not documented but You have control over the WebToolbar background, button, disabled button, item, toggled style and toggled disabled styles.  You can make some interesting combinations with these new style options.

Dynamic Constants in Web Edition can now be retrieved by language.  The WebPicture class now has 3 new constructors.  Unfortunately, you still can’t use dynamic constants like you can in the desktop editions so you have to code this manually.

Lest our Windows brethren feel left out there are a number of significant bug fixes in store for them as well in this release.  A number of memory leaks were fixed.  Drawing of primitives (rects, ovals, etc) are no longer off by a pixel (yay!).  When GDIPlus is enabled, Windows apps can now draw anti-aliased.

One of the biggest changes in R4 is that pictures and colors now support alpha channels and allow you to set their translucency.  This is a big deal for any plugin authors that deal with pictures as they will have to rewrite their plugins to check for the alpha channel or lack thereof.  It promises to be a nightmare for them since older versions or Real Studio won’t support it but newer ones will.  Be aware of this change if you rely upon 3rd party plugins that use, return, or otherwise manipulate graphics.

Be aware that the database plugins included in R4 are NOT backwards compatible.  Like many Mac developers I have multiple versions of Real Studio in the same folder so I can have the same plugin set across versions.  If you try to run an older version of Real Studio using the R4 database plugins Real Studio will fail silently.  I expect numerous reports of older versions of Real Studio to suddenly start ‘failing’ because of the change to the plugin format.

I’ve been using R4 since practically the first alpha.  I am converting my training videos to work in Web Edition and I’m fast approaching release.  It wasn’t until this weekend that I found a bug when saving using the version control format.  If you use the WebToolbar and assign icons to a button the changes will not get written out properly <feedback://showreport?report_id=19231>.  This really sucks because I have to go back to binary format – again.  Sadly, Web Edition has been rife with version control format bugs since the very first release and these woes continue.  It is obvious that the RS developers do not use version control format when testing Web Edition features.

Unlike many Real Studio releases, Release 4 is a huge bug fix release (well over 200).  The number of Cocoa changes is significant and developers should start porting and testing their apps in Cocoa.  It is really important for you to do so.  As with many releases there are some changes you might not be able to live with and some changes have been made in the background for future changes.

At the Real Studio Database Days training in Frankfurt Germany in early November, Geoff Perlman, CEO of Real Software, said that 2012 Release 1 would probably be the first release where Cocoa would be enabled by default.  What went unasked was whether or not the IDE itself will be a Cocoa application or not, but I would presume that it will be.  Regardless, the march to full Cocoa support goes on and you should be preparing for it sooner rather than later.

Happy coding!

[Update:  The WebToolbar styles are now in the online Wiki]

Real Studio Developer Nov/Dec 2011

November 12th, 2011 No comments

Issue 10.1 of Real Studio Developer came out while I was in Germany last week.  In my regular BKeeney Briefs column I penned an article titled “Telling The Story of An Application – Getting your client to communicate with you”.

I also do an interview with Marc Zeedar about…wait for it…me!  Trust me, you’ll find out more information about me than you ever really wanted.  Imagine my surprise when I went the conference in Germany when people said, “Huh.  The picture in the magazine is a few years old, right?”  Um…thanks?

Also in this issue:  JC Cruz has an article on getting started with the Report Editor in Real Studio.  Marc Zeedar walks us how he used Real Studio to make an app for his iPad.  Paul Lefebvre’s two columns cover Large Database Objects – working with pictures in databases, and Easy Web Services – create a web API.

Check it out.  If nothing else you can use the picture to scare away mice and small children.

 

The Value Of Conferences

November 2nd, 2011 3 comments

Like many developers I’m not exactly the most outgoing person on the planet.  I guess that would make me a classic introvert.  However, I always get jazzed up when meeting new people at conferences.  It’s always fun and exciting to hear their story.

This week I’m in Frankfurt Germany for the Real Studio Database Days training sessions sponsored by MonkeyBread Software.  Tonight was a get together for drinks and dinner at the Hotel Amadeus before training starts tomorrow bright and early.

The connections you make in these conferences are invaluable.  Already, several people have identified areas that they are having particular problems with in Real Studio.  Maybe I’ll be able to help or, maybe, I’ll be able to reproduce their problem into a small project that I can send to Real Software.  I also have no doubt that I will learn much more than I help others.

It’s been a long day.  More after tomorrow.

Categories: Opinion, Personal, Training Tags:

Steve’s Legacy

October 6th, 2011 1 comment

Steve Jobs changed my life – literally and figuratively.  It’s been a long journey even though I feel like it’s just getting started.

My first exposure to an Apple computer was my friend Mike.  His parents owned a machining company and were using an Apple II for a bunch of business things.  We used it for games – and my, oh my, what fun those games were.  Of course they’re pitiful compared to todays games but they were outstanding for their time.

Because I couldn’t live and his parents business (though I mightily tried) I found other sources.  Even though I was in high school, I got permission to use the one (!) Apple II at the elementary school (my school was small – it was all one building) where I did my first programming by creating a Dungeons and Dragons character creator using Apple BASIC.

Then I went to college where I was surrounded by DOS machines.  It was an engineering school and these things were everywhere.  When I got drafted to publish a parents newsletter for my fraternity I discovered the two little dinky Macintosh Plus computers in the corner of the computer lab, a LaserWriter printer, and a piece of software called PageMaker.  My love affair with the Macintosh began.

And it continued to grow.  I learned PageMaker, FreeHand, and Persuasion like the back of my hand.  I worked for a company called MacTemps and made good money using those skills and worked my way through college.  While my engineering contemporaries were doing their reports and graphs by hand I was turning them in on laser printed paper.  What took them hours to prepare took me one.

I remember vividly my first Mac Plus and my first Mac SE.  I was passionate about those Mac’s.  I have no doubt my fraternity brothers were bored of me extolling the virtues of using a Mac.  Well, I was right, wasn’t I?

I went to a Mac users group conference in Ann Arbor, Michigan (circa 1988) where I saw my first 1 GB hard drive the size of a suitcase.  We were all wondering how we’d fill up a hard drive that size.  This is also the same conference where I shook Bill Gates’ hand just before he walked on stage to deliver the keynote speech (at a Mac conference remember).  Microsoft wasn’t always the anti-Apple company – MS Word and Excel were pretty slick back in those days.

Since college I’ve owned many Mac’s.  A Mac II LC (the pizza box Mac), probably something from the Performa line, a G3, a G4, a G5, several of the all-in-one iMac’s, a PowerBook laptop, a G3 laptop, a MacBook Pro, and a MacBook Air.  These machines helped convert me from an engineer to a programmer.

In my early consulting days I had a crappy Dell in the corner simply so I could use Visual Basic and Access.  Now days I simply fire up VMWare or Parallels (depending upon computer) and use Vista, Win7, XP or any number of Linux distro’s.

I resisted the iPod, at first, thinking it was a crappy name and Apple wasn’t an electronics company.  But when the iTunes music store showed up it changed my mind and how I bought music.  I now buy more music without ever leaving home.

I had resisted using a cell phone for years but finally gave in when I got married.  My cousin gave me an old HandSpring Palm phone which lasted for years.  When the iPhone came out I willingly jumped in because I figured it had to be better than the Handspring phone.  My oh my, was it ever.  I think we’ve owned every generation of phone since and I don’t leave the house without checking to see if I have keys, wallet and iPhone.

Like the iPod before it, the iPhone changed the way I purchased software.  No longer did I need to go to a store to browse software boxes.  Now, I go to an app, browse the selections, read reviews and then purchase and download it practically instantaneously.  What a game changer.

When the iPad came out there was never any question of getting it.  We were already big iPhone users and to start with several hundred apps without buying anything?  It was a no brainer.  No reason not to get it.  It’s now used daily.  It goes with us on trips (of any type) and like the iPod before it, it’s changed the way I consume books.  I now purchase books without ever going to a brick and mortar store and I read more than I did before.

So this is a big thank you to the man I consider to be the biggest tech visionary of my time.  He started from humble beginnings and created, several times, new markets where others followed.

I could certainly argue that Microsoft would not be the company it is today without the Macintosh influencing how it did Windows.  The music industry resisted online sales until Apple proved they could make money on it.  The entire cell phone industry is undergoing a complete transformation now because of the iPhone.  The tablet market is undergoing a radical shift because of the iPad.

And that’s just Apple.  Steve bought a little company called Pixar that did computer animation.  It had a string of blockbuster movies that weren’t just about the animation it was about telling the story.  Many imitators have followed.

Even before that, when he got pushed out of Apple, he never stopped trying to think outside the box.  He helped found NEXT computer.  It was an awesome computer for it’s time but too expensive and it never took off.  But it was a NEXT Computer that was the first web server.  And it was the NEXT operating system that Apple used to reinvent itself after Steve came back.

Steve Jobs unique.  He was an a**hole to some and inspired intense loyalty to others.  His leadership style was unique and he was a consummate salesman showing us not what we asked for but what we were really looking for.

He died too young.  Or, he died after accomplishing much more than most.  He did ‘insanely great things.’  And we will miss him.

My Awesome Nigerian Trip

September 27th, 2011 7 comments

(Forgive the rambling on this one as there are many thoughts running through my mind!  It’s hard to put it all in to words because every time I think of one thing it reminds me of another!)

It’s been an interesting 10 days.  If you follow the blog at all you know I was contracted to train a group of developers on Real Studio.  The location?  Nigeria.

Most of the people following me thought it was a joke.  People really go to Nigeria?  On purpose?  The answer is yes!

I’ll start by saying that my week in Nigeria exceeded all of my expectations.  I went in with very low expectations so it’s nice to be pleasantly surprised.

Like many of my fellow Americans my view of Africa is skewed.  As a child of the 70′s my first glimpse of Africa was the old TV show Tarzan.  I don’t watch much modern television but the images of African on the Discovery Channel and the news networks still left me with the mindset of African being filled with mud buildings with thatch huts, dirt streets, lots of poor people, and crime everywhere.  Sally Struthers infomercials also cast a pretty poor view on African (not that she’s wrong but it’s not what my experience was).

My visits was to Lagos, Nigeria home of 9 million people (possibly much more).  It is a Democratic Republic modeled after the United States but only since 1999 when military rule ended.  Almost to a person, the Nigerians I talked to criticized the government for having a lack of leadership.  I find it ironic that we, as Americans, are having similar conversations about our 200+ year old democracy.

Lagos, in general, is a pretty modern city.  It has the longest bridge in Africa at 11.8 km that was built in 1990.  While it might not be up to American standards, it’s in good shape with only a few potholes.  If only the rest of their highway system was as up-to-day.  Unfortunately, the rest of the paved highway system is riddled with potholes though the ride to and from the airport was by far the worst, in my opinion.

Once you get off the paved roads you get to dirt roads (even in the city).  This is where the big, vehicle swallowing potholes exist.  Drivers avoid them at all costs so this means vehicles making wide swings around them.  If this means going into the oncoming traffic, well, that’s okay too.

The traffic is pretty bad on the highways and side streets and are packed during the morning and evening rush hours.  While there are traffic lights on Lagos Island (which really isn’t an island from what I gather) there are very few, if any, outside of that area.  Even the ones that ARE there don’t mean much as drivers blow through the red lights.  The highways might be marked for 3 lanes, but during the rush hours there are easily 5 lanes of traffic.  Round-abouts seem chaotic but there is an odd rhythm to merging.  Drivers use their horns on a constant basis.

Toyota and Honda vehicles are everywhere.  To a lesser extent there are Misubishi, Hundai, Volkswagon, and Mercedes Benes.  What is glaringly evident is there are NO American cars, of any sort, in any condition, anywhere to be found.  My only conclusion is that the American car companies are ignoring the Nigeria.  Is this true of rest of Africa?  I don’t know but it’s a shame Ford, GM, and Chrysler aren’t even trying to compete here.

Lagos has a lot of issues that it needs to solve.  Lack of education of a population that averages 19 years of age will haunt them for a long time.  Public education is not very good and those that can afford it send their kids to private schools.  Not everyone has access to running water and drinking water is even scarcer.  Bottled water is a necessity and street vendors sell water (of unknown quality) from big containers they push around in carts.

Power is inconsistent, at best.  This forces those that can afford it, to run generators.  For a business it’s a necessity to have one since power might be off for days.  The power poles in residential areas are a mish-mash of electrical cables strung up haphazardly.  There was more than one occasion where I saw sparks showering down from a pole.  In my opinion, the only way to fix this is to start over from scratch and build a new grid – an audacious project.

The police are not necessarily your friends.  I went to a busy market one afternoon and we were pulled over by the police.  As I was saying to a friend, this might be the first case I’ve ever been pulled over for “driving while white.”  After the initial indignation and some arguing my host and driver apologized profusely and asked what the fine was and we ‘got off’ for 1000 Nairra (~ $10 USD).  I saw plenty of other instances where the police were taking ‘fine money’ on the spot both in the street and in the airport.

The company I was doing the training for employees a lot of people.  Their offices were as modern and efficient as most I see in the states.  They make a variety of food products and during a tour of their facilities I was impressed with how clean they were and were comparable (mostly) to food processing facilities I’ve worked at in the States.  I was amazed at how many people worked an average ‘line’.  We’d most likely have one or two people running a line where they would have six but my guess is those six work for much, much less than what our two Americans would.

The IT folks I was doing the training for were pretty sharp guys.  They caught on to Real Studio very quickly and by the end of the week were using Real Studio to create a simple CRUD application for invoices (with relational data) using both the Desktop Edition and Web Edition.  They were pretty happy with it its ease of use and its ability to create any type of application using the business logic they wanted (rather than the enforced business logic of their current tool).

The Nigerians working for this company represent where the country could go, in my opinion.  They have a stable job, learning some valuable skills, and have a thirst for more.  They have extra money at the end of the month that they can spend on things.  They want their kids to have a better life than what they’ve had (don’t we all!?).  This sounds a lot like middle class America.

Obviously the company they work for is investing a ton of resources into the African continent and it’s paying off for them.  They sell their product in most of African (which is 50-some countries in total).  If the trend continues, this burgeoning middle class will be a force to be reckoned with in the future.

The company I did the training for deals with a lot of guests from other parts of African and Europe.  They had protocol people pick me up and drop me off at the airport and helping me through Nigerian customs.  They had a guest flat with a cook (who in my opinion could be a top chef in the states).  They also provided a driver (thank God giving the road conditions).  I say all this because I never once, felt unsafe in my trip (okay the police shaking us down for money made me a little nervous).

I had an enjoyable experience.  I didn’t get sick on any food and I was in air conditioning the entire time.  If I was invited to go to Nigeria again would I?  If it was for a company in Lagos that is used to hosting foreigners and expats I’d do some checking and probably say yes.  Would I do work again for this same company?  In a heartbeat.

Again, sorry for the rambling account.  There are just SO many differences and similarities that it’s hard to remember them all.