How jQuery mobile violates the DOM

I’ve grown to be a big fan of component libraries that convert HTML to rich javascript, such as Chosen and Select2. One reason is because they are minimally invasive. When the component is created, it resides next to the original HTML element and allows you to interface with it via the same events and attributes.

Recently while attempting to use jQuery mobile components with a backbone application, I began to have problems. Backbone views allow for a section of the dom to be manipulated and re-rendered using the $el variable:

render: ->
  @setElement Mustache.to_html(@template, { message: "Welcome home" })
  $('#my-view').html(@$el)
  console.log "Page: #{@name}, was just inserted into the dom!"

With nice libraries such as Chosen, Select2, and even Bootstrap this pattern works fine, because the created components reside on the same level of the DOM as the original HTML elements. However, jQuery mobile violates this pattern by placing the elements at the top of the page layout. One possible reason for this is that jQuery mobile is based on jQuery UI, which also violated the DOM when creating modal and other components. Another possible reason is that the idea behind jQuery mobile is to encapsulate each page. JQuery mobile wants to handle page rendering and caching, which actually doesn’t play nice in general with Backbone JS.

Overall, my advice to anyone looking to create an HTML/JavaScript based phone app is to stay away from jQuery mobile and rely on components that can be easily removed from the DOM and recreated.

Heading to Kevy

I will soon be leaving Blinq Media for a software engineering position at Kevy to join my former business partner Adam Rice. Throughout my programming career I have worked with several APIs. At Looxii the focus was in compiling mentions via multiple social media APIs. At Blinq I worked with the Facebook Ads API extensively. The Kevy app provides “cloud connectors” which allow data to be ported between web apps and services. It is a domain that I am excited about, and I look forward to working at the new tech hub in town, the Atlanta Tech Village.

The End of Looxii

As of February 2013, Adam Rice and I have closed down our startup Looxii. We learned a ton and had an “Acqhistition” (sic: Techcrunch). With the two of us working full time at other endeavors, we decided it was time to shut things down. We are both still active participants in the business and startup communities in Atlanta.

To offer a little technical background on Looxii, when it was launched, Looxii was built in Python using Google App Engine. App engine was in beta at the time and it worked well for us because it was built on Big Table, a fast key/value database which allowed us to find tweets and social media mentions quickly through millions of rows of compiled info. It didn’t provide the means to easily run analytics on the information, but we achieved that by using counter tables. In the fall of 2011 Google App Engine came out of beta and reworked their pricing plans. The new pricing plan was skewed against apps that had a ton of storage and would have increased our monthly costs by $2000 - $3000.

Over about a two week period I ported the app to the open source equivalent of the Google App Engine stack. I setup an ubuntu box running nginx web proxy, webapp2 router, and jinja templating. On the database side I decided to go with the old standard, mysql, which ended up being fast enough, but didn’t provide the search capabilities that I needed. To take care of our search needs I installed the sphinx search plugin for mysql and I was able to simplify many of the analytics processes and get real time counts that allowed Looxii to be faster and more reliable. The final version of Looxii was flexible and open-source and easily run through AWS.

Building the application provided many challenges with APIs, and large amounts of data that needed to be searched, index, and analyzed in real time. One of the major take-aways that I’ve gotten from this experience is that starting a project with an all open source stack allows for greater control over hosting and costs when running a startup. Of course now that I’ve completely embraced Ruby on Rails, I always am using an open source stack.

I enjoyed building and running Looxii, even though it could be difficult at times, and I look forward to learning new things and starting many new projects in the future.

Techcrunch coverage on Looxii and Blinq

As of November 2011, Adam Rice and I have began to work for Blinq Media. A nice consequence was an article (with an interesting photo) about us in Techcrunch.

My official title at Blinq is Senior User Interface/Data Visualization Engineer. I’ve now switched over to working mostly in Ruby on Rails and JavaScript, although I still program quite a bit in Python for Looxii.

As confusing as Techcrunch makes it with their Acqhire buzz-term, Looxii is still up and running and Adam and I are ensuring that social media mentions are pouring in!

looxii.com

My co-founder Adam Rice and I currently run the social media search monitoring site Looxii. Looxii is an ATL-based company that tracks and aggregates search terms across multiple social media sources. We provide services to both businesses and agencies with a variety of search needs. Looxii was started in 2009 as a member of the first Shotput Ventures class.

The New DanielShaneUpton.com

I will be updating this site with art work, thoughts on coding, and professional information. I will also be moving over some older programs, links, and artwork from the old site. Stay tuned.