Subscribe to feed
Blog | About

Archive for February, 2007

Belgian Beers

I don’t know a ton about beer but I do know that one of my favorite hobbies is seeking out beers that I have never heard of and giving them a try. Sometimes I taste something that doesn’t sit well, but have never disliked a beer to the point of not finishing the bottle or pint. I try to remain aware of regions, breweries, and terminology but prefer to spend more time finding varieties I have not yet tried and giving them a shot.

One consistently true fact of trying different beers is that Belgian beers truly are a cut above the rest. I don’t know that I have ever tried a Belgian beer that I wouldn’t place in my top 20% of beers I enjoy most.

That said, here are a list of some Belgian brews that I enjoy enormously and that are easy to find in the US. In Atlanta all of these can be found at liquor stores and even at the grocery stores in the city.

  • Chimay - all varieties
  • Gulden Draak (favorite on this list, not in grocery stores but can find it at liquor stores)
  • Hoegaarden
  • Leffe Blonde
  • Stella Artois
  • Three Philosophers (technically brewed in the US but is really fantastic)

Costco sometimes sells a Belgian beer 18 pack with Hoegaarden, Leffe Blonde, and Stella. Check out this site for more information about specific breweries and styles. I am especially fond of the Abbey / Trappist ales both for the taste and for the coolness of the history behind them. Here is the brewery that produces Three Philosophers.

I once worked very briefly (couple dozen hours) on the website 80beers.com. Though it isn’t perfect, it does have some pretty extensive beer listings and might be worth browsing through. It would have been a neat site to help with for a more substantial period of time but my full-time job really started to heat up and I ended all existing contract work as quickly as my contracts permitted. The only work I was really able to do was development of an administration panel.

EDIT: I made my first trip to The Brick Store Pub last week. If you live in the Atlanta area you owe it to yourself to visit this fantastic place. Their Belgian beer list will put any other establishment to shame and they serve everything correctly.

Comments (2)

Flex2 & ANT

I’ve had the opportunity to work with Adobe’s Flex2 and the Flex Builder IDE a substantial amount and have loads of tips and thoughts about the environment - both positive and negative. This first Flex2 post is about building a Flex2 project with Ant.

Flex Builder has some issues. While the debugger and design view can be nice, its weakness with ctrl-space completion and lack of refactoring support can really alienate a Java developer accustomed to the fantastic intelligence of Eclipse and IntelliJ IDEA (and not to mention fully capable Linux versions). I’ll post specific pointers and tips for working around Flex Builder’s weaknesses in the future. For now I’ll just describe how to use ANT to build your Flex2 projects.

My philosophy on projects is that if your team is larger than 1 person there should be absolutely no dependencies on an IDE or an environment to check out, modify, or build the code. If this doesn’t sound incredibly obvious, I highly recommend reading Practices of an Agile Developer or something similar.

That said, putting together an ANT build file that mimics what Flex Builder does under the hood is a great idea as it eliminates the IDE dependency and makes more advanced deployments easier as you can take advantage of a proven, professional build system in ANT. I’ll just do a basic configuration here and mention a few gotchas. If are hitting a brick wall with ANT and Flex2 just leave a comment and I will try to help.

If you just want links go to the Flex Ant Tasks page at Adobe Labs and optionally read this page for some documentation and tips.

Alternatively, here is a quick example. This assumes you have a project setup like this:

/myProject/Main.mxml - the main application mxml file
/myProject/etc - contains images, xml, or other project resources
/myProject/lib - contains any external libraries (.swcs)
/myProject/src - your .mxml and .as files
/myProject/build - the directory to place build artifacts
  • Make sure you have ANT properly installed
  • Extract the flexTasks.jar file from the zip on the Adobe Labs page and place it in your project’s lib directory
  • Create a build.xml file in your project’s root directory (see below)
  • Optionally configure Flex Builder to use your project’s build directory for compiler output and running/debugging (instead of the “bin” directory that is used by default). This simply make the build process and output more similar to that of developers using the ANT tasks

Sample build.xml

This covers compiling debug and non-debug versions of your swf as well as copying additional resources into your build directory. The build file can get complicated if you have lots of source directories, lots of external libraries, or if you need to pass the compiler special arguments (such as for preserving custom metadata).


<?xml version="1.0"?>
<!–
Required Environment Variables:
FLEX_HOME: must point to the root of your flex sdk (probably in flex builder directory)
–>
<project name=”myProject” default=”compile”>

    <!– Make the Flex Ant Tasks available –>
    <taskdef resource=”flexTasks.tasks” classpath=”lib/flexTasks.jar”/>

    <!– Module properties –>
    <property environment=”env”/>
    <property name=”build.dir” value=”build”/>
    <property name=”swf.name” value=”MyProjectSwf”/>
    <property name=”root.mxml” value=”Main.mxml”/>
    <property name=”locale” value=”en_US”/>
    <property name=”FLEX_HOME” value=”${env.FLEX_HOME}”/>

    <!– Clears out the build directory –>
    <target name=”clean”>
        <echo message=”Removing build directory contents…”/>
        <delete includeemptydirs=”true”>
         <fileset dir=”${build.dir}” includes=”**/*”/>
        </delete>
    </target>

    <!– standard compile w/o debug –>
    <target name=”compile”>
        <antcall target=”perform-compile”>
            <param name=”debugMode” value=”false”/>
        </antcall>
    </target>

    <!– compile with debug –>
    <target name=”compile-debug”>
        <antcall target=”perform-compile”>
            <param name=”debugMode” value=”true”/>
        </antcall>
    </target>

    <target name=”perform-compile”>
        <!– Make sure the build directory exists –>
        <mkdir dir=”${build.dir}”/>

        <mxmlc
            file=”${root.mxml}”
            output=”${build.dir}/${fullSwfName}”
            incremental=”true”
            debug=”${debugMode}”
        >
            <load-config filename=”${FLEX_HOME}/frameworks/flex-config.xml”/>

            <!– directories outside of your ‘main’ source directory –>
            <source-path path-element=”${FLEX_HOME}/frameworks”/>

            <!– list any swcs in your lib directory to include –>
            <library-path dir=”lib” append=”true”>
                <include name=”Cairngorm.swc”/>
                <include name=”SomeOtherLibrary.swc”/>
            </library-path>

            <!– flex sdk core libraries –>
            <library-path dir=”${FLEX_HOME}/frameworks” append=”true”>
                <include name=”libs”/>
                <include name=”../bundles/${locale}”/>
            </library-path>
        </mxmlc>

        <!– copy over the etc directory contents –>
        <antcall target=”copy-files”/>
    </target>

    <!– Copies contents of /etc to /build –>
    <target name=”copy-files”>
        <copy todir=”${build.dir}”>
            <fileset dir=”.” includes=”etc/**/*”/>
        </copy>
    </target>

</project>

This may not be the most barebones build file possible for an initial example, but it is a realistic one that takes into account external libraries and non-code items such as images and xml that you may want to use outside of the swf. With this file you can run any of the following commands from the root of your projects:

ant:
runs the default target, currently set to “compile”
ant compile:
builds a swf from your source code and places it in the build directory along with the contents of /etc
ant compile-debug:
same as compile except it generates a swf that can be debugged
ant clean:
deletes the contents of the build directory

ant copy-files:
copies the contents of /etc to /build. used as part of other targets but could be used individually

Some Notes

  • The FLEX_HOME property must be set in your build file - it is an undocumented requirement of the mxmlc task
  • Many mxmlc arguments available if you invoke the compiler directly are not available in the mxmlc ANT task. For these you will need to create a custom configuration file and use it in your ANT target. See this page for an example of setting up the config file. To use a config file in your build.xml simply add an additional <load-config> property to the mxmlc task.
  • If you are using Flex Builder it is best to use its preset builder and not change it to use your ANT targets. If you hook Flex Builder to ANT directly you will lose the benefits of inline error messages and warnings when building.
  • Note that the result of the copy-files target isn’t something automatically performed by the build process of Flex Builder. There may be a cleaner way, but you can configure an additional builder for your Flex Builder project that will run the copy-files target of your ANT build file after the regular build-related tasks have completed.
  • The above build.xml file assumes all developers have a FLEX_HOME environment variable set on their machine. This may seem like a hassle but it is a far more reasonable approach to obtaining consistency across platforms and environments that requiring a specific and expensive IDE.
  • This build file assumes you are running your swfs directly and not inside an html container. If you need to run your project inside of a container take a look at the html-wrapper ANT tasks described at that Adobe Labs page or put together your own wrappers and copy them over to the /build directory as is being done above for the contents of /etc.

I have a lot of Flex-related content that I would like to share, mostly brick walls that have been conquered. I hope to get them all posted eventually so that google can get them indexed and they can smooth adoption for other developers working with Flex.

Comments (8)

iPods & Podcasts

When apple first released the iPod I was both unimpressed and uninterested. They seemed far too expensive for the feature set and to be honest I had largely lost interest in music as high school wrapped up and college got started.

This past holiday season the price and my interest had finally changed enough to justify a purchase. I picked up one of the Black 30gb 5th generation iPods and after a couple months of use absolutely love it. The interface and aesthetic of the device combined with the intuitive and effective presentation of iTunes motivated me to clean up, organize, and find album art for the 20gb of so of mp3s I have collected over the years and listened to with various iterations of winamp. I’ve even purchased DRM-filled albums, games, and audio books on iTunes and despite my usual hatred of DRM and monopolistic corporations i’ve completely embraced the interaction of the iPod with iTunes and don’t at all mind that I am allowing a single vendor to control the way I organize and listen to music. That speaks volumes for the quality of these products.

That said, ownership of such a spacious and effective device has led me to become an avid listener of podcasts. The point of this post is largely to share the list of podcasts I currently enjoy an exceptional amount. Here it is in no particular order:

  • Chicago GSB Postcast Series
  • Comic Strip Live: Standup Comedy
  • QDNow (this is a network of 3 - 5 minute podcast series covering various topics)
  • ESPN: PTI (I never catch this when it runs on TV and the format is perfect for a podcast)
  • HBR IdeaCast
  • Manager Tools

Since I have never listened to podcasts on a regular basis, I can pull down years of content such that I won’t ever be able to work through all of it. These sure beat listening to the garbage radio stations covering Atlanta. I loved the 99x morning show when Fred Toucher was a part of the cast but it disbanded and went down the crapper when he left.

Comments