Monday, September 17, 2007

Ahead Of My Time...

Have you ever heard someone tell you...."you're ahead of your time"? I have and let me tell you that it's nothing to be proud of. Over my twenty plus career, I have had more blunders than successes. The successes I've had were some grand slams but for the most part...lots of blunders. In some instances, those "so-called" blunders are now viewed as "ahead of their time". Insert Puke here. :-) It doesn't matter. If the idea that was ahead of its time died for whatever reason, it's not ahead of its time. It's dead!

You might be asking what causes this phenomena? There are many.

Devil's Advocates
I believe, for the most part, one gets tired of trying to get their idea past the Devil's Advocates. Those evil doers who try to knock down ideas versus build them up. If you haven't read the "Ten Faces of Innovation", you should. Regardless what you might believe, you're outnumbered by these devil's advocates. There have been so many times I just gave up on an idea because I was too tired to fight the good fight.

Not Willing To Take a Risk

If you're not willing to stick your neck out -- the idea will die. That's where I've made most of my mistakes. Not willing to stick my neck out and take a chance. Unless, I have a 99.9% chance of making it work.

Not Willing To Put Forth The Effort
How easy is it to take a brilliant idea and put the work on someone else to execute? I've also made this mistake. Let's leave it up to someone else to work out the details. BAD! Nothing against those folks, but they will be your demise if you're not involved. If you can't see your idea through, don't do it. Don't leave the details up to someone else. Be part of the team who is doing the work.

Rationalization

We humans can rationalize anything if we want to bad enough. You end up talking yourself out of too many things that will cause it to fail and/or be less than what you envisioned. Establish the "Gotta Haves" and never compromise on those. Wiggle on the rest (Nice To Haves, Need To haves) but never that. Some times you have just have to..."JUST SAY NO". If it means more work than so what.

Courage
Change takes a great deal of courage. If you and/or your organization doesn't have the courage to change then seek counseling. I've seen many brilliant innovations that have worked their way around core problems that for whatever reasons don't get dealt with. You may achieve some incremental success but if you don't attack the core problems, you'll be dealing with it later. Also, if you're not in a position to change the core problems, than don't. Just move on. You've done your duty making the organization aware. It's up to the powers that be to make the change. If you don't have their buy-in then it's not going to happen.

Talk Is Cheap

I hate meetings. Meetings are where a bunch of people gather to talk. If you spend too much time talking you'll end up rationalizing which will cause you to lose the courage which makes you not want to put forth the effort to take a risk. Follow Me? I believe in collaboration. There is a big difference between meetings to talk vs having collaborative meetings.

Finally, I can say all these things because I have suffered from each. I have also benefited on those rare occasions where I listened to my own advice. Being ahead of your own time is not a badge of honor unless the idea saw the light of day. Let this serve as a call to action to all the ThinkTankers, BarCampers, Bloggers, and organizations who have been spending too much time talking about ideas. My friend and business partner Doug True was instrumental in starting a group sponsored by the Indiana Credit Union League whose charter to is not only generate ideas but to implement them. This group is called Ignite. Get-R-Done!

Friday, August 24, 2007

Designing Software Is Fun Again

I know this may come as a shock but I don't like .NET. I never have and never will. Perhaps, one day they will see the light and go open source but I doubt it. I won't get into a technical debate as to why because it doesn't matter. It's my preference and that's it. That's not to say that .NET is bad because it's not. In fact, I've been messing around with Blend and I've been very impressed. More on this later. I prefer Flex & FileMaker simply because it's easy. If there is a weakness of Flex is its ability to connect with DataSources. Basically, you only have two choices out of the box. They are Web Services and HTTP. Now, that would probably serve most needs unless you're connecting to a SQL compliant database. Doh! If so, you'll have to wrap some web services around it to make it work. Adobe does offer choices but they're not cheap. Flex Data Services allows you to connect to back end systems via remote objects. Of Course, there is Cold Fusion which can also work. Unless you're using ColdFusion for your Intranet and/or website, it's probably not the choice here. There other companies that provide middle ware connectivity. The best seems to be WebOrb. If you haven't checked them out you should. It's powerful stuff. If you're needing a highly scalable application then you'll need one of these tools.

So, why do I like Flex and FileMaker? Glad you asked. Okay, maybe you didn't ask and maybe you don't care. If so, then why are you here? Go home, leave, vamoose. Okay, for the rest of the two readers of my blog - here you go. I like Flex & FileMaker because they both begin with the letter "F". You know what else begins with the letter "F"? Get your mind out of the gutter. It's (F)un! Sorry had to go there. Anyway, back to the story. It's like FileMaker and Flex were meant to be together. Why? FileMaker has a built in Data Services API that can be utilized using Flex's two out of the box choices. Perhaps, this is FileMaker's most underrated feature that seems to get lost in haze. Using Flex, you can connect and write to FileMaker's database in 3-4 lines of code. FileMaker's API has all the CRUD operations built into the API. Let me also clarify for you geeks that I do understand that FileMaker's API is not really data services in the truest sense. I know that. However, its still easy.

You can also use FileMaker's layout capabilities to build forms in Flex. Here's how. Design a layout in FileMaker. Put some fields in the layout and you're basically done. Use FileMaker's FMPLAYOUT grammar to get the definition. Voila! Here's the down side -- you'll have to write Flex code to interpret. Here's an idea. Use a FileMaker custom function to build the MXML code for you. Write a script to call the function and then to publish the MXML to a directory and have some code in Flex to load modules on the Fly. Okay, now you're probably thinking I'm on some 1960 drug trip. You're also probably wanting to see some sample code like most sites would do. If you're interested, just leave a comment and I'll be happy to send you some code and/or show you via my Adobe connect account. Just let me know.

Finally, the title of the post is "Designing Software is Fun Again". I didn't really explain that -- huh? Programs like FileMaker, Axure, and Flex make designing software fun. As I mentioned, it's a preference. It's what works for me. I believe that companies should focus more on making the process fun in lieu of getting bogged down in places that can halt or stifle the creative process. I need a canvas not a document. I want to draw rectangles not write x and y coordinates. I want collaboration not acceptance documents. I'm having a blast.

Monday, August 20, 2007

Rave: Axure & Ubunto

Rave: Axure (Prototyping)
PictureForLife.net is close to completion. I'm really excited about this. It will be more than just a standard photography site. Thanks to my friends at Akcelerant, they turned me on to this prototyping software from Axure a couple months ago. It's a great piece of software for designing applications. I've never been a fan of wire framing because to be honest....I found it boring because they're basically just some pictures of what screens will look like. What sets Axure apart is the fact that you can put some code bits behind the wire frame. Thus, allowing one to be able to see interactions between components.

There are basically two approaches you can take. You can start designing screens and interactions (i.e. wire frame) or you can start with a flow model which utilizes a flow chart approach. I chose to go the wire frame route. Once you're done, you can have the system generate a specification document. That's the icing on the cake. I don't write specifications -- NEVER!. This system does it for you.

Going forward, I will use Axure. It's a wonderful tool in the toolbox.

You can check out the prototype for the website. I've developed this site using Flex and FileMaker. The next phase will include a FaceBook application to my site. I've been working with the FaceBook API for the past couple of weeks and it's powerful and very easy to code in. More on this later.

Rave: Ubunto
A colleague recently told me about a Linux flavor called Ubunto. It's a simplistic flavor of Linux. I've installed Linux before and I've always struggled with them. Then, trying to install instances of php, ruby, apache, and MySQL was painful. Installing Ubunto only took 10 minutes to install and get up and running. I installed this in my parallels system using a linux kernel 2.6. The download of Ubunto is an ISO file. Once you mount it on parallels - a working version comes up instantly. It's like doing a try before you buy approach. I played around with it and all I had to do is click on the "install" icon. I answered a few questions and then it was done.

Once Ubunto was installed, I installed PHP, Ruby on Rails, MySQL, and Apache2 via a couple of commands I was up and running. Literally took me 10 minutes to install these applications.

Ubunto comes with OpenOffice installed. It also comes with Gimp which is an underrated imaging application.