Chris Hager
Programming, Technology & More

Yet Another DMCA Takedown

Another DMCA takedown of one of my Android apps. This time initiated by The New York Times Company for a three year old app titled “NYTimes Article Search”.Instead of having their lawyers send the DMCA notice to Google which immediately suspends the respective app, they could have just sent me an email and I’d have changed the name immediately. Quite sad how the world is driven by lawyers these days…


Google has been notified that aspects of your application, NYTimes Article Search, allegedly infringe upon the trademarks of others, and it has been removed from Android Market due to a violation of the Developer Content Policy. Please review the Content Policies and Business and Program Policies before you create or upload additional applications. Please note that violations may result in a suspension of your Android Market Publisher account, and may also result in actions, including possible suspension, taken against any associated Android Market publisher, AdSense, Google Checkout, or AdMob accounts.

Please note that we have included a text copy of the Infringement Notice we received for your reference.

If you have any further concerns about this issue, please address them directly to the complainant in the Infringement Notice provided below.

The Android Market Team

Text Copy of Infringement Notice: to
Reply – More info Dec 20Options ▾

AutoDetectedBrowser: Firefox 5
AutoDetectedOS: Windows XP
IIILanguage: en
IssueType: lr_trademark
Language: en
address: 620 Eighth Avenue
New York, NY 10018
agree1: checked
android_app_developer_1: Chris Hager
android_app_name_1: NYTimes Article Search

companyname: The New York Times Company
country_residence: US
dmca_signature: Deborah Beshaw
dmca_signature_date_day: 20
dmca_signature_date_month: 12
dmca_signature_date_year: 2011
form: trademark_complaint
full_name: Deborah Beshaw
hidden_product: androidmarket
origin: helpcenter
tm_good_faith: checked
tm_location: U.S.A.
tm_number: 3,934,613
tm_swear: checked
tm_work: NYTimes
your_title: Admin. Ass’t


App Engine Boilerplate 2.0 – Using html5-boilerplate v2 on Google App Engine

Just a year ago Paul Irish and several contributors started working on html5-boilerplate, a popular repository of boilerplate and best practices for creating cross-browser compatible, html5-enabled websites.Thanks to the efforts of many front-end developers and researchers who have spent countless hours on developing and evolving best practices, html5 boilerplate is rapidly maturing and establishing itself as the de-facto standard html boilerplate.

html5 boilerplate logo

The authors just celebrated the one-year anniversary with the release of version 2.0, delivering a well tested, versatile and most useful package. Here’s a brief excerpt of why h5bp is awesome:

  • Cross-browser compatible (IE6, yeah we got that.)
  • HTML5 ready. Use the new tags with certainty
  • Build toolchain for optimizing images, minifying and concatenating js+css
  • Optimal caching and compression rules, Mobile browser optimizations
  • IE specific classes for maximum cross-browser control
  • Handy .no-js and .js classes to style based on capability
  • iOS, Android, Opera Mobile-adaptable markup and CSS skeleton
  • CDN hosted jQuery with local fallback failsafe
  • much more

App Engine Boilerplate 2.0

appengine-boilerplate is the easiest way to use html5-boilerplate 2.0 on App Engine. It provides a startup kit with h5bp and several app engine specific boilerplate resources and best practices:

  • OpenID authentication + beatiful login UI with openid-selector
  • Memcaching setup for requests and responses
  • Flexible user-preferences model
  • Templates and template addons
  • Tools such as is_testenv() and slugify(url)
  • Build tool for optimizing images, minifying and concatenating js+css
  • Released under the BSD license — do with it what you want!

This let’s you skip the boring work of setting up a new app, and focus on building the idea!


Visit appengine-boilerplate on Github



Screenshot of the openid-selector plugin used for users logging in.



Here’s a quick step by step guide on starting a new project with appengine-boilerplate:

  1. (optional) fork appengine-boilerplate on Github
  2. Clone the repository
    git clone
  3. Configure set CMD_APPCFG to your local from the App Engine SDK
  4. Start the appengine dev-server:
    [APP_ENGINE_SDK]/ app/
  5. Hack away! You can access the dev version via http://localhost:8080

Once you are ready to deploy to App Engine:

  1. Create an app on App Engine, if you haven’t already
  2. Set the application name in app/app.yaml
  3. Invoke which builds the production version of the app with minified and concatenated html, js and css files and optimized images. It will ask you to test the app and, if confirmed, will invoke the App Engine upload-script


App Engine Boilerplate

I recently started appengine-boilerplate, a repository of often used boilerplate code for Google’s App Engine, which allows to quickly setup new projects without having to re-invent the most common wheels. All code is released under the BSD license, and It comes with the following goodies:

  • html5-boilerplate (incl. jQuery)
  • OpenID authentication
  • User preferences data model (with gravatar image link)
  • Memcache for datastore objects
  • Handlers for /, /profile, /login and /logout
  • Custom template tags
  • Various tools such as is_testenv(), decode(input) and slugify(title)
  • app.yaml configuration for URL’s which can be accessed publicly, only for logged in users, and only for administrators, all setup to work with html5-boilerplate’s directory structure


html5-boilerplate is a great project initiated by Paul Irish, which provides a boilerplate for cross-browser compatible html5 websites, and also includes a nifty build system which minifies, concatenates and optimizes all the resources of the website to increase the website’s performance.

The build-system is fully integrated into appengine-boilerplate, including a helper script This scripts initiates the build process, changes the /static symlink to the minified verion, uploads the website to appengine, and reverts /static back to the development environment. Implementing this process can drastically improve the website’s performance.


appengine-boilerplate uses the same OpenID provider selection as StackOverflow, based on the openid-selectorjQuery plugin:


App Engine allows you to directly put datastore entities into memcache, which is commonly used to reduce database reads when viewing a website. Using memcache, only the first user will trigger a database read which places the entities into memcache, and all subsequent users can get them from there until the cache is invalidated either by the website or by App Engine itself. Cache lifetime on App Engine seems to be usually just a few hours, but it will provide a noticeable performance improvement for your visitors.

Using appengine-boilerplate you can use the following commands

import mc
.cache.get_someitems()  # will read from db if not in cache

and invalidate the cache with


Feedback & Additions

One particular feature I’d like to implement in the near future is authentication with OAuth (Twitter, Facebook, etc). I’d love to hear your ideas for further additions, and will happily review and accept pull requests. Please leave your feedback in the comments or drop me a line via chris (at)

And if you want to stay updated, you should follow me on twitter.


Blog Archive