Monday, October 26, 2009

SUD Detectors

In the world of software - there is a whole set of lingo behind-the-scenes. Most software developers I know (and this is a GROSS generalization) are the type of people that are.... ehem... well... are the sort of people that regard the binary "purity" of a computer that does exactly what you tell it to be preferable to the sort of unpredictable behavior found in... well... actual live people.

If you ask 100 hard-core programming geeks what their LEAST favorite thing about their job is - I bet 98 will say "user interface."

After all, leave it to the "user" (said while usually speaking through gritted teeth or punctuated with a small bit of spittle) to "screw up" a perfectly good piece of software.

More times than most people will probably think - the feature requests from non-technical people are greeted (internally) with rolling-eyes and finger-and-thumb-to-the-forehead "Stupid User Detected" (SUD) motion.

And, to be fair, the programmers are mostly right.

There is no "Do My Work" button; no, the software CANNOT pick up your dry cleaning and have your car washed... ok, well maybe in the 3.0 version... but that's not the point!

The point is that these "ignorant users" - who should not be allowed to even USE computers - dare to question the unerring judgement of US - the programmers - charged with the holiest of tasks - the optimization and automation of the lowly jetsam heaped upon the mere mortals - neigh - slaves - to process for the good of the machine...

But, I digress.

The point is - that not all IT guys are Nick Burns from SNL.

Wait, let me qualify that... most are. Especially if they are PC IT guys.

Over the past 2 months, I've found a difference. It's called a Mac. I've found that IT guys who support the Mac, are, well... more like the Mac guy on the Apple ads than the PC guy in the Apple ads.

They understand that users are not the "great unwashed masses" - they are, well... human. And, as humans, they make mistakes, have some unrealistic expectations about what are possible - AND - the really amazing thing is - they plan for that when they write their software.

FULL DISCLOSURE: I am (have been) in the former camp rather than the latter - for a good part of my career. My default response when dealing with most people was RTFM ("Read The ... ahem... "Fine"... "Manual"... LOSER!)

However, I find myself humbled as I am fumbling through my re-introduction to the way computing SHOULD BE (on my Mac).

I'm struggling with the command-Q for quit, versus command-Tab (for switching applications) - as the keys are right next to each other. I often open multiple windows in my email client, web browser and other applications as my slightly ADD side kicks in.

So, I had about 8 emails open in Apple Mail (after searching through thousands of emails in fractions of a second!) - and I accidentally hit command-Q (Quit) rather than command-tab (switch programs).

My heart sank.

While I re-launched the email application - issuing a steady stream of curses at myself for being so stupid, and lamenting the fact it would take another 20-25 minutes of work to find all those emails and threads and get them back on-screen - I was shocked 10 seconds later.

There, the email program was re-opened - and all my email windows were open (in the same stacking order as when I accidently existed the program). It's like I had never been the newby, stupid, stupid, stupid "USER" I actually am.

The program gracefully accepted the fact that if you were looking at stuff when you quit, that you may find it helpful to have all the stuff you had opened during the last session restored when you returned.

What the ??

I was just sure it was going to open the main window, defaulted to the inbox, just staring me in face. After all I was expecting the default PC experience: "I mean, you told me to exit! How was I supposed to know you wanted those windows opened when you returned? You DID say "exit" - which I did with the utmost speed and efficiency (only 192 milliseconds!). Oh, you WANTED those windows restored - then you shouldn't have chosen to exit. SUD!"

WOW. The "old" way just seems so hostile. I mean, it's not that big of a deal (programatically) to restore the open windows when the application is re-launched - but to someone who is already a bit self-conscience about his ineptness on a new platform - I felt so surprised and relieved that it prompted me to write this blog post about it.

I'm not saying that all programs on the Mac are sunshine and balloons - there are some that are clearly written by guys who have never even USED a Mac... but the majority just assume that you're not a software expert - that you have some other talent (or interest) and that's why you bought or used their software in the first place.

That got me to thinking about the way that I program projects for my customers... and I have been busy re-tooling a bunch of projects to make them more friendly, more forgiving and more intelligent about what "we think you want" - and not just what you SAY you want.

I'm thinking about new ways to do what you "need" to get done - not just present you with 1,000 choices about what you "can" do. About making software more personal, more like people.

People don't think in a linear fashion. Humans are non-linear by nature (I have 35 tabs open in Safari right now - all spawned by reading a single article - just because there was an "interesting" link in the successive stories/reviews/reports that sparked more thought).

The entire function of software is to help automate real-world procedures. Software's role in people's lives should not be so much about "new, cutting edge, acronym-filled" crap, but about how effective it is for the person on the other end of the keyboard to get their job done and go home.

Functions should not be a light switch, but a dimmer. Configuration (within reason!) should be the default. Training should be a 4-letter word. "Easy" should NOT be a 4-letter word that equals SUD. Easy should equal elegant. Easy should equal useful. Easy should equal what-I-meant-not-what-I-said.

In software, easy is HARD. Just ask the folks at Apple. Or Google.

Don't ask the guys at Microsoft because they will just roll their eyes, grit their teeth, and mutter under their breath - "RTFM you SUD!"

Friday, October 23, 2009

Windows 7 - NEW!

[BIAS DISCLAIMER: I'm a newly minted Mac fanboy - but until a month ago I used the PC as my primary platform for 12 years]

So, with great fanfare Microsoft "introduced" Windows 7 yesterday. They did all kinds of live promotions (including teaming up with Burger King in Japan to offer a 7 patty whopper [via Engadget]).

Windows 7 reviews are all over the web - so I 'll leave you do the digging - but even noted Mac-bigot Walt Mossberg seems to like it.

NEW! Sucks less than Vista!
NEW! No more annoying dialogs every 3 seconds!
NEW! Only 4 minutes to boot!
NEW! Now your printers might even work!
NEW! Now has LESS bundled applications - because, hey, who needs Mail, Calendar, Photo Gallery, Movie Maker, and Address Book anyway?

So, this is the Vista that was supposed to be, but never was. Of course, as with any Microsoft OS upgrade, you'll need either new hardware, or need to shell out to increase your RAM, hard drive and graphics card if your hardware is greater than 2-3 years old.

Oh, and one more thing: if you're on XP (and who isn't?) - there's one more little thing you'll have to do to upgrade to Windows 7: fully backup your hard drive, wipe the contents, and re-install everything.


Not kidding.

NICE! Yeah, sure, let me just tell my mom (who was going to pay BestBuy $50 to re-install Skype for her) how to backup all her data, make a list of the installed applications (and their updates), her settings, preferences, bookmarks, and email - then wipe her drive, then have her (simply!) re-download, install and configure all her applications and data on a brand-new interface where nothing is familiar.

Sure, no problem. Piece of cake.

I've done re-format, re-install many, many times before (as I think 98.754% of everyone whose used Windows for more than 4 years) - and it just plain sucks. It takes about 2-3 full DAYS to restore everything and get it where you were before.

Backing up data, downloading apps (because all those CDs you have for 32-bit apps are now 100% USELESS), installing apps, restarting 20 times because certain programs write to the registry, creating new folders, moving pictures, migrating your iTunes library, etc.

If you're going to go through that much of a cluster - I have a better idea. DUMP Windows completely.

I'm serious.

Either just keep XP for the next 3 years - or buy a new machine with Windows 7 already installed... better yet get off the Microsoft bandwagon and just buy a Mac. Yes, the Mac is more expensive. Yes, you can get a no-name PC laptop for $500 (or even a brand-name at $650).

Yes, the Mac has OS updates and upgrades just like Windows; yes, the Mac has security updates (albeit 700 times less frequently) ... BUT - at least with the Mac - you'll want to poke your eyes out about 98% less.

  • I'm done with "patch Tuesdays";
  • I'm done with stupid security and firewall settings that are so restrictive you can't install software or get anything to work without having to Google for 30 minutes to figure out how to do it;
  • I'm done with cryptic error messages that don't offer any hope of you actually figuring out what the hell is actually wrong so you can fix it;
  • I'm done with the need to reformat and re-install all my stuff - EVER!
So, is Windows 7 the spawn of the devil? No, probably not. It's probably a really useful and good update to the aging XP.

However, I'll never know... I'll be be on my Mac trying to get Snow Leopard to work with SVN...

Friday, October 09, 2009

What's Old Is New

So I was doing some surfing this week and I came across a product called Runtime Revolution. They claim to have some software that will:
Create outstanding applications yourself with a programming environment you can quickly understand. Achieve immediate results with a visual, drag-and-drop interface builder. Use English, the language you already know, to describe program logic. Deploy powerful cross-platform solutions without the huge learning curve of other development environments.
Well - being the geek that I am - I checked out their tutorials and videos, etc. I was looking at it and looking at it - and it seemed VERY familiar... turns out it is - it's HyperCard!!

Yeah, really, HyperCard! What the?!?

It seems that the passion for the product never died - and those Scottish coders (whomever they are) have been updating the products GUI capabilities while keeping all of the easy-to-use goodness and SmallTalk-based language basically intact.

The idea is that you can create extremely rich GUIs in a way that is MUCH easier than Flash, AIR, OpenLaszlo, etc. This thing runs (and can be edited) on Mac, Windows and Linux (Unix). It creates double-clickable applications for any platform - AND (using a browser plug-in) will work in the web - all with ZERO code changes!

Here's an overview of the features:
  • Author on your favorite operating system - Studio is available for Windows, Mac, Linux or Unix.
  • Create standalone applications for any platform with native appearance and behaviours
  • Fully-featured, English-like programming language with 1596 commands and functions
  • Extensible with code libraries and compiled externals you write yourself or obtain from third parties
  • Ability to automate system functions and "office" applications
  • Embedded web browsers.
  • Powerful libraries for manipulating Internet protocols, XML, compression, encoding/decoding
  • Your very own User Space with 10 MB free space to share your stacks online.
  • Integrated connectivity for ODBC, MySQL, PostgreSQL SQLite and Valentina databases**
  • Flexible chunk expressions, regular expressions, arrays, and sorting functions for manipulating data
  • Complete printing and reporting facilities for professional output
  • Ability to run as CGI process on web servers

At it's most basic: it's an IDE. You simply drag your control to the form ("card") and then attach code to any one of the 1,000,000 events that are exposed. There is a full even hierarchy - so while you can attach a script to an individual object - you don't have to. You can attach it to the card (form) or the "stack" (application).

You have 100% FULL control over EVERYTHING in the entire GUI:
  • Windows including: modal, non-modal, palettes, stay on top, min size, max size, drag and drop events, title bar controls
  • Transitions/effects
  • Alpha masking
  • Custom button appearance
  • Geometry editor - for telling it how to resize individual elements when the form is resized
  • Support for custom radio buttons (and checkboxes)
  • Grid editor
  • Rich text, inline html (WITH images), list boxes, data grids (with icon types, auto-sort, drag column order, etc),
  • Graphics containers - including QuickTime containers and image containers that support multiple graphics formats as well as built-in graphs
  • Native vector graphics that include gradients, splines, polygons, boxes, ovals, lines, text, etc.
  • Full visual menu editor that works for popup menus as well as application menus
  • Tab controls
  • Scrollbar objects
  • Web browser object
  • Groups of objects that can be dragged, edited and moved at runtime - including nested groups that all work independently of each other
  • Dialog "sheets" and slide-out "drawers" (Mac OS only)
  • Main window can be a CUSTOM SHAPE - based on a background image(!)
  • Named property "profiles" - for defining any (or all) of an object's properties and then switching them out (live) at runtime
  • Etc

In short - it's an extremely rich GUI builder that exposes all the events and types of things that you could ever want when building an application.

Yeah, but what about the code?

The coding language is an offshoot of SmallTalk - and is English-based.

put the height of field "Text" into myVar

put the width of image "My Image" + 17 after field "Values"

if item 1 of the location of me > zero then beep

set the loc of button "OK" to 32,104

set the name of field "Old Name" to "New Name"

select after text of field "New Name"

Yeah, it's fairly verbose - but very straight forward. You can do anything you want - including working with arrays, calling external plug-ins (written in C), pass events to individual objects, create functions, etc.

Oh yeah, and it's object oriented (all the properties of objects inherit the properties of objects higher in the hierarchy). For example - if you don't specify a background color for a field - it will take the background color of the card, or stack.

Yeah, but what about SQL stuff?

It supports ODBC - but also has native (direct access) connect to: Oracle, MySQL, SQLite, PostgreSQL, Valentina. It has a built-in query editor and you can "bind" field objects directly to database columns - so you don't have to write your own SQL for inserts/updates/deletes - it's all handled automatically.

Of course, you can also run your own queries and get your own datasets and do stuff with it (like you can in any other coding environment) - and you can dynamically change the binding on a field object at any time (at runtime).

You can create databases and table (and alter their schema) ON-THE-FLY - and you can programatically create new objects and bind them to your new table(s) at runtime(!!).

OK - so what's missing?
  • Automatic data broadcasting
  • Native HTML/CSS browser implementation (you have to use a browser plug-in)
  • Multi-developer (SVN/CVS) support
  • Runtime fees (the "Media" edition is free, "Professional" is $249 and "Enterprise" [allows native connection to Oracle] is $499). There are ZERO other fees.
This thing sounds VERY cool - and sounds like it will be a welcome addition to my toolbox!

Friday, October 02, 2009

The Way It Should Be

So, I've had this old P.O.S. Linksys router for about 3 years (it replaced another Linksys router I had for 4 years), and it was on the way out.

I had to "reset" it 3 or 4 times a week (unplug/re-plug) - and I was just done with it. So, I was in the market for a new router.

I'm absolutely LOVING my Macbook Pro (some people have accused me of being an overzealous fanboi - which I am) - so I thought I'd give the Airport Extreme a try.

Now, I've set up a few routers in my day - and it's not pretty. There are 1,000,000 arcane settings - so I had screen shots of all the router settings, my ISP settings handy and had poured a nice glass of wine - knowing that I was in for a long night.

I unpacked the router, installed the software (<>

Oh crap. Here we go...

I guzzled some wine, then opened the configuration utility. It showed the device, so I clicked on it and it asked if I was setting up a new network, was extending an existing one, or replacing an existing router.

I told it I was replacing an existing router - and it had a list of all the previous connections. It told me to pick my old one - which I did - and then clicked "Continue."

I was so busy gathering up all the screen shots and print outs - that it took me 5 minutes to notice the software said: "Airport Extreme configured."


I clicked "Continue" and the router restarted in 20 seconds. It glowed a fabulous green and the Macbook just automatically recognized it (it even kept the old SID [network] name).

Whoa. Cool!

BUT - there was a problem. The network was wide open. So, I re-launched the configuration utility and clicked "Continue" a couple of times to get to the security settings. I chose the security protocol, entered a password and the router restarted itself again.

Then the Mac asked for the new password - which I entered - and BAM - connection was made.

So far, so good. I had expected as much - Apple router + Apple hardware + Apple OS = easy.

BUT - there was another problem. I have a few PCs here - as well wireless printers, iPhones, etc. I knew the iPhone and the printer were going to be OK - but I was really dreading getting the XP computers to connect to the new network.

After a healthy swig of wine - I tried the first one... changed the security protocol, entered the new password... and prayed.

IT WORKED. The first time.

Next was the 2nd XP machine. Same thing! Then the iPhones - easy. Then the printer - a snap.

I installed a new router with almost ZERO configuration, added a Mac and 3 PCs, 2 printers and 2 iPhones to the network in 20 MINUTES (not HOURS, minutes!).

The Airport Extreme was about $75 more than a new Linksys would have been - and I was careful with the packaging in case (probably) I had to return it... but I have to honestly say - I have never in my 20 years in working with computers - have had such an absolutely painless router install.

Now, that's the way it SHOULD be!
Web Analytics