Blog

  • Don’t Smell the Roses, Go to a Garden: Joshua Bell Story is BS

    A few people Twittered and blogged about Joshua Bell’s solo in a Metro station. Most I read mourned humanity’s lack of ability to recognize beauty around us, being too enraptured with our own trivial problems. I concurred and moved on. Next day, I thought about it a few times while waiting on compiles or sitting in traffic (omg , I’m driving again!). The more I thought about it, the more irritated I got. The whole thing just didn’t sit right with me. It really seemed pompous, actually.

    I was fixin’ to rant, but a quick Google search showed I’m not alone (uno, dos). The authors there pretty much summarize my feelings as well. One thing they don’t really cover, however, is the experience part.

    Yes, a rose, alone in the middle of a large bustling city is definitely something beautiful, innocent, fragile, and neat to behold. However, one amongst a throng in a lush public garden is even better. One goes to a public garden to be amongst beautiful flowers. This is a consumer choice, and one that is usually planned, and looked forward too. The anticipation grows, batteries are purchased for the camera, grandma is brought along, lasting memories are created.

    Nine Inch Nails, for example. Weird, random websites appearing on various places on the web based on innocous phrases on T-shirts and lyrics. USB keys found in bathrooms randomly containing tracks for NIN’s upcoming album. The expected RIAA’s attack, with predictable backlash, only a few loudly proclaiming, “This is marketing genius… they all fell for it!”. If you didn’t catch my sarcasm, mainly using the RIAA’s legal aggression as a personified target for the angst ridden teenage youth, one of the target demographics for NIN’s music is just a fantastic marketing tactic; planned or not (naturally I think planned). While I loathe un-cited sources, this is still a great quote from someone apparently familiar with Trent Reznor’s involvement:

    “It’s not about slapping something on top of an existing experience,” the source says. “It must be its own entity. Make the experience as immersive as possible for fans.”

    People go to symphonies to enjoy the experience, and Joshua Bell is a contributor to that experience. You can’t rip Joshua Bell out of context, and shove him into one that personifies preparation for the trials of the day. We live in a day and age where consumers demand, and expect great experiences. They want control of the timing and place. Home theaters vs. going to the movies, time shifting video on your Tivo on Tuesday afternoon vs. Friday night Battle Star Galactica, making video you want to watch and publishing it to the world vs. 999 one way channels of DirectTV non-refundable crap.

    Instead of putting Mr. Bell out of place, they should of instead adapted the place to compliment Mr. Bell. Throw him in a monkey suit, add some of his other instrument playing friends, nicely decorate that portion of the metro, improve the acoustics, low lighting, and provide comfortable seating with an usher. Not the symphony, but hey… I’m a consumer in the 21st century, I want the symphony to come to me! THAT would of been significantly more positive.

  • Diffing on a Mac Resolution

    I have everything I need on a Mac now after finally getting svnX to work, and thus justifying it’s existence (still doesn’t work with Google Code, though… must need more practice). Subversion client? Check.

    All that’s left is a diffing tool that is comparable to BeyondCompare for the PC. I hit Google, and read this blog entry as well as every single comment.

    Subclipse? Negative, Ghostrider.

    1. I do not work from my code base. SVN goes into 1 folder and my local copy into another. I then shuttle back and forth using BeyondCompare. Subclipse forces you to work in your checked out files. There are a lot of advantages to not do this.
    2. Diffing tool is a joke when you’ve used BeyondCompare.

    Guiffy? Nope.

    1. I have to know Regular Expressions to exclude things? Um… no. I’m too dumb to use that feature, or is that I’m not smart enough to take advantage of it?
    2. I only gave it 1 hour, and got frustrated. Unfair, but I’m a user. I’ve got another month with the trial, so I’ll definately give it a ton more tries.

    BBEdit? Haven’t tried it yet. I couldn’t find anything describing diff stuff in their docs, so didn’t bother. Someone know more?

    FileMerge? A C guy I respect swears by it. I didn’t like it. It doesn’t (as far as I could find) support comparing file structures. This is an EXTREMLY important feature for me. The diffs do that same thing the others do where they have the strechy line things… dude, just f’ing point to the difference lineary, and I’ll fix it, you don’t need to kick it Sportacus style with the arrows for me to clearly see where the difference is.

    Solution? Purchase CrossOver, use BeyondCompare. 2nd day in a row and I’m not looking back. It just works.

  • Flex Chronicles #23: Compiling Modules on a Mac & Code Gen

    Modules don’t extend Application, but rather Module, which is basically a Container. As such, you can’t “preview” modules in Flex Builder like you can Applications. You instead have to load them into a ModuleLoader. A ModuleLoader has to then be placed in at least an Application container. Therefore, you can’t really develop with Modules in Flex without using Ant. You can, but it sucks.

    Ant, the build automation tool that comes with Eclipse, allows you to define a bunch of XML tags that encapsulate a task. A task can “compile my module” and “compile my app” as well as “launch my app”. You then chain them together in an uber task like “compile my module, compile my app, launch my app”, all with 1 click. Dope.

    Although Ant comes with Eclipse, it doesn’t come all mxmlc friendly. The free Flex compiler, mxmlc, unfortunately is usually launched via the exec tag in Ant. While Ant is nice in that it comes with simple tags, thus making it easy to read and learn, anything complicated is extremely frustrating. Combined with compiler parameters, linked tasks and resource files, this spirals out of control pretty quickly. Not to a Java developer mind you, just me.

    Thankfully, Adobe has provided some Flex specific Ant tasks which you can get at the labs. Rad.

    They didn’t work for me. Got weird errors. Problem? I’m a PC user, not a Mac user. However, I take my Macbook with me on client visits to force myself to learn it. Nothing like trial by fire I say. Long winded way of saying that spaces in your directories cause weird problems. In this case, the compiler will spit out this error:

    [mxmlc] command line: Error: default arguments may not be interspersed with other options

    Which is totally off base of what the real problem is. Thankfully, Google pointed me here.

    While I like how Ant works out of the box, and requires no configuration on my part with regards to the Flex Ant tasks (copy a jar, reboot Eclipse, copy files, mod provided build script)… it doesn’t scale well with customizations. While the Java kids have moved onto Maven, I’ve had it with XML coding. While Ant is doing a pretty good job at code generating my Cairngorm event, command, delegate, callback, and test cases per use case, build wise it just isn’t “easy” to do builds the way I want to.

    For example, some of my past build scripts with Flashcom (Flash Media Server) projects have involved an Ant build launching a Zinc wrapper SWF that did advanced build tasks. Ant’s build.xml files are nice if I need to tweak a build script; I can do so right from Eclipse in a text editor whereas my SWF uber-builders have to be “recompiled in Flash, and then post-processed in Zinc”. Sounds complicated, but it’s not. Code JavaScript ‘esque code, compile, and I have a fully customized build.

    Anyway, I’m this close to just demanding the next developer who inherits my code base deal with the fact I’ve implemented Rake (Ruby’s version of Make) as the standard build environment, even if it’s not the best in working with Eclipse.

    Bottom line, if someone utilized that new Java 6 feature, and wrote a JavaScript based build library, it’d be the coolest thing on the planet.

    …well, next to Bruce Campbell of course.

  • How big are my Flex classes?

    Joe Berkovitz has an entry here about a Java class in the free Flex 2 SDK that exposes how big each of your compiled ActionScript classes are in a given SWF. When an ActionScript class is compiled, it goes through a series of steps to become bytecode, a smaller size, more machine friendly format called “abc”. So, your 6k ValueObject could become 1k, not including the additional LZW “ZIP” compression that the Flash Player has built in for it.

    For Flex Developers, this is valuable if you are trying to reduce the file size of your Flex app, usually in the case of a publicly accessible application. If 9 million people a day are accessing your SWF on 12 Akamai servers, it behooves you to make her as small as possible, even if money is no option. However, one of the biggest problems with modules, a feature in Flex 2.01 that allows you to separate parts of your application out into “dynamically loadable DLL’s”, is there really isn’t a straightforward way to understand what parts of your application could benefit from modules.

    For example, as a GUI developer, I can pretty easily look at a design comp, and identify which parts would benefit from being loaded on the fly, and which are fine to just keep in the main SWF given the file size and performance requirements. If file size is important, later forms I can “load later” via a module so the larger PNG graphics don’t get included in the initial download. The user doesn’t need to see that form immediately, so I won’t make them download it immediately. The same goes for classes that aren’t seen. The code that makes up the form, for example, can only be download when the graphics that make it up are downloaded as well. Both of these can be packaged up in a module, and loaded on the fly later.

    Regardless, that’s good foresight, but extremely subjective. I have no solid evidence of the classes size, including dependencies, just the PNG graphics size once I rip them out of the PSD /AI file. Furthermore, if the form has an initial transition, and it is choppy because the form has to load a lot of assets into memory when it downloads and then plays, the designer will give me hell. Thus, we are back to having very subjective decisions guide our choices of which classes / assets go into modules, and those who stay in the main SWF. Not a very good way to make software.

    Another example is, “He’s over 2000 lines long and the user barely ever hits this complicated form until the very end of this wizard… let’s invest time making this part a module because we ‘guess’ it’ll help.”

    Joe Berkovitz’s Apollo app should help change that. Using the Java class in tandem with a Flex Tree and WebKit HTML control, you can get a visual breakdown of how big each class AND package is in your code base. Joe wants to code some additional “smarts” into the code to proactively identify some key bloat areas that could be broken down into modules (if I read his entry correctly). Even if he doesn’t, just a Tree with file sizes like he shows on his blog is enough for me to make more informed architecture decisions.

    Send Joe cookies so he finishes this app.