Archive for March, 2009
Today, I posted an interview I did with Doug McCune on InfoQ.com. His personality and passion for development came through in his encouragement for developers to build “cool shit.” I love the sentiment, as I so often get trapped in trying to bring business value and forget that sometimes software development should just be a creative endeavor. However, as cool as that sounds, it can be challenging to bring that sort of mindset into the enterprise. With that in mind, Doug had some really interesting comments on UX within business applications:
Enterprise software is almost uniformly horrible, but there’s no reason for that. We’re seeing a “UX revolution” in RIA design, and for all the buzzword nonsense surrounding “user experience, ” there’s something real happening in terms of the overall quality of the experience delivered by RIAs. We’ve seen some really great and innovative work in consumer RIAs, with a trend toward simple and intuitive interfaces. And yet in enterprise software this trend has barely even begun, it’s all still complex. I want to see enterprise applications treated like consumer apps, with the same attention to the user experience and with a consistent drive to simplify and make everything more intuitive. Complex systems don’t have to be presented with confusing software. But it takes more work to figure out the simple, elegant solution. It’s far cheaper and faster to make bad complex software than good simple software.
I also think there’s a business intelligence breakthrough afoot that will bring these same concepts of intuitive software specifically to the BI arena. Business intelligence is just a fancy way of saying that you’re extracting value from raw data in some way. This is typically limited to your mundane set of charts, gauges, and all the other normal dashboard UI elements that are the current standard. But I think thinking about BI problems from a fresh perspective, from the perspective of someone outside the enterprise space, will lead to the invention of new visualization methods. Maybe sales performance isn’t something best shown using a silly looking speedometer gauge. Maybe there’s an intuitive way to extract more value from that heap of raw data sitting on enterprise servers. But I don’t think enterprise developers have been willing enough to experiment with new concepts. People need to start inventing.
I have to agree that enterprise software is generally poor, particularly in the user interfaces. In addition, his comments on working toward the simple, elegant solution makes me want to scream, “Yes!” I think the only place I differ with him on is where the blame belongs for the overall low quality of enterprise systems. Developers do deserve some of the blame, but I think generally the challenges come from the organizations, project owners, and managers who do not understand what is now possible, or even worse never understood how to build software to begin with.
In years gone by, the platforms really limited the ability of developers to build cool user interfaces that still made sense on the budget. I was originally drawn to Flex because it can do things that simply weren’t possible on the web only a few short years ago. This probably factors into the decisions that even smart, experienced managers are still making today, as many of them have previous attempts at doing cool things that led to ballooned budgets and jeopardized projects.
So, there is the obvious onus on developers to sell their ideas and educate their organizations on what is possible now that the platforms have capabilities way beyond getting data in and out of the database. However, with that said, the real limitation of enterprise software will always be that the teams building most systems are part of companies that do not exist to build software, and often just don’t understand the processes, the platforms, the code, the users, etc. In those cases, it is unlikely that they will be able to overcome their limitations to build cool, highly usable systems. So, while I am optimistic that the advances that have come with the RIA revolution will trickle into the enterprise, it is unlikely that they will have the same impact on business applications as we are seeing in consumer applications built by companies that exist solely to build quality software.
If you enjoyed Doug in writing, check him out in this recent Flasher Magazine video interview. Also, look for him in a future DrunkOnSoftware.com interview.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
In the latest installment of Drunk On Software, James Ward and I sit down with Anthony Franco, of EffectiveUI, to chat about RIAs and the software landscape in general. Anthony offers a number of interesting insights for those that aspire to build quality software. It was fun chatting with Anthony. Hopefully it is enjoyable to watch.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
When googling for solutions to any number of Flex challenges, I commonly find posts that include monkey patching as part of the solution. Monkey patching is basically replacing a Flex class with your own. For example, if you want to change something in UIComponent you can create a mx.core.UIComponent in your project, and the Flex compiler will use your class instead of the frameworks class. So, basically you take the source code from the framework and modify it to meet your needs.
While it is interesting to have this option, its seems like a horrific idea to actually do this on a real enterprise project. With this sort of solution upgrading the Flex SDK will be painful at best, and impossible at worst. I think the only time I would ever do this is to get a bug fix into my code before it is available in a release, with the intent to throw away my class once the next release of the SDK is available.
From all the posts out there, it does appear this is a common thing to do in the Flex community. So, am I missing something here, or is this as evil of an approach as it seems?
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
I just finished a write up for InfoQ on the Flight Framework. Flight compares themselves to Cairngorm, without all the “boiler-plate” code. The association with Cairngorm is a turn off for me to seriously consider using Flight, as I still don’t understand what value Cairngorm provides (old post 1 & 2). That doesn’t mean I don’t believe that Flight may have value, but in learning about the framework there seem to be the typical assumption that everyone is out there looking for the perfect MVC solution (old post 3).
I lived through the countless MVC frameworks in Java. So, I don’t believe it is naive when I ask, what is so great about MVC anyway? We all love to work in code where the separation of concerns (SoC) have been adhered to, but do I need MVC to accomplish this in Flex? I don’t believe I do…
Anyway, back to Flight, they did allude to some additional features in the framework, like history management. Although that specific feature is available in Flex 3, there maybe other features that make it useful. The documentation is pretty slim right now – we will see what else is there when the docs evolve. For me, I guess I want to see frameworks that do more than attempt to enforce a pattern.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
I have updated my Flex security component called Chimp. I was working on implementing a suggestion to use the includeInLayout property instead of removing children, and found a number of issues in the process. I have expanded the sample application to help test the component. Also, it should give a pretty good picture of how the component works.
Here is what has changed since the last post:
- Replaced the “remove” action with “removeFromLayout” & “removeChild” actions
- removeFromLayout: This property use the includeInLayout property to remove components from view. This is preferred over the ‘removeChild’ action, but will not work in all cases (like TabNavigator tabs).
- removeChild: This removes the child from the parent.
- Update the component so it updates the view on any permission changes. So, it no longer require that permissions are loaded and set before the Chimp is loaded. The Chimp still needs to be added before the protected components are added because they are tracked with an event listener on the add to stage system event.
Please let me know if anyone else has suggestions on how to improve the component…
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
It’s true! At least to the same extent Mr. Bush is to blame for the current financial mess, and speaking as someone who is terrified by both of the extremes in American politics, he does deserve some of the blame.
For those of us in our early 30’s, there is little cause to be concern for ourselves (even at this advanced stage of economic sickness in the country). We must continue to work hard (or start for some), and hope for the best over the long-term. Honestly, the only thing that troubles me about the current mess is that it has a high probability of affecting my parent’s ability to retire at a reasonable age. This is the case for anyone over 50. As much as this is troubling on a personal level, it likely means a stay of execution for social security.
All the dooms day predictions of social security’s demise were based on all the boomers being able to leave the workforce in the very near term. Now, that those timelines will be extended for many unfortunate folks it probably means that another poorly constructed government program will have a much longer lifespan than anticipated only a few short months ago…
I do not believe anyone can predict what will happen in our economy in the next 6-12 months. I think the only certainty at this point is that all of our old assumptions will have to be re-evaluated once we get our collective heads above water.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
I’ve posted a simple component, called Chimp, for doing role based permissions in Flex through metadata. You can check it out at: http://code.google.com/p/flexible-chimp/. The quick overview is that you provide Chimp the user’s roles on start-up and then add meta data to the components for filtering what the user can see.
Here are the setup instructions:
1) Download and add the chimp.swc to your project library
2) Add compiler argument to keep necessary metadata:
-locale en_US -keep-as3-metadata+=Protected
3) Load the Chimp in your application. The Chimp must be loaded after role data is available, but before children are added:
Chimp.load(perms);
4) Add metadata to your Flex components:
[Protected(permissions="ROLE_ADMIN",notInPermissionAction="remove",componentId="this")]
[Protected(permissions="ROLE_UPDATE",inPermissionAction="enable",componentId="updateButton")]
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
Filed Under ( AIR, Flex) by jonr on March-2-2009
Swiz is a Spring like dependency injection framework for Flex. Check out my InfoQ news post covering it: http://www.infoq.com/news/2009/02/swiz-framework.
Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.
|
|
|