Recent Updates Page 2 Toggle Comment Threads | Keyboard Shortcuts

  • David 9:50pm on Apr 22, 2010 Permalink  

    Getting Eclipse set up with Flash+Java+Tomcat, without trouble 

    We were setting up our development environments recently for a project with an Adobe Flex frontend that pulled data from a Java/Spring/BlazeDS application running on Tomcat. More about setting up that application architecture another time, today I’m going to talk about configuring your Flex project for daily development/debug use.


    We were running the application via Eclipse’s “Run on Server” functionality. This works great – it allows us to modify classes or other files in the web app and it will automatically get republished.

    I am using the Flex Builder (now Flash Builder 4) plugin for Eclipse to help with coding and debugging. In order to comply with the Same origin policy, the Flex client has to be run in the browser from the same protocol, server, and port as the server it wishes to connect to. So this means the compiled SWF file has to be deployed into the Tomcat instance we just talked about. This property is configured under Project Properties -> Flex Server -> Output folder.

    Failed Attempts

    We tried a couple different options here.

    1. First we tried placing it directly into the source (WebContent/, or src/main/webapp/) directory of the Java app. This worked when we then started up Tomcat but minor changes to the Flex code did not deploy immediately and we had trouble with caching.
    2. Then we tried setting the Output Folder to the application’s directory underneath Tomcat’s “webapps” directory – the location to which Eclipse publishes. In other words, /Applications/tomcat/wtpwebapps/backend-server/. This worked great until we changed some of the Java code, and Eclipse wiped out the entire output directory when republishing. Then we had to “clean” the Flex project for it to redeploy into that directory. Also, not ideal.
    3. Finally, we tried creating a “dummy” Java web app that would simply act as a holder for the SWF output, and setup the Flex project to deploy into the webapps subdirectory as above. We figured that since we would never be modifying the dummy application, Eclipse would never have to republish. However we were wrong and the next time we changed some Java code everything got wiped out again.

    What Works

    I finally hit upon an option that would work: proxy Tomcat with Apache 2, and deploy the Flex application directly into Apache’s documents directory. This works because the web browser sees everything as the same server and port, but in reality the Tomcat instance has nothing to do with the deployed Flex code.

    Here are the Flex Builder settings I used:

    • Project Properties -> Flex Server
      • Root URL: http://localhost/
      • Context Root: /backend-server/
        • This and the previous setting help tell the compiler what URL the client should use when getting the data from the server.
      • Output folder: /Library/WebServer/Documents/flexclient/
        • (this is the Mac OS X default webserver root)
    • Project Properties -> Run/Debug Settings

    This is what I added to my Apache configuration (on Mac OS X, the default location is /etc/apache2/httpd.conf):

    <Location /backend-server/>
    ProxyPass http://localhost:8080/backend-server/
    ProxyPassReverse http://localhost:8080/backend-server/

    Restart Apache, and give your Flex client go! You should be all good to go.

  • David 7:23pm on Apr 16, 2010 Permalink  

    Farewell, Three Pillar 

    For the past 18 months I have worked at Three Pillar Global (aka Three Pillar Software), a fantastic professional services company that will surely continue to see much success as they grow. On Monday, I will be starting a new position at a small company called Prime Numbers Technology, working on their travel benchmarking product Travel GPA. While excited for the new job, it is a bitter-sweet move as I have thoroughly enjoyed my time at Three Pillar.

    The new gig, being of the work-from-home variety, will give me the flexibility to live just about anywhere in the United States. So my wife, daughter, and I will be taking this opportunity to make a big move back to Minneapolis this summer. So, big changes, but I’ll still be keeping the blog around and hopefully you will be hearing more from me on a technical level!

    • Lucas 9:52pm on Apr 21, 2010 Permalink

      I’ll be honest, I have no idea how you would benchmark that, but I love hearing what you have to say…maybe I’ll learn something sometime too haha

  • David 6:36am on Apr 16, 2010 Permalink  

    With a puzzle this perfect… 

    I don’t want to spoil it by filling it in!

  • David 7:25am on Apr 13, 2010 Permalink  

    Don’t Let The Dishes Pile Up 

    My wife has been out of town this week visiting family. I couldn’t take the time off so I’m managing being by myself. Now, normally doing the dishes is my chore. However with no one else to look at the kitchen, I have been slacking, and they’ve really piled up. I keep promising myself I’ll get them… just after I finish something else. Yeah right. The task is now big enough it will take a significant amount of initiative to start it.

    Consider your day-to-day workflow. You’ve got a bunch of sinks/buckets/inboxes that you have to keep on top of. As these fill up, the more difficult it gets to:

    1. find what you’re looking for,
    2. keep track of what’s new and what has already been tackled, and
    3. focus on the important things.

    Don’t let the dirty dishes pile up!

    Step 1: Find the dirty dishes

    You need  to first identify your sinks:

    • Email inboxes
    • Voicemails
    • To-do lists
    • Bug trackers
    • Desktop, Downloads folder, or other folders that new files get placed in
    • Open windows and tabs.

    Now that you’ve figured out what you look at all the time…

    Step 2: Purge

    For my email, I try to follow something along the lines of Inbox Zero. I just keep the number of emails in my inbox low. To do so, I “respond” (either by actually replying, or paying the bill, or fixing the bug, or what have you), archive it, and forget about it.

    You should do something similar for your other buckets of information. Fix the bugs. Listen to the voicemail. Close the tab. Delete the file. Anything so that these items are not competing for your information. Think of the Broken Windows Theory, and apply it to your life!

  • David 7:46am on Apr 12, 2010 Permalink  

    Even non-UI experts need to understand usability 

    Have you ever used a bug/issue/feature tracker? Most of them are awful. But it’s not the software powering the bug tracker that stinks. It’s the way they are configured. Because so many are customizable, many project managers will add fields at the drop of a hat.

    Need to track what version of the software the bug was found in? No problem, let’s add a field! Need to track which iteration it will be fixed in? Let’s add a field! Module, functional area, size, estimates, tester, developer, tech lead, reporter, requested completion date, customer? No problem, we’ll add a field for each!

    And boom, you’ve just made the issue tracker unusable. Sure, people may still enter tickets, but the data will either guessed, or not entered at all. There are a few ways I see that you can do better:

    1. Just say no! This is what I recommend. Keep it simple. Don’t add many (or any) fields beyond the basics – title, description, assignee, status. Additional information can go in the description or in the comments on the issue.
    2. Use different trackers for different things. Be careful here, you don’t want to have too many buckets of issues. However, if you are tracking support requests, bugs, feature requests, and user stories all in the same tracker, you’re overloading the tracker.
    3. Take advantage of custom workflows. This can be powerful but maybe too restrictive. Some bug trackers give you the option of creating workflows in which you are able to customize what fields appear when and to who(m). If done right, a tester could report the issue and see only the fields necessary for that, a developer could analyze and come up with a fix and resolve the issue, and the tester could verify it’s fixed and close the issue.

    At least that’s what I think, but it might not work for everybody. How do you handle government or corporate CYA requirements for tracking an insane amount of data? How do you track issues down the road where there is a lot of legacy data and you just want to see the items related to the project your team is working on?

  • David 11:29pm on Apr 11, 2010 Permalink  

    “Mr. Murrell, everyone delivers food to the Pentagon.” 

    From Inc’s How I Did It: Jerry Murrell, Five Guys Burgers and Fries:

    When we first opened, the Pentagon called and said, “We want 15 hamburgers; what time can you deliver?” I said, “What time can you pick them up? We don’t deliver.” There was an admiral running the place. So he called me up personally and said, “Mr. Murrell, everyone delivers food to the Pentagon.” Matt and I got a 22-foot-long banner that said ABSOLUTELY NO DELIVERY and hung it in front of our store. And then our business from the Pentagon picked up.

    Great article about sticking to your core business and not sacrificing your values to make a buck. I have been to at least 10 different Five Guys locations in three states, and have never had a bad experience.

  • David 7:26am on Apr 9, 2010 Permalink  

    WordPress time zone selection 

    I use to host my blog. It saves me a whole lot of technical headache and in return I give up a little bit of extra control.

    WordPress recently added a feature to set your timezone to a nearby city, freeing you from the pesky task of manually changing your time zone every time DST changes. Great idea technically…

    It looks promising, right?

    Uh oh. Let’s see if I can find United States.

    Hmmmmm… OK, it’s organized just by continents. Let’s scroll down a few more pages.

    I think there’s a rule written somewhere (if not, then now it is): “Any time a user need to choose from a list of over 500 items, you need to have a better user interface than a dropdown menu.” Compare that interface to Mac OS X:

    Three things:

    1. Your Mac can try to guess based on environment information, probably things such as the network you are connected to. WordPress could easily try to do this with a reverse IP lookup when the user clicks a button “Try to guess my timezone” or something similar.
    2. However if that fails, or if the user wants to choose a different time zone, they could click on the map. Most people don’t care if they try to click on Washington, D.C. and accidentally get New York or Columbus. They are in the same time zone, and that is unlikely to change any time soon.
    3. If for some reason you can’t click on your timezone, or you are obsessive like me and have to select the exact city, then you can try the dropdown. Not ideal, but it works.

    WordPress should consider something similar – or at least, something better than what they have now!

  • David 4:05pm on Mar 24, 2010 Permalink  

    AT&T’s home-based cell tower 

    AT&T will soon be rolling out MicroCell, a device and service that allow you to route cell phone calls through your broadband internet connection.

    The funny thing to me is that they will charge you $150 for the device and it will still use your normal minutes allotment – shouldn’t AT&T be happy to let users take their calls off of their over-loaded cell network?

  • David 7:52am on Mar 23, 2010 Permalink  

    When knowledge makes us hesitate 

    37signals’ Jamis Buck:

    How ironic, that we tend hesitate instead of move forward when presented with new information!

    Read more at When knowledge makes us hesitate.

  • David 8:21pm on Mar 20, 2010 Permalink | Reply  


    I met Warren Brown at the new Fair Oaks CakeLove today. Pretty cool guy.

    Best cupcakes in town.

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc