The Blog of Maxim Porges

Archive for May, 2008

  • flex-mojos for Maven

    Thanks to Chris Scott for making me aware of the new hotness in the Flex/Maven space: flex-mojos. We’re going to be getting our Flex build lifecycle automated at Highwinds after we send the latest StrikeTracker release to the Streaming Media East conference on 5/19, and I have a good mind to use this tool if it works nice and simple like it is supposed to.

    So far, so good: I downloaded the code from the Google Code SVN site and ran a mvn install for the Swiz framework, and it worked great. All the dependencies downloaded automatically, and the SWC compiled and installed to my local repo as expected with no fuss. I also noticed that the flex-mojos site is hosting all the parent POMs and dependencies for Flex in their own web repository, which makes installation and usage a snap.

    This is Maven at its finest; I must admit that I love it when a plan comes together.

    For more info, I suggest checking out the project blog and Maven site docs. There is also a nice multi-part series on building the entire Flex/Spring/BlazeDS/Hibernate stack using this plugin with Maven – a must have for any serious Flex/Java shop.

    2008.05.09 / no responses / Category: Uncategorized

  • User Interface Resource Center

    This could be pretty phat. (via InsideRIA)

    2008.05.09 / no responses / Category: Uncategorized

  • Flex Is (Not) Mocking Me

    Having recently rekindled my inner Test Nazi after getting back in to coding full time and learning dpuint, I’ve been rather disappointed to find that there is no easy way to mock objects in Flex for unit testing. I was able to find a Proxy-based mock framework for AS3 that looked pretty mature, but you can’t pass mock objects in to methods since the compiler notices that they are not of the appropriate type expected by the receiving method and complains.

    Even after concocting an abundance of attempts to trick the compiler in to accepting my mocks, they were all met with runtime errors. Bah!

    Seems like the only way to get true mocking behavior with the ability to pass a mock object in as a method argument and see it fly is to extend a class/implement an interface, which obviously licks balls.

    If anybody has any bright ideas to the contrary, please let me know. I have been able to get pretty good test coverage without mocks, but would love to get through that final mile without having to resort to extending classes. Perhaps Adobe could cover this in Flex 4 for me along with all the other cool stuff they have lined up?

    2008.05.08 / 2 responses / Category: Uncategorized

  • IBM Launches Pilot Program for Macs

    Considering that my shiny new Highwinds-sponsored MacBook Pro arrived in the mail this afternoon, this was a nice item to see on the RSS feed today: the slow bleed of corporate users switching over to Macs has sped up to a trickle with the recent IBM pilot program for Macs.

    Reasons cited include the following. I have bolded the interesting items to note.

    - Alternative to Microsoft Windows
    - Less prone to security issues
    - Widely used in the academic world with which Research has close ties
    - Many new hires are more comfortable with the Mac and lately asking for it
    - Growing Mac community in Research and within IBM that finds the development environment on Mac more convenient
    - Growing acceptance of the Mac as a consumer and business oriented client platform
    - WPLC strategy includes significant investments in achieving the Mac platform parity

    Of all the items, I am most interested in the one about “Many new hires are more comfortable with the Mac and lately asking for it”. The iPod halo effect got people on to the Mac at their homes, and now the Mac at home halo effect is getting people using Macs at work. When big companies like IBM start supporting their software on the Mac, there are going to be even fewer reasons for corporate environments not to make the transition.

    Frankly, with all the technology options today I think it’s simply stupid to build an app for a single platform; it’s so easy to build cross-platform apps these days. If Microsoft delivered Visual Studio on the Mac I probably would have learned .NET and C# years back.

    Personally, I’d love to see Rational Software Modeler running on the Mac natively. Let’s see if IBM stays the course.

    2008.05.08 / no responses / Category: Uncategorized

  • TortoiseSVN-Like SVN Client for OS X

    I heard about SCPlugin for OS X at cf.objective() 2008. It’s a Finder plugin for OS X that lets you manipulate SVN repos, much like TortoiseSVN for Windows.

    Once installed, SCPlugin knows when a directory in OS X is under source control from SVN, and shows you icons on the contained files (again, just like TortoiseSVN). You can then perform SVN operations by right clicking files and navigating to the More => Subversion submenu.

    I’ve only used it a little so far, but it seems stable and easy to use.

    2008.05.08 / 4 responses / Category: Uncategorized

  • cf,objective() 2008 Presentation Materials and Code for "Flex: No Frameworks Required"

    I did a mini repeat session of my 2008 cf.objective() talk at our Adogo user group here in Orlando. As a result, I posted the source, presentation materials, and links to the Adogo blog and SVN repo.

    The SVN repo is publicly accessible for reads. To check out all the code and materials to your local machine, simply put the following in a command line prompt (you must have the Subversion client installed for this to work).

    svn checkout http://svn.adogo.us/200805/FlexNoFrameworksRequired/ FlexNoFrameworksRequired-read-only

    Note that the presentation file is several MBs, so it will take a while to come down the pipe.

    2008.05.08 / no responses / Category: Uncategorized

  • Possible Fix for Flex Builder 3 Running Like a Dog/Crashing on OS X

    I’d noticed that Flex Builder 3 was kind of running like a dog on OS X, and crashing at least three times a day when working with large projects. My laptop is plenty powerful enough, so I figured either (a) the software is buggy, or (b) the config settings for OS X were not right.

    I opened the Flex Builder 3.app file and found the FlexBuilder.ini file, which I modified to the following settings. The memory seemed to be capped at 512 MB from what I could see, and since I am usually running FB3 almost by itself during my day job I figured I could be a little more generous with the memory.

    Here’s my config file. I pretty much multiplied all the settings by two if they were small, and added 256 MB to the JVM Xmx to allow a higher memory ceiling. Since the change, FB3 seems much more responsive and has not crashed on me yet (knock on wood).

    -vmargs-Xdock:icon=../Resources/flexbuilder.icns-Xdock:name=Flex Builder-XstartOnFirstThread-Xms256m-Xmx768m-XX:MaxPermSize=512m-XX:PermSize=128m-Dorg.eclipse.swt.internal.carbon.smallFonts-Dorg.eclipse.swt.internal.carbon.noFocusRing

    On a side note, when I am using FB3 with only one or two small projects open, it runs great; the problem seems to be related to huge work-related projects only. This is what makes me think that the memory settings were the underlying issue.

    2008.05.06 / no responses / Category: Uncategorized

  • More Feedback on Flex Without Frameworks

    I ran in to both Chris Scott and Joe Rinehart on separate occasions this evening after my talk, and they both said that they were doing Flex development exactly like I was – no framework, extending EventDispatcher in their Controllers, etc. I find this encouraging considering the large amount of respect I have for both Chris and Joe’s skills and contributions to the development community, and the fact that they are both framework authors.

    Brian Rinaldi pointed out that I had a packed room for my session, and that this was interesting considering that I was presenting a Flex topic at a CF conference. Apparently he had seen lighter attendance at the other Flex talks he had been to. Brian wrote up a play-by-play of my session on his blog.

    Naturally, not everybody agrees with my approach. Nahuel pointed out some things that Mate makes simpler, such as handling invocation of remote services and handling the wiring and response handling of AsyncToken for you all in one tag, as opposed to scripting these items as I did in my sample application. I’m definitely going to play with Mate more so I can form an informed opinion before I comment on it in great detail.

    Luis Majano really liked the way that I put the Flex app together, and was excited to put some of the patterns in to his sample ColdBox application for his workshop demo tomorrow. I guess if nothing else, this shows that the patterns really do apply to multiple technologies. On a side note, that guy is a coding machine.

    Expect more feedback tidbits to be posted here as and when they come in.

    2008.05.03 / 4 responses / Category: Uncategorized

  • Future of CF Part II

    So I went to the CF 9 BOF tonight after dinner, and got there a little late, but the topic of conversation when I arrived was features we wanted to see in CF. There were a lot of suggestions, without much of a common theme. Jason Delmore and Adam Lehman did a pretty good job of saying “yes, but would you pay for that?” with each suggestion.

    Honestly, I feel that CF is pretty full-featured, but is just too verbose (since it’s mostly tag-based with limited script support) to compete with the other free frameworks out there. I got up and said as much, telling them that we had decided not to upgrade CF at CFI before I left (read: $72,000 in lost CF licensing revenue), explaining that what I thought they really needed to do was halt development on CFCs and implement AS3 in the server. This was met with a round of applause from the attendees of the BOF, followed by about fifteen minutes of discussion on this topic alone. Joe Rinehart kicked it up a notch and suggested that they take this one step further and make an AS3-to-Java compiler, which seemed like a good idea to me for multiple reasons.

    After the BOF, Adam Lehman came over and sat with a group of people I was sitting with from the community (including heavy hitters like Chris Scott, Joe Rinehart, Nahuel Foronda, Laura Arguello, and Luis Majano) who were having a post-BOF discussion. The members of the community were interested in hearing why Adobe would not consider taking CF in the direction that Flex has gone: implementing a true XML syntax on the front end, and AS3 as a server-side scripting language. As part of the transition, there would be heavy support for Ajax instead of straight HTML applications. Adam rightly pointed out that doing so would be like making a new product altogether, and that this would most likely mean canning CF.

    Canning CF is apparently not in the cards. Adam said that 75,000 additional developers had come to CF in the last year as a result of learning Flex and getting interested in CF – kind of a “halo effect” from Flex. Whether or not you believe those numbers, that’s the official stance; Adam did point out that Adobe was as surprised as anybody to see this. Adam also said that they had done extensive research in to open sourcing CF for the community to take over, but that people who were not using CF had cited neither the cost as a barrier ($1,200-ish for the professional version), nor had people indicated that they would actively develop the platform. Apparently the same people who green-lighted the open sourcing of Flex had put the kibosh on open sourcing CF once the research was complete.

    Adam also pointed out that you don’t ask the top brass if you can make radical changes to a platform that has attracted tens of thousands of new developers in the last year. Even so, it’s pretty clear that the CF team is doing some deep soul-searching to figure out where to take the product next. There is obviously a huge amount of competition from free platforms that are (by many measures) more productive and cheaper, and many of the thought leaders in the CF community are hanging up their CF hats and putting on those for other technologies instead.

    One big positive thing that has come out of this is that Adobe is soliciting a lot of feedback from community representatives to drive the direction of CF. As I said before in another post, only time will tell what happens to CF in the long run.

    2008.05.03 / no responses / Category: Uncategorized

  • Swiz, Mate, and Other cf.objective() News

    Sorry for the lack of posting; I have been busy wrapping up the code samples and slides for my presentation on Flex without frameworks, which was well received when I delivered it to today at 1:30 PM.

    A few other key things took place at the conference, which I will describe in brief now and in more detail later when I have the time to do them justice.

    Swiz: IoC for Flex
    Today, Chris Scott publicized Swiz (his IoC implementation for Flex). I got a sneak preview on Friday, and was able to make some suggestions that Chris got implemented before he rolled it out.

    Swiz is pretty darn clean. It uses annotations to autowire components to each other, much like Spring 2.0 or Guice. Chris, Nahuel (the creator of Mate [pronounced "mah-tay"]) and myself sat around a little this afternoon and threw around some ideas for additions to the IoC implementation. Nahuel was a Flash wizard in a past life, so he has a very deep understanding of the Flash player internals and some of the more intricate details of Flex (such as the annotation support and SystemManager for trapping events). Some of Nahuel’s suggestions would completely negate the need for Swiz to be “booted” on application startup, and provide runtime IoC – very cool. Meanwhile, I plan on contributing AOP support if I can find the time between everything else I have going on.

    Mate Framework
    Mate is a framework that the ASFusion team produced for Flex applications. I attended Laura’s session, but would not do it justice in this quick pre-dinner post, so I will save my thoughts for a more detailed post later on. Initial impressions are as follows: it supports an ESB-like controller routing (very cool) without any invasive code (awesome) but has some capabilities that looked a lot like the FB3 switch (bleh), although if you don’t want them you don’t have to use them.

    Like I said, I will cover Mate in more detail later on. I see the biggest benefit being that it is tag-based and incredibly easy for developers to pick up, so it will lower the barrier for entry to Flex best practices to those who don’t have a deep background in OO system design, while at the same time alleviating the cruft required from Cairngorm (which newbies typically flock to because all the cool kids are doing it). That being said, I listened to Tom Burleson’s podcast on the The Flex Show regarding the Universal Mind extensions to Cairngorm, and they sounded pretty decent, so I should really check those out before I make any more snide remarks.

    The Future of CF
    In discussions at the pre-conference reception I was telling people that this might be my last CF conference. I love the people I get to see here each year, but there just wasn’t that much for me personally to glean from the sessions since I don’t code in CF any more (although the interactions with Chris Scott and Nahuel today alone were worth the cost of attendance and travel).

    What surprised me, however, is I got the same impression from several of the prominent speakers I’m used to seeing on the circuit. I won’t out anybody, but these were some big names. It seems that people have moved on to Rails or Flex or Java primarily, and the CF work just isn’t as exciting any more.

    I guess this could mean one of two things: either there is room opening up for new faces in the CF circuit, or CF is really losing its mindshare after all. In my opinion, Jason Delmore had nothing significant to present for CF in his keynote other than the fact that it had been reclassified in Adobe’s scheme of things out of the Enterprise space and in to something else (I have it on tape, but don’t have the time to get the name of where CF is classified now), and that they were working on enhanced tooling support – so great, finally on version 9 there will be decent tools for CF from Adobe (what’s wrong with CFEclipse, anyway? Adobe never cared before).

    I think it’s time for a bigger shakeup with CF. Adobe needs to change the language to catch up with the times, or open source the engine and be done with it (i.e. let people who want to change it put in the effort, and make it something better). They can always hold on to the LiveCycle stuff for themselves as part of the Enterprise package.

    Then again, I could be completely wrong. Luis Majano is still gung-ho about CF, and continues to add features to ColdBox like crazy. So, maybe I’m just a curmudgeon now that I’ve moved out of CF completely and moved on to Flex. Only time will tell.

    2008.05.03 / no responses / Category: Uncategorized