Skip to main content


Showing posts from October, 2010

Apache Error "Document Root Doesn't Exist" on Red Hat Enterprise LinuxWhen the Document Root DOES Exist

I upgraded one of our Red Hat Enterprise Linux VMs to Tomcat 7.0.4 tonight, did a bit of Apache reconfiguration, and when I restarted Apache I got a "document root doesn't exist" error even though in fact the document root does exist. (Trust me Apache, it's there.)

I double-checked the owners and permissions of all the directories in question and everything was identical to how things are set on another RHEL VM in this cluster on which I haven't upgraded Tomcat and done the reconfiguration yet. I was at a bit of a loss, so I googled around a bit and the prevailing sentiment seemed to be this was related to either A) a config file copied from a Windows box and the line breaks were throwing things off (wasn't applicable in my case), or B) the fact that SELinux was enabled.

If you've been around the Red Hat flavors of Linux long enough you'll remember that SELinux used to be absolutely horrible. For years the very first thing you had to do on Red Hat and…

CFHTTP "Could Not Determine MIME Type of File" Error with FacebookGraph API

I'm finishing up the Facebook and Twitter integration for the OpenCF Summit application we'll be launching soon, and I was running into an error when calling the Facebook Graph API via CFHTTP.

If you've worked with Facebook you're probably aware that once a user logs into Facebook via your application, a cookie gets set that contains an access token you can use to grab additional details about the Facebook user via the Graph API. You make a simple HTTP call to and you get JSON back containing the details about the user that they have authorized you to retrieve.

The first issue I ran into is if the access token contains a pipe you may get a "Failed to set URL:Invalid query" error (and thanks to Andy Wu for pointing out to me that was the issue!). Simple enough to fix by putting the access token into a CFHTTPPARAM tag:

<cfhttp url="">
    <cfhttpparam type="url" na…

Open BlueDragon Admin Console Version 1.4 Updates

It's that time again! As many of you know Open BlueDragon is on a regular six-month release cycle, so late October means it's time to certify those great nightly builds as gold, stamp a final version number on it, and immediately get started on the next version.

Along with each new release of OpenBD comes updates to the admin console, which is an open source project of its own, written entirely in CFML. I point that out not only to let you know if there are features you'd like to see in the admin console I'd love to hear about them, and also since it's written in CFML if you want to get involved with the project you're more than welcome!

Version 1.4 of the admin console doesn't have major changes (we have more major revisions planned for the 1.5 release next April), but I managed to squeeze some nice new features in here. See the attached screenshots to get a visual on these.

Application and Session Status Info

The admin console now displays the number of ru…

"Shiny app syndrome" and Gov 2.0 - O'Reilly Radar

This was sent to me by a coworker--the entire article is really great but the person interviewed in this video makes some excellent points about the dangers of requiring specific devices to access services. This is bad from the standpoint of freedom and technology in general, vendor lock-in, etc., but is absolutely horrible when it comes to government services.
Unless they're developed by a third party completely independent of any particular government agency, citizens fund the development of the applications that make the promise of letting them interact more directly and more effectively with their government. By limiting access to a specific device, it's like simultaneously spitting in the face of the citizens that fund the development and handling Apple a check.
With the decreasing cost and increasing availability of technology the digital divide was supposed to get smaller, not bigger, but by requiring citizens to buy one of the most expensive phones o…

Grails + CouchDB #s2gx

Scott Davis - thirstyhead.comNoSQL Databases in General given the number of big companies using them, clearly they're ready to use today time to re-examine our unnatural obsession for relational databases rdbms has been around for 50 years now--well understood, great tooling, lots of information rdbmses are silos still good at what they do, but aren't necessarily well-suited to all data as developers we're being forced to use sql to express something that's crucial to the success of your application not our native language, kind of foreign when it comes down to it we use orm to insulate ourselves from sql express yourself in the native language of your choice instead of in sql Is ORM State of the Art? really just a bridge why aren't there pure java or groovy datastores? persistence is pretty uninteresting to developers orm is a reasonable bridge, but a rather leaky abstraction as well ted neward: orm is the vietnam of computer science "[ORM] represents a quagm…

Polyglot Web Development With the Grails Framework #s2gx

Jeff Brown - SpringSourcePolyglot? "many languages" writing software in multiple languages some people would say if you do any web development, you're doing polyglot javascript, css, html, java, etc. in the context of this talk, we'll be talking about implementing the actual business logic with multiple languages Languages on the JVM 200+ languages available on the JVM many of these aren't exactly practical, but many are at least 10-12 programming languages available on the JVM that could be used for serious development big players are java, groovy, clojure, scala, jruby, jython which of these is the best? no answer of course personal preference, best tool for the job, etc. many of these languages solve specific problems really well all these languages are turing complete, so anything you can do in one you can do in another but depending on the problem you're trying to solve, you may find one language or another is ideally suited to the task at hand reached …

How to Analyze Your Data and Take Advantage of Machine Learning in YourApplication #s2gx

Christian Schalk - Google
Google's New Cloud Technologies
google storage for developers api compatible with amazon s3prediction api (machine learning)bigquery Google Storage
store your data in google's cloud any format, any amount, any timeyou control access to your data private, shared, publicaccess via google apis or third party tools/librariessample use cases static content hosting, e.g. static html, images, music, videobackup and recoverysharingdata storage for applications e.g. used as storage backend for android, appengine, cloud based appsstorage for computation bigquery, prediction api Google Storage Benefits
high performance and scalability backed by google infrastructurestrong security and privacy control access to your dataeasy to use get started fast with google and third party tools Google Storage Technical Details
restful api get, put, post, head, deleteresources identified by uricompatible with s3buckets -- flat containersobjects any typesize: 100 gb / objectaccess …

Google App Engine for Business 101 #s2gx

How to Build, Manage & Run Your Business Applications on Google's Infrastructure
Christian Schalk - Developer Advocate, Google
not really an advocacy positionstill in engineering, but work a lot more with users directlygo out to companies to help them be successful
What is cloud computing?
lots of different definitionspyramid of (bottom up): infrastructure as a service joyent, rackspace, vmware, amazon web servicesprovides cooling, power, networkingapplication platform as a service GAE falls in this categorytools to build appssoftware as a service google docs, etc. GAE
easy to buildeasy to maintaineasy to scale appengine resides in google's overall infrastructure so will scale up as neededstarted with only pythonwith java support, opened the doors for java enterprise developers By the Numbers
launched in 2008250,000 developers100,000+ apps500M+ daily pageviews 19,000 queries per second -- has almost doubled since January Some Partners
best buysocialwokxylabsebayandroid develope…

Developing Social-Ready Web Applications #s2gx

Craig Walls - SpringSource working on Spring Social, which is the brains behind Greenhouse (web/mobile conference app for SpringOne) Socializing Your Applications why would you want to do this? this is where your customers are--lots of people spend a LOT of time on Facebook if they're there, you want to be there with them Facebook--over 500 million active users third largest country in the world 50% log on to Facebook on any given day there's even a movie about it--that says something Twitter -- over 100 million users more than 190 million unique visitors monthly more than 65 million tweets per day Others: LinkedIn (80 million members), TripIt (230,000 trips planned per month) More: FourSquare, YouTube (2 billion videos viewed per day), MySpace, Gowalla, Google, Flickr how do you use this to better your application? really depends on the customers and applications don't want to make people come to you, better to interact with people where they already are you can have your…

Introduction to Tomcat 7 #s2gx

Mark Thomas, SpringSource Tomcat 7 Supports ... Servlet 3.0 JSP 2.2 EL 2.2 Java 1.6 New major release of Tomcat every time the spec has a major change Servlet 3.0 asynchronous processing pluggability annotations session management miscellaneous Asynchronous processing request processing is synchronous, but the response processing can now be asynchronous outline start asynch processing request/response passed to a new thread container thread returns to the pool new thread does its work allows container threads to be used more efficiently when waiting for external resources when rationing to a resource or any other time when the container thread would be blocking allows separation of request and response chat applications stock tickers all filters, servlets, and valves in the processing chain must support asynchronous processing not as asynchronous as COMET pluggability purpose was to improve developer productivity--worry less about application configuration annotations web fragments st…

Advanced GORM: Performance, Customization, and Monitoring #s2gx

Speaker: Burt Beckwith, SpringSourceOverview
demo of potential performance issues with mapped collections in GORMusing the hibernate 2nd-level cachemonitoring and managing 2nd-level cachesapp info pluginStandard Grails One-to-Many
library has many visitsvisit class has person name and date, with backreference to libraryWhat's the problem?
hasMany = [visits:Visit] creates a setsets guarantee uniquenessadding to the set required loading all instances from the database to guarantee uniqueness, even if you know the item is uniquelikewise for a mapped list--lists don't guarantee uniqueness, but they do guarantee order, so they still have to pull all records from the db to get the order rightyou get a false sense of security since it's lazy-loaded; only partially helpfulworks fine in development when you only have a few visits, but imagine when you deploy to production and you have 1,000,000 visits and want to add one morerisk of artificial optimistic locking exceptions; altering a…

Groovy Web Services, Part I: REST #s2gx

Speaker: Ken Kousen - Kousen IT, Inc.
currently working on book for Manning: "Java and Groovy: The Sweet Spots""Java is really good for tools and infrastructure. Groovy is good for pretty much everything else."Two Flavors of Web Services
SOAP basedSOAP wrapper for payloadmuch like an XML API on a systemmakes header elements availablelots of automatic code generation--tools are very maturestubs, skeletons, proxies, etc. are all written for yousprinkle annotations into your codebase to get a web service out of itREST basedeverything is an addressable resource (uri)
leverage http transportuniform interface (get, post, put, delete)a lot of rest web services available today aren't truly restful--e.g. amazon web services where you have to specify the operation namejust invoking methods over the web using URLs, but the request type doesn't matterREST -> Representational State Transferterm coined by Roy Fielding in PhD thesis (2000), "Architectural Styles and …

Clustering and Load Balancing With tc Server and ERS httpd #s2gx

Mark Thomas - SpringSource
Tomcat committertc Server developerresponsible for keeping tc Server and Tomcat in syncmemory leak detection in tomcat manager apprecent logging improvementssimplifying jmx accessall of the above started in tc Server, but have been contributed back and implemented these features in tomcatdon't want to get into having a significant fork of tomcatTypical Architectures
load balancer (round robin) -> httpd (sticky sessions) -> tc Server (clustered)don't go anywhere near tc Server clustering unless you absolutely have to--adds complexity and overheadonly thing tc Server clustering gives you is the ability for users not to lose sessions if an instance of tomcat goes downask yourself how big of a deal it is if your users lose their sessions when an outage occurs--if it's a big deal then you may need clusteringStarting Point
ubuntu 8.04.4 64-bit VMvmware tools installed64-bit sun jdk 1.6.0_21will be installing tc Server, Hyperic, etc. on this clean im…

Gaining Visibility Into Enterprise Spring Applications with tc ServerSpring Edition #s2gx

Gaining Visibility Into Enterprise Spring Applications with tc Server Spring EditionSteve Mayzak - SpringSource
tc Server -- enterprise version of Tomcat developed by SpringSourceBuilt on TomcatSurvey in 2008: 68% of companies surveyed using Tomcat; most popular lightweight containertc Server editions
developer edition -- can get it when you download STSstandard edition -- application provisioning, server administration, advanced diagnosticsspring edition -- spring + tomcat stack, spring application visibility, spring performance managementtc Server: Key Highlights
Developer efficiencyoperational controldeployment flexibility
Spring Insight
Spring Insight -- knows about Spring and Grails applications, so can provide specific information about your apps as they're runningWhen you deploy a WAR to tc Server, Spring Insight gets involved and get get specific information from your appsSpring Insight is currently intended for development use onlyDEMO: huge amount of details come out of Sprin…

Fix for Eclipse Menu Issues in Ubuntu 10.10 Netbook Edition

This is but one of the many,many reasons I love free software.

In my previous post about Ubuntu 10.10 Netbook Edition I pointed out there are some issues with the menus in some applications, which in my case I ran into with Eclipse (actually SpringSource Tool Suite). I posted to the Ubuntu Forums and in no time a kind user pointed me to this bug report (which I somehow missed in my searches before posting to the forums), and also provided the fix for the issue which is simple enough. Basically you just have to tell Ubuntu not to use its own menus when you start the application, so from a terminal you do this to start the app:

UBUNTU_MENUPROXY= /home/mwoodward/sts/STS

Note that there is a space after the equals sign. Of course if you're having this issue with another application you'd just substitute the path to that application where I have /home/mwoodward/sts/STS And you can obviously throw this into a launcher script so you don't have to remember to type this every time.

Thoughts on Ubuntu 10.10 Netbook Edition

This isn't intended to be a full-blown review since there are plenty of those out there, but while I was installing Ubuntu 10.10 Netbook Edition on my Asus 1000HE this weekend, I thought I'd jot down my basic thoughts.


A+++. Absolutely amazing. 25 years later Windows still doesn't even come close to having such a fantastic installation process. Fast, clean, and flawless. Couldn't ask for anything better.

Boot Time
Notably faster than 10.04 on my netbook. My main laptop has a solid state drive and already boots up in about 7 seconds with 10.04, so I can't wait to see if 10.10 makes a difference on that machine.

Ubuntu Font
Ubuntu ships with a new default font called (not surprisingly) Ubuntu. It took some getting used to at first, but I like it! Very readable and easy on the eyes, not to mention Ubuntu-sheik styling.

Unity Interface
I have to give Unity about a C for the time being. The idea of it is awesome, but there are a lot of idiosyncrasies and displ…

Installing OpenConferenceWare on Ubuntu

I've been working a soon-to-be-released app called "OpenCFSummitWare" (a.k.a. "Engage" but that name was taken on Google Code) for a while now, and it's the application we'll be using to manage proposals, scheduling, and attendee information for OpenCF Summit.

The inspiration for the application is the excellent OpenConferenceWare that was created for the Open Source Bridge conference. Obviously we want to run a CFML conference on a CFML app, but it saved me countless hours by having an extremely strong model on which to base our new application.

OpenConferenceWare is written in Ruby, and since I have zero experience with Ruby (at this point anyway) it took a bit of work to install the app and get it up and running. With a bit of help from the OpenConferenceWare Google Group and some tenacity I got it running, so I thought I'd share the step-by-step process here.

Note that this assumes you're starting with a clean system or at least one that has…