I have a habit of starting posts and then deciding not to post them because I am not sure anyone really cares. But I feel like anytime I get together with a group of developers I spend a good deal of time explaining things or talking about something fun that is going on. The main difference between that and my blogging is in that case someone else always picks the topic. And I find that I like that a lot.
So I have decided to create a form on this site where you can make topic suggestions for screencasts and for blog posts. Please feel free to use the Topic Suggestion Form under the contact menu, to make suggestions for topics you would like to know more about.
Currently I have in the works several posts.
- Creating an IconButton Skin (version 1)
- Extending Gumbo Skin components
- Packaging Gumbo components for others (IconButton Skin version 2)
So stay tuned for those. Hopefully I will have the code and screen casts posted for those in the next couple days. As for topic suggestions please feel free to suggest topics from any number of disciplines including: Flex, ColdFusion, Ruby on Rails, Java, Groovy, Grails, BlazeDS, LCDS, GraniteDS and just about anything else :)
Simeon Technology
Note: Some how this post never actually made it out of draft on my blog. Originally planned to be posted on 5/22/09. Sorry for the delay.
I had an opportunity to present on Building AIR applications with JavaScript last week at CF.Objective. In preparation for this conference I built a few examples and used JQuery. JQuery has an alias of $ which references the JQuery object, the result is that you can grab a reference to an element or group of elements on the page using the $() function. This is a great shortcut to the document.getElementByID and also adds in a bunch of other types of lookups.
Now this week I am back in a CF application and I am using ColdSpring to do some bean loading for me. I have my ColdSpring bean factory wired into my application scope so that I can call the getBean() method to retrieve the classes I need in my services. As I was typing out the long string of vars I need to access a bean, I was reminded of the document.getElementByID shortcut that JQuery provides and decided to see if I could make something similar work. I set up an alias of $ to a function which calls application.beanFactory.getBean() and returns the bean. Originally I just wired that to the application.beanFactory.getBean function but this brought the function out of scope and it could not call the other methods that are available in beanFactory. So check out my code block below to what I did. Whether or not this is a good idea, I couldn’t really say. It was just an idea I had that I wanted to play with. Obviously looking up the bean is all that this alias does. It doesn’t add nearly the value that you get with that association in JQuery.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <cffunction name="setupColdspring" access="private" output="false" returnType="void">
<cfset coldspringConfig = '/beans.xml' />
<cfset properties = StructNew() />
<cfset properties.dsn = "my_dev_dsn" />
<cfset application.beanFactory = CreateObject('component', 'coldspring.beans.DefaultXmlBeanFactory').init(defaultProperties=properties) />
<cfset application.beanFactory.loadBeans(coldspringConfig) />
<cfset application["$"] = getBean />
</cffunction>
<cffunction name="getBean">
<cfargument name="beanName" required="true" />
<cfreturn application.beanFactory.getBean(arguments.beanName) />
</cffunction>
<!-- get a bean -->
<cfset myBean = application.$("myBeanName") /> |
Thanks to Sean Corfield for showing me that $ could be a function in his cfSpec preso at CF.Objective.
Simeon Technology
I would like to think that I do a lot to help people in our community. I work with local user groups, present at conferences and generally put myself out there to aide people where I can. I don’t do this for any selfish reasons, I do it because I feel I should. I don’t ask for anything in return for my efforts other than for others to turn the favor and give in whatever ways they can. I don’t have a donation button on my blog to make money. I don’t have an amazon wish list for gifts. I don’t think what I do deserves those things.
But I have decided there is a way that if you wish, if you feel like giving back, you can help me. I have decided to participate in the “Race for the Cure” in Portland this year. I will be running in the race, but more importantly I am fund raising for the cause.
I know in these times of economic stress, its hard to think about giving money away for anything. But I would like you to consider giving for this fantastic effort.
Should you feel so inclined, Please visit my race page and click the “Donate on behalf of Simeon” button.
Thanks for your time and consideration. I know this is not usually the kind of thing I talk about on my blog, and it was hard to write and ask for your help. But I think this is important and I hope you do too.
Simeon Technology
Now that the Flash Builder and Flash Catalyst betas have been released on labs, we are going to see a huge influx of people taking their first look at what Flex 4 has to offer. Many of them are going to be migrating from Flex 3 and they are going to see a lot of changes about how things work. Concepts that were very familiar in Flex 2 and 3 are now overlayed with new options that make cause for a lot of study. So what really has changed about Flex 4? I believe there are 2 themes that need to be discussed to answer that question.
The first theme is the idea of what Flex is. For every release up until this point there has been this concept of a namespace. We were required to declare the mx prefix and alias it to a URI for Flex. We have always done it, it was required, but not many have dug into what that is actually doing for us. At the bare minimum it references a manifest file which has a list of components that should be included in the library associated with the prefix. But at a deeper level you are also selecting what version of the MXML language you were using. Because in every single previous release there was only one MXML language available and one component set available for the release, we only had to declare one namespace. But in that regard Flex 4 is completely different. When you consider Flex 4 its not just one MXML version and one component library. In fact when working with the Flex 4 SDK you have three (3) languages (MXML 2006, MXML 2009 and FXG 2008 )available and two (2) visual component libraries (Halo and Spark) to choose from. The fact that we have lost that one-to-one pairing necessitates the use of multiple namespaces to make use of all these features. You will choose from the primary MXML language namespace and then potentially include a second namespace which accesses the component library of your choice. However the beauty of this is that MXML 2006 and MXML 2009 languages can be intermixed when using the Flex 4 SDK. The primary note to take away with theme 1 is the version of the framework you use is no longer as important to the version of the MXML language you choose as your base.
The second theme is about leveling the playing field around implementation. In the MXML 2009 language and in the Spark component set, I think the greatest achievements have been the ones that allow us to adapt and build components without having to override core built in behaviors. A perfect and wonderfully simple example of this is skinning. The skins for the visual components in Spark assign their initial UI in exactly the same manner we use to override it. That is the full visual implementation of a component is in a Skin class which we can copy, or completely replace. The life cycle for components has been adjusted so that we can very easily replace the built in skins with our owns, and we have been given the visual tools required to build those skins. In that same manner Adobe has opened the door for alternate UI frameworks to live right along side the built in Halo and Spark component sets. By separating the language from the list of component implementations you can now choose to use MXML with Spark and Halo, or with a completely separate UI framework like OpenFlux or OpenPyro. These UI frameworks can take full advantage of the MXML language for layout, but without having to be built on top of the existing Halo components to be displayed. This is an amazing treat and something that could allow us to truly take the Flex SDK and MXML as a language beyond the boundaries we currently abide by. It is completely feasible that we could create a component framework specifically for mobile that takes advantage of FP 10 in the browser of mobile handsets and through devices on the Open Screen Project.
In the end I think its important to keep in mind that Flex 4 is not just an increment in the version number. It is truly a step forward for the framework in terms of openness, functionality and design. The upgrade may cause some changing in how you relate to it, but it is all for the best.
Simeon Technology Flex, halo, mxml 2009, spark
I got pinged several times this morning in response to Aral Balkin’s post on the use of namespaces in Flex 4. I can’t get his site to load so I can not comment on his post there. But I feel strongly enough about this matter that I wanted to get something out in response right away.
Namespaces in Flex are the RIGHT decision. No matter how you look at it using namespaces to reference component libraries is how it is done, and how it has always been done. The difference is in Flex 4 you have options about what libraries you get to use. And the thing that you have to actually take into mind is that because of this option you may need to change the way you look at the code in the Flex SDK. Flex is not a language. The SDK has 2 languages that are used to compile content to SWF, those are ActionScript 3 and MXML. Building applications for Flex 4 means choosing which version of the compiler and the mxml language you wish to use, and then picking and choosing components from whatever UI library you wish (Halo or Spark).
Regardless of what the classes in Spark are named this would have been the workflow. To migrate an application from Flex 3 to Flex 4 you would have had to change all the namespaces in your application to the MXML 2009 namespace, and then added in the the new components you wished to make use of. The fact that the components in Spark don’t have names with superfluous extra characters would not have changed the workflow in the least. I have migrated apps to Flex 4, before the name change, during the time the classes were named poorly, and after. Because of the advances in the language, Flex 4 requires a new language namespace and allowing users to pick components from their choice of UI frameworks by using namespaces is invaluable.
So I am sorry Aral, on this topic I feel you are dead wrong. Namespaces are part of XML (and therefore MXML) and they are the correct way to make ambiguous nodes unique. A Panel is still a Panel regardless of how it gets skinned and giving it another name when there is already infrastructure for allowing the two to coexists would be an epic FAIL.
So again I want to say thanks to the Flex SDK team for not screwing up the language just for backwards compatibility sake. Once Flex 4 has been released and the upgrade path begins, people will be very happy that the classes they use are not misnamed. And new people coming to the language will not have to be explained to why the Flex 4 components couldn’t just be named what they are.
Simeon Technology halo, mxml, mxml 2009, namespaces, spark
Back a few months ago I had the opportunity to present an introduction to Flex talk for the PDX RIA group. I promised to post the files we built during the live demo. Then this week I was honored to present and Adobe Tech Wedndesday to my peer Adobe UGM and Community experts. I gave a very similar talk and the demo was almost identical.
A couple people have asked for the files we created during the demo, and since I dont think I ever posted them after the user group meeting, I wanted to make sure I actually made them available.
Flex 101 - Back to basics - Demo Files
And as an added bonus, the presentation I gave was recorded so if you are feeling like enjoying a Flex 101 talk please view it here. My actual presentation starts at about minute 15, but Leif has a very important PSA in the beginning.
Simeon Technology
I had a friend ping me tonight and ask me a Flex 4 question. So I whipped up a quick demo to see if I could provide an example. I was quickly stunned to find that I had an error in my project regarding the Matrix3D class.
“1046: Type was not found or was not a compile-time constant: Matrix3D Unknown Flex Problem”
Now typically this error means you have missed an import in one of your classes, but this particular error was not found in my code. I did a quick google search and found the answer to my problem.
Of course when I set up my project I did not change the target version of Flash Player. So now that the Flex framework has been updated to make good use of these new classes that are only available in the FP 10 release, my code had errors.
So should you come across this problem the solution is easy. Thanks to ShortFusion for posting the fix.
Simeon Technology
It was an exciting weekend in Seattle. Adobe hosted the first ever public Bug Quash event. Led by Nate and Marty the community finally had an opportunity to show Adobe we are willing to give back and help. I don’t know exactly how many bugs got quashed during the event, but I know that many developers became certified to contribute to the SDK and learned how to setup their environment to do so. It was a grand day and marks an occasion for us to remember in the history of the Open Source Flex SDK.
On another front I am also very happy with the project on a completely different front. Whether or not in response to my ramblings about the short comings of the open source SDK in the past, Adobe has taken great lengths to open the discussion and planning around the project. One such example is opening the ARB (Architectural Review Board) postings. One such posting laid plans for the new ComboBox in the Gumbo component sets. A Flex community member posted some ideas about how they though the ComboBox could be improved. In response an Adobe engineer responded on the email list with considerations and thanking him for his input. Tonight Dave Story, VP Developer Tools at Adobe also commented on this post, thanking him for his enormous contribution. I feel this event is just as big as the contributions that were made this weekend at the bug quash this weekend. Iwo has taken the opportunity to effect change to the Open Source SDK proactively which is so much more powerful than retroactively covering bugs.
The opportunity to help shape the Open Source SDK is something we could only have dreamed of a short while ago.
So thanks to Adobe for allowing the community to be a part of their open source project, and thank you to the community for coming together and showing them we are ready for the responsibility of helping them make it better.
Simeon Technology
I have been having a hard time getting things written down on this blog lately. Its not that I don’t have anything to say, hell get within 10 feet of me and you can’t get me to shut up. The problem is I am not feeling that writing out my thoughts and feelings are really expressing myself well (I am not a great writer). I keep thinking I need to do more screen captures and that way I can just talk it out, but it seems every time I do this I end up in an endless loop of editing and recapturing (nothing in the world bothers me like the sound of my recorded voice).
I almost feel like I need to just fire up a connect room, twitter a topic and ramble to anyone who wants to listen. And while i can record that I can’t very well get it posted back here for viewing which is something I kinda like. I almost wish I could expose my connect recordings via Adobe TV because at least those I can embed here. I have never tried doing screen capture while recording a connect presentation, but I can’t think that would go well.
So where does that leave me? I have lots of things about Gumbo, Flex, Open Source, Java and a couple other things I have been working that are just itching to be shared. But I just can’t seem to get the motivation to get them written.
How do you get motivated and what outlets do you make use of to get your ideas out to share with the world?
Simeon Technology
In recent years there was only one Open Source conference and it was in Portland. But OSCON has grown beyond the means of our humble conference center and as such has choosen to move on to a bigger venue. OSCON has been the conference I have most wanted to attend for about the last 6 years. I love Open Source software and I love the ecosystem around it. But I usually don’t end up at OSCON, because it is wicked expensive and at any given time there are 15 sessions going on (3-5 of which I really want to see). So between the cost of the ticket and the cost added on to travel to San Jose, OSCON is not on my conference destination this year.
The fact that OSCON left Portland may actually be the best news I have heard all year. Because in its wake it left a void just begging to be filled. That void has been filled by Open Source Bridge. Open Source Bridge is a conference that I feel embodies all of the heart and intention of Open Source software, without all the commercial junk that has overridden OSCON. OSB stands to be a 3 day event of gigantic proportions, with sessions, bug squash events, code sprints and hackathons.
If you are looking for an Open Source Conference and are having problems stomaching the bill incurred in trying to attend OSCON, or the dissappointment associated with missing half the sessions you want to see, then perhaps you need to check out the real Open Source Conference - Open Source Bridge.
Simeon Technology
Recent Comments