Thursday, July 28, 2005

Ian of UserScape weighs in on OpenLaszlo decision

Ian's got a great blog for people starting software companies. He mentioned me and my decision to use OpenLaszlo today in a blog post.

OpenLaszlo Dev Tip - Browser to use

When developing in OpenLaszlo (*what is OpenLaszlo?) run the Flash movie in Internet Explorer. Why?

Because when the Flash movie has focus you can still hit CRTL+R to refresh the URL. You can't do that in Mozilla/Firefox.

*OpenLaszlo applications are written in XML and JavaScript. The OpenLaszlo server then compiles the XML and JavaScript into .swf files, which run in the Flash player.

The difference between regular-corp and bad-ass-software-corp.

Really awesome working environments.

Adobe Systems Incorporated
Fog Creek Software

Still Glad I'm Going with OpenLaszlo - Google & Google Maps

I've made the announcement that I'm working with OpenLaszlo to build my web-based Project Management application, Ataraxis Unity. I came across this article today titled, Take browsers to the limit: Google. It references a lot of things Lars Rasmussen, lead engineer of the Google Maps project, said at a conference on Web engineering.

Being a web developer I FULLY understand how groundbreaking Google Maps was. The first time I used it - I was completely flipping out. I couldn't believe that could be accomplish with JavaScript and a web browser. As I mentioned in a previous blog post, it was one of the apps that inspired me to start working with JavaScript. But, as I mentioned in that same post, I gave up due to the complexities involved with modern web browsers and JavaScript.

I would like to quote you a couple of items from the above mentioned article.

For example, Maps can command Internet Explorer to use VML to display a blue line between geographical points, but use a PNG graphic format and a linear description for the Firefox browser.
Maybe when you have an army of PhD engineers at your disposal, and enough revenue to float thousands of cool new risky ideas through your product pipeline - the above quote sounds like a good thing. Maintain 2 versions of an application? No thanks!

Working for Google has other advantages, he said, adding that when a bug that caused Maps to malfunction with the Firefox browser was discovered, "we called up the Firefox [lead engineer] the weekend before launch, and he came around and plugged in his debugging code".
Um.... How many ISV's can do that? "Yeah, my JavaScript isn't working in your browser. Would you mind dropping by and hooking up your debugger?"

I know, I know, paid support through Mozilla or Microsoft is available. OpenLaszlo has bugs too, but guess what. If I could a solution around it, I only have to code one solution, for one platform. If you've got the resources to maintain multiple code bases, more power to you. If you've got the ability to have all the browser's lead engineer's come by and plug in their debugging code, you're like, at least 10x cooler than I am! ;)

Tuesday, July 26, 2005

OpenLaszlo Prototype 50% Complete, Let's talk about the Bad and the Good.

As I mentioned the other day, I'm developing my web-based Project Management application, Ataraxis Unity, with OpenLaszlo. (OpenLaszlo applications are written in XML and JavaScript. The OpenLaszlo server then compiles the XML and JavaScript into .swf files, which run in the Flash player.) I'd say I'm about half through my quick, dirty, non-functioning prototype. The basic visual layout of the my application icons, menus, and headers haven't changed from my XHTML version. But learning how to put things together in OpenLaszlo, has had it moments of frustration.

Like all technologies, OpenLaszlo has it's bad points and it's good points. I'll start with the bad. Please keep in mind that I've only been working with OpenLaszlo for a total of (about) 40 hours. So I'm still getting to know the in's and out's of the technology.

  • The components are of varying quality. Laszlo Systems, the people who created (and open-sourced) OpenLaszlo have built a commercial email application called Laszlo Mail, which is (or will be) used by Earthlink (yeah, the big ISP with millions of customers). I looked over the screen shot of Laszlo Mail, and I don't see a single standard OpenLaszlo component. The specific widget I've had the most issues with is the standard "grid" widget. It's really awkward to work with. For example, centering text in a column is a lot harder than it should be. Don't get me wrong, the grid works, it's just a pain in the butt. Another widget I have a love/hate relationship with is the tabbed pane. Honestly, I love the tabbed pane, but it has a few quirks. For some reason the tabpane is not what I call, "percentage aware". If you have your layout set to expand with the width of your browser you do so by setting the "canvas" width to 100%. A lot of the components in OpenLaszlo also allow you to give them a percentage for their width and height, and they will act as you expect them to. Except for the tabpane. Set the tabpane to 100% and it will render it at 100%... initially. I.e. It will start out at 100%, but never shrink or grow as the other components on the page do when their container adjusts itself. There is a work around that I am taking advantage of. The work around, well, works. But I don't understand why it doesn't "just work". There are a bunch of small issues like this that you have to work around with the standard OpenLaszlo components. None of them are show-stoppers, and you can always write your own from scratch, but I was hoping the components would be a little more mature.
  • Awkward view referencing. In OpenLaszlo every "thing" you make is extending from a "view" class. A lot of the views are nested in parent/child relationships. The most difficult issue I've had with programming in OpenLaszlo is finding a clean way to reference views that are a few levels up the relationship tree. The easiest, and messiest, way to reference them is hard coding the path to the view you want. See this post I made to their forum. (I would have posted the code here, but I'm having issues with posting code inside of Blogger's WYSIWYG.) Are you back from reading that forum post? Good. Using the "classroot" style has alleviated some of the pain, but not all. I've played around with the "searchSubViews" and the "searchParents" methods. I rarely need to search the sub views, and I couldn't get the "searchParents" method to work. I need to experiment with those two methods before I start the real development of my application.
  • Not-all-that-great-documentation. For a product that used to be sold for ten's of thousands of dollars, and is now in it's third version, you would expect some really good documentation. The Software Engineer's Guide to Developing Laszlo Applications is a good start (even with the grammatical and spelling errors). But the guide doesn't go beyond simple examples. However, it does show you how to build your own components (hint, hint!). The javadoc-style reference they provide is also pretty thin.
  • Lack of good frameworks and community established best-practices. I can't blame OpenLaszlo itself for this. It's up to people like me, and them, to produce those kinds of things. But there's a gaping hole in this department. Having to figure out the best way to build a layout that switches out pages on my own isn't fun. I've been spoiled by the framework-for-everything world of Java/JSP and Fusebox for Coldfusion!
Now for the Good
  • Animation library. Animation gives you two things. 1) Coolness factor, and if you used properly, 2) increased usability. When I've watched my Apple Computer-owning friends and colleagues use OSX my chin is usually on the floor and I'm drooling profusely. Apple uses animation in all the right places, and I'm hoping to do the same.
  • Single Rendering Engine (Flash Player). Oh how I love that I only have to debug my GUI once!
  • Built-in "Windows". If there is something that I would tell every web developer to never do, it would be to never pop open a new browser window in your application. You never know what kind of pop-up blocker someone has installed. And you would be shocked to find out how many people just can't work with windows. I've seen users have such a hard time with apps that open new browser windows. The window becomes lost behind the main browser window, they can't find the window in their task bar, if they even know what that thing is on the bottom of their screen - it's just pathetic. As a developer you have to write JavaScript to have the two windows react to each other, and you know I don't like that! OpenLaszlo has a built-in "window" component. This thing is great. It's not a new browser window, it's in the Flash player. It can't get lost on the user's desktop because it never leaves the inside of the browser window. Development is also the same as any other part of OpenLaszlo. The window is just another view in the application, you have access to all the global functions and variables in a seamless manner.
Well, that is my current list of likes and dislikes of OpenLaszlo. As I develop more I'm sure I'll find a lot more issues to add to each list.

I'm really excited about the capabilities OpenLaszlo has provided to me. I'm going to be able to create a much better user experience for my customers than if I had used HTML and JavaScript. I can't wait until my prototype is at a point where I can send it to people for feedback!

Monday, July 25, 2005

Joel on Software - Hitting the High Notes - Observation of the Managed

In response to Joel Spolsky's latest article, Hitting the High Notes, I posted a message in his forum entitled, Hitting the High Notes - Observation of the Managed, which I've copy 'n pasted here:

In Joel's latest article he makes a statement that the designers at Creative won't ever be able to make something as good as the iPod. Is that a case of the talent of the Creative staff? Or is that a case of "the company" or "management" imposing it's will?

Joel states this about the iPod....

"Why can't you change the battery?

My theory is that it's because Apple didn't want to mar the otherwise perfectly smooth, seamless surface of their beautiful, sexy iPod with one of those ghastly battery covers you see on other cheapo consumer crap, with the little latches that are always breaking and the seams that fill up with pocket lint and all that general yuckiness. The iPod is the most seamless piece of consumer electronics I have ever seen. It's beautiful. It feels beautiful, like a smooth river stone. One battery latch can blow the whole river stone effect."

But it's the company/management that allows this to take place. Let's say another company's staff were to present their amazingly smooth and sexy design to upper management. And the first thing out of one the executive's mouth is, "How will people replace the battery?" Designer responds, "Uh, well you see it's like a style thing, we're creating this experience...." Executive, "It's got to have a battery cover, people won't buy it if they can't change the battery. Put a battery cover on it, and it's got to go on the back."

These could be the greatest designers on the planet, but their skills get "managed" out of the equation. And over time, they stop producing great work because they are always designing stuff within the "boundries of acceptance" by the people signing their check. (Regardless of skill level, not everyone is confident enough in their own abilities to leave a bad company.)

Ask any creative person. "Management" likes to turn their creative people into monkeys. "Draw this line here. Put the logo here. Make it look like this...handing them a sketch of their own."

The point: It takes awesome people from the very TOP all the way _down_ to the people actually doing the work for product successes like the iPod to take place.

Remember, if you hire the best people, don't forget to trust, listen, and let them do what they do best!

If there is one thing that I vow to do when Ataraxis Software hits it big is trust, listen, and let the best do what they do best. I wouldn't let the Art Director tell me how to program, so why should I ever tell them how to do all that "art stuff". ;)

Now, if you are really not happy with something an artist shows you, have a conversation with them about what the piece (or product) is supposed to accomplish, as opposed to giving artist direction.

For example, when presented with a magazine advertisement comp where the logo is obviously to tiny, don't say this:

"Make the logo three times bigger and add a red background to it so it pop's more."

Try this instead:

"This ad is beautiful. But my goal for this advertistment is get our brand in front of people. I don't feel that this ad will accomplish that goal. What are your feelings?"

Programming Language: OpenLaszlo | Client Platform: Macromedia Flash Player

When I first started building my web-based Project Management application, Ataraxis Unity, I wanted the GUI to be nothing but XHTML and CSS. I wanted something simple and clean. I wasn't a fan of JavaScript GUI's. As a user I have found JavaScript to be "twitchy". As a developer I've found the programming painful. It was bad enough that I had to spend time getting everything to look the same between browsers, but now I have to get everything to behave the same?

So I wanted to build an amazing application with nothing more than XHTML and CSS.

The problem arouse when I started work on the task list of my application. What's a Project Management application without an awesome task list?! I just couldn't make it user-friendly enough with straight XHTML and CSS. So I started dabbling with JavaScript. I figured out how to dynamically add a row to a table using the W3C DOM. Man did I think I was the cat's pajamama's! With the help of, I was off to the races. (Here's some foreshadowing of my decision to not use JavaScript- I had to rely on a web site with the word "Quirks" in it. It is a great site if you're developing with JavaScript!)

I got more frustrated as time went on.

My development cycle (and thought process) was going like this. Get it working in Mozilla. Check it in IE. Damn, it's not acting the same. Scour the Internet for the answer. Getting it working in IE. Damn, it's not acting the same in Mozilla any more. Ok, I got it fixed and it's now working in both browsers. I wonder how it is in Opera. Ok, it's great in Opera 7, but has a glitch in Opera 6. I just won't support Opera 6, because I don't feel like debugging this. I wonder how this works in Safari? I don't have a Mac, so I'll have to write a script that demonstrates what I'm doing, email it to a Mac-owning friend and ask him to please run this in Safari and tell me what happens. Oh, and I'm not really sure if there is a difference between Safari 1.0, 1.1, 1.2, 1.3 and 2.0. I do know that David Hyatt has been bug-fixing like a fiend and Apple releases a new point release with every OS ugrade (I think), but they won't allow certain versions of their OS to upgrade to the latest version of Safari. But I can't remember which versions and which OS's - but it doesn't matter anyway because I'm not even sure if there are any differences to worry about. Shot! What about KDE Linux (Gnome's browser is built on Mozilla, isn't it)? Um, I guess I'll only support Mozilla on their platform because I really don't have the time or resources to figure out if it works in Konqueror - not to mention become familiar with all the variants of Konqueror.

I'm done with it. Congrats and good luck to all of the software shops out there developing with JavaScript and DHTML. But it's just not for me.

Enter OpenLaszlo and the Macromedia Flash Player.

OpenLaszlo applications are written in XML and JavaScript. The OpenLaszlo server then compiles the XML and JavaScript into .swf files, which run in the Flash player.

With OpenLaszlo's existing component and animation libraries I'm going to be able to create a better application for my users. I'll be blogging about as I march toward finishing my app. Stay tuned.

But while you're waiting....

Great Name, Not!

Konfabulator bought by Yahoo!

Konfabulator is now the property of Yahoo! Konfabulator is a program that allows you to run a bunch of little widgets on your computer. Since Konfabulator is now free, I've downloaded it.

It's a pretty sweet program. Right off the bat here are my favorite widgets.

  1. The Weather - It just looks so damn cool!
  2. CompactMemory - I just like to see how much free memory I have, sue me. :)
  3. Waste Basket - This widget is awesome, it's a gigantic trash can (I'm using Windows, so it's a "Recycle Bin"). Konfabulator allows you to hit F8 to invoke "Konpose". Konpose brings all of your widgets to the foreground. I've got Waste Basket set to only appear when I'm in Konpose mode. If I want to drag something to the Recycle Bin I don't have to worry if it's hidden by a maximized window. Click on item to delete, hit F8, drag to trash - the rest of my desktop is exactly as I left it! Me likely!

Friday, July 22, 2005

Coming Soon... GUI Technology Annoucement

I'll be announcing my choice of front end technology soon.... Here's a (big) hint.

Thursday, July 21, 2005

Just got to share. A couple of funny software-blog posts.

Every once-in-a-while I come across a blog post that makes me laugh out-loud. Today, I read two.

Monday, July 18, 2005

This is suprising.... News Corp to buy Intermix for $580 million......

(Note: This blog post is a little pointless. Waste the next 2 minutes at your own risk.)

Story here

Read it and then come back.

For those of you who don't know, is a super-successful social networking service. You've heard of Friendster, but you probably know someone on

The reason this news is suprising to me is because MySpaces has a very liberal/hip slant to it, and New Corp owns the most right-leaning news organization on the planet, Fox News.

I wonder how the MySpaces core audience is going to react to this? Will they leave and seek a new service? Will they never find out? Will they not care?

Why is all of this interesting to me?

Back before Friendster launched I had an idea for what would now be called "a social networking service" (I was the first with the idea, I swear! ;) ). Nothing real ever came of it (no programming code), just a bunch of sketches and a really (i mean really) bad HTML prototype (it was a lame duck - which I didn't notice until my friend Brian LeGros was kind enough to point out). I had a cool idea, but I just didn't know how to put it together - nor did I have the programming knowledge to pull it off. I did however have a name for it: (Which today I have pointing at Once I realized the prototype was god-awful, and my focus on the core idea started to drift I decided to give up. At least for the next few years.

Ever since the "social networking" thing hit the web (basically when Friendster was being talked about in the news) I've been p.o.'d at myself for never getting it all together. Eric Sink's article, Law #20: The Law of Hype, made me feel a little better and was part of my inspiration to continue working on my Project Management web application, Ataraxis Unity.

You know what the funny thing is?

I received an email today from someone who wants to buy the domain from me. I asked for a huge amount of money (because I don't really want to sell it). I didn't ask for $580 million, but maybe I should email them again and say that I just can't part with it for less than $580 million and see if they get the joke. :)

Thursday, July 14, 2005

Questioning Everything, Scripting Languages...

I've been having an email discussion with a friend (and former colleague), Jeff Marder, about development languages. He is compentent in PHP, Coldfusion, and Perl (not sure to what extent for Perl - but I'd call him a "developer" for the others.). He has recently done two things.

  1. Got serious about learning Java, and developed a real app with it.
  2. Experimenting with Ruby on Rails (RoR), and is building a small sample app with it.
So far, this is what he has to report.

It takes him twice as long to do anything in Java as it did in PHP or Perl, and RoR is really fast to develop in. (But we all knew that about RoR because that's what everyone is saying about it.)

I've noticed a couple of job postings from a couple of companies that make really cool software. Panic and SixApart. Both of the companies' software development posistions require expierence with Perl and PHP. SixApart actually lists: Python, Ruby, PHP, C, C++. I have no earthly idea how C and C++ fit into their development efforts, but the first 3 are scripting languages.

I was recently at the, No Fluff Just Stuff, Central Florida Software Symposium, which is a Java-centric conference. All of the session speakers were talking about RoR. Heck 95% of the expert-panel session was about RoR.

This is far from a broad survey of the development landscape, but this is what I'm "feeling".

  • Java is for "big system" guys. (Think big, slow-to-develop, IT systems.)
  • Scripting languages are for writing cool applications that developers (myself included) really want to work on.
I don't know if it would be a good idea to build a financial application in something like RoR. I'm not aware of any specific limitations of RoR (or the Ruby language) that would stop you from it. But no one has been brave enough to put the "Enterprise" stamp on it. (By the way, does anyone know if Ruby maintains type safety of numbers? I.e. Yeah know how in some scripting languages a number can accidently be converted into a String? Then when you do math with it, the numbers are concatenated? 2+2=22)

But is it a bad idea to build a shopping cart application with RoR or another scripting language? With the advent of web services (REST or SOAP), "integration" can be achieved by any language that knows how to parse XML. (Yeah, I know about the overhead. But you can only put so much on 1 box anyway - for remoting to other systems that integrate with it you may have to go that route anyway.)

PHP, Ruby and Python are all object oriented languages. (Well, PHP now has "real" objects and it's probably more "object capable" than object-based.) I don't know enough about Perl to say if it is or not. But my point is, OO is a good thing. And these languages can do it.

Personally, for the software company I'm trying to form, I've already invested a lot in Java technology. Both from a training and a time-spent-writing-code standpoint. Will I switch now? No - I can't. It will cost me too much time.

But have I made a mistake? Will I spend more time dorking around with XML files than banging out awesome applications with RoR? I don't know. If I ever make enough money from this project and try to hire people, will the company be less attractive to the best web developers out there because of Java? I don't know. (I'll want awesome application developers, not "IT programmers" - in my (extremely) limited experience there is a difference. :P )

Am I once again over-analyzing everything? Possibly? ;)

(Update: In my first blog post for this site I gave my reasons for going with Java. If you're interested.)

The 12th Abusive Client - The Thief

Christopher Hawkins' blog post, The 12th Abusive Client - The Thief.

Boy, can I ever relate. I need to find the time to post my experience on his blog. It's one of the main reasons why I stopped trying to be a "freelance web developer".

Monday, July 11, 2005

I'm Taking Notes, It's the Little Things

Have you ever noticed something at your place of employment that made you think to yourself, "That's not what I would do if I ruled the land." - Of course you have. If you haven't you're not paying attention, you don't care, you work for the most perfect people on the planet, or you're not that bright!

Today, I spoke up about something that has been bothering me at work. (While I am working on forming this software company called, Ataraxis Software [maker of the future "greatest web-based Project Management software, ever" ;) ], I still have to work a regular job-type-job.) As the title of this blog post suggests, it's a little thing. It probably wouldn't bother most of the people in the world, but it's driving me up the wall.

Our team has built and maintains a pretty successful transactional web site. The site serves up our product list from a database, customers pick the one they want, and then proceed through a few screens to purchase it.

Now, here's the part that is driving me crazy. (Don't jump to conclusions and say, "a few screens!" That's too many for any ordering process! Calm down, it works for this industry.)

When the marketing people need to update something related to a product, they put the content into the system. In order for the non-critical information to appear on the web site we need to do what we now call a "refresh" of the site. In a nutshell we run something that clears out all the cached data in the server's memory, and the next page hit to the web site starts refilling the memory.

What drives me crazy about this?

The first page hit to the site after a refresh takes about 7 seconds to load.

"7 seconds? That's what is bothering you?"

Well, yes. It is. I don't have exact numbers (and I wouldn't give them to you anyway), but there are several other items you then multiple to the 7 seconds to determine just how broad of an effect this refresh has on the site. The point I'm trying to make is that a whole lot of people are being forced to wait, what I consider, a long time before they see content show up in their browser. If they stick around that long! - My concern is that it could cost us customers.

In the big scheme of things, yeah, this honestly is a "little" thing. The site is a success, and it's beaten out every expectation the company has placed on it.

But that's just how I am.

I suggested we only do a site refresh during the slowest period of activity, but it was deemed not severe enough of an issue to deviate from our current modus operandi. Since it was deemed not severe enough for that kind of a change, I can't see it being given a priority for a programmer to cook up a staged cache-refilling situation that would be near-seamless to the user. There's more important enhancements to make to the site, and I understand that. We're probably going to make more money on the other planned enhancements then on what I'm suggesting.

But I'm taking notes.

#1) There better be a damn good reason why the user experience is interrupted.

Now let's see if I can be that high-horsed when it comes to my company and my products. ;)