GwtProJsonSerializer and Jackson

I recently had to deal with some of the JSON that was passed back from the GwtProJsonSerializer in our web tier. It is in Groovy, so I thought I might be able to use JSON.parse. While I could use it for some instances, I wanted to reuse some components that dealt with a class hierarchy. In order to do that, I needed to deserialize the JSON into the original classes.

After a little research, I discovered the Jackson project for doing just that. However, it uses annotations to reference derived classes. This is a problem because I don't want to include the Jackson jar in my GWT deployment if it would even work. As one would figure, there was more than one way to do things. Jackson allows you to setup additional "deserializers" so you can insert some of your own code to handle special situations. Here is how I did things to handle getting the class to deserialize from the "class" attribute in the output of GwtProJsonSerializer. I am using Groovy, but I made it more Java-esque to demonstrate how to do it with generics.

package com.ids.emr.docgen.configuration

import org.codehaus.jackson.JsonParser
import org.codehaus.jackson.JsonNode
import org.codehaus.jackson.node.ObjectNode
import java.util.Map.Entry
import org.codehaus.jackson.Version

class GwtProJsonDeserializer extends StdDeserializer {
    GwtProJsonDeserializer(Class<? extends T> clazz){

    T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) {
        ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec()
        ObjectNode root = (ObjectNode) mapper.readTree(jsonParser)
        Iterator> elementsIterator = root.getFields()

Taste Map Myth

I was looking up some facts regarding taste, and found this nugget. The idea that different areas of the toungue detect different tastes is a myth. WHAT!!! I know I was taught this in school. Wikipedia, see it here: says that the myth was disproven in 1974. That was two years before I was born.

This just goes to show the problems with getting your science from textbooks and popularizers. This is one of my biggest pet peaves. By the time real science trickles down to the regular people, it is often misinterpreted and/or outdated. This is true whether you get it from textbooks, popular books, or so-called experts who are usually too old to be doing real science anymore. Their scholarship is usually at least two decades old.

If you have never read Thomas Kuhn's Structure of Scientific Revolutions, do yourself a favor. Science is real. Science is important, but it is a social enterprise and therefore flawed at many levels.

If you want real science, talk to graduate students.

Losing Influence Over You Children

I have been thinking lately about how the relationship between parents and children changes over time. It seems that I have noticed that some parents panic as they noticed they are losing influence over their children and clamp down over all areas of freedom the child has. It seems to me that when this happens, a parent exchanges a long term influence over the child as they grow and discover their freedom for a small time of complete control.

For me, it makes me think about being deliberate about the set of things I designate as within the child's freedom and those things that I regulate. Finally, there is another category for me: areas under observation. Using these three categories, I can talk to my kids about their authority, responsibility, and freedom. It also helps them understand that there are some areas that I give them provisional freedom because I fully intend to release them to full freedom if they prove they can use it wisely. Then, I don't take back ones they have proven just to punish them for failing in the provisional areas.

Google Web Toolkit (GWT) and JSON Serialization

Anyone interested in JSON serialization for Google Web Toolkit should give GWTProJsonSerializer a try. My company, Integrity Digital Solutions has allowed me to improve and contribute back. I have finished a major improvement to allow serialization of various map types and enumerations. I have also added the ability to serialize lists of lists or lists and so on.

Finally, it will also now serialize ArrayLists and HashMaps with no class implementing the JsonSerializable interface. This all means you can easily serialize complex data structures in GWT. Hooray!

Design and Waste

I have gone through long stretches of being an avid FastCompany blog reader. I have read more than enough to see that many in the design industry see design see design with a messiah-like quality. Design will solve all problems. The other day I was contemplating our consumer-oriented culture and happened on a problem for the design community.

Design causes waste. How is this? If we weren't seeing better designed gadgets so often we might care if things lasted. Since we want to replace our stuff so that we can get better designs, we want our stuff to be cheap and even disposable. Can you imagine a mother saving her kitchen utensils to pass down to her daughter or grand-daughter? They wouldn't want them because the ubiquitous peeler had been through 7 design cycles by then. It is even questionable whether or not one would pass down china or silver since there is so often a new design. The same goes for furniture and just about everything those smart little designers get their sharpened pencils on.

I am not saying I like poorly designed objects, I just thing this reveals a principle in the current situation our world is in. It has been cursed. Because of man, God introduced a frustration into the relationship between man and creation. No matter how hard we try to escape sin and its curse, we seem to entangle ourselves in its web. Redemption is our only hope.

Back On Track

I am back on track with blogging. We released TexasWideOpen about two months ago. Growth is slow, but there is movement. I would appreciate any feedback or help with marketing you could do. Use the free trial and tell me what you think.

I am mainly writing to get myself moving again with technical blogging. I am really digging into python and django lately. I had the occasion to write an app to do A/B or multivariate testing the past week. It was a great exercise. You can see the results at

I have also split up our TexasWideOpen project into several smaller apps that I am hoping to release sometime soon. My favorite is one that uses a JSON file to define a file format and then allows you to import that file into django models. We have used it to import files from roughly 30 sources. It is very modular and easy to add new format types. I think it could be useful for a variety of projects.

In the coming weeks, I will be sharing various things I have learned just to help anyone out there who might do a search. I'd love to save someone time the way many others have me. Adios.

Where Have You Been

So this is my obligatory why haven't you blogged in so long. I don't really have to to explain it all, but I felt like I had to clear the air.

There have been some pretty big changes in my life in the last few months. One involves my profession. I am now working full time on Edenic Confluence, LLC (EC). EC is a startup a friend and I have…well…started. We started about a year and a half ago.

We are now re-arranging our vocational lives to make more room. We hope to release something in the next month or so. We're excited, but it is a LOT of work, and I just don't have time to reflect that much on it right now. I do want to share some tech tips, though so others can be helped as I have.

I really think Open Source is a great "love your neighbor as yourself" activity. So, you will probably start seeing some entries about technology again. Be prepared for Web GIS, PostgreSQL, Python, Django, Javascript, and CSS. If you're here for theology and philosophical reflection (like anyone is really reading this), you'll have to wait.

Cleverness and Facebook as the Public Square

I recently held back my finger from the trackpad to avoid posting a comment on someone's Facebook post. It was an old friend who made a comment on how prevalent stories of dragons are in all cultures. He asked, "What is the deal with dragons?" I was going to say, "Don't you know they are just projections of a father figure." A typical cryptic attempt to be clever.

I decided not to post because I realized that I was only posting to be clever. Being clever is one of those things I have taken on as part of my persona. I do it relatively well, and take pride in it even when my cleverness is taken for obtuseness. I was caught this time because I had never posted a comment on this friends status. And, this friend had recently had a scare with a serious illness that turned out to be unfounded. I thought, "How can I use his comment as a springboard for my own cleverness, while I completely ignored his real problems just two weeks ago." While I did say a prayer for him, I did not say anything to him. Holy Spirit had caught me prostrate before my idol.

Back in my seminary days, we once bemoaned the loss of the public square. With the privatization of all things and the complete individualization of Americans as a result of technology, selfishness, and other socio-cultural influences, America has generally lost the sense of a shared public life. One reason is the loss of a shared public space. The public square was once a level playing field where ideas of all kinds could be found.

Perhaps at one time mass media was more on the side of Christians or at least cultural conservatives, so the loss of the public square was not such a loss. However, with Christianity and religion in general increasingly alienated from public discourse, people of faith began to be keenly aware of this loss.