My Proposal for an Open-Source Community News Platform

I wrote this up earlier this year and thought – maybe you know of a similar project that could get this idea off the drawing board….

This community news platform is designed to collect and disseminate information in the public interest for communities too small to be effectively served by a traditional daily news source and makes real-time community-based news reporting as familiar as picking up the phone.?

  • Messages are published and delivered via voice, email, web browsers, web feeds, and mobile applications.
  • These messages could communicate a real estate transaction, car accident, block party, garage sale, the current status of a major infrastructure project, show photos of recent storm damage, or document vandalism.
  • Each message published is automatically categorized by content and geographic location within the community.
  • Community members retrieve messages by location, content, or contributor.
  • Community members sign up to receive notification of a specific location’s messages in their preferred medium (voice, email, web browser, etc).

How is this different than something like Twitter, Facebook, or Yammer?

Like those services, it’s best when applied to a distinct community. Unlike those services – this system is open source (NEA) and a platform-agnostic (it receives input from and outputs to multiple mediums).

Rails’ Page Caching with Multiple Formats in respond_to

One of the apps I’m working on was using Rails’ caches_page to speed up performance and reduce server load.

It worked great until we added new formats via within the respond_to block. If there wasn’t a format specified in the request – the caches would get all messed up. Well sometimes. Making it a difficult issue isolate.

I found lots of articles on caching 1 format and not another – even Rails’ documentation illustrates how to do that.

But I wanted to cache all the formats.

The most reliably way I’ve been able to accomplish this is by explicitly declaring the format-specific location for the caches. Like this:


respond_to do |format|
format.html {
render :layout => 'application', :content_type => "text/html"
cache_page(@response, "/index.html")
}


format.rss {
render :layout => false, :content_type => "application/rss+xml"
cache_page(@response, "/index.rss")
}


format.iphone {
render :layout => 'iphone', :content_type => "text/html"
cache_page(@response, "/index.iphone")
}
end

Note the render lines, they seem to be required for the @response to properly populate.

This solves the correct creation of the format-specific page caching, there’s still the issue of the web server (Nginx, Apache) knowing which cached file to serve.

Whatever checks Rails’ is doing (i.e. Are you an iPhone?, etc) to generate the correct cache need to be duplicated in the web server and mapped to the corresponding cache file.

Personally, this seems like a overly-complex solution for an issue I hadn’t assumed would exist. What am I missing?

iPhone App Development Step 1: Hit a Brick Wall

This morning, I had an idea for a iPhone app. After drawing up a couple of sketches on paper – I dove into the internets to look for existing code, sample projects, or at least some tutorials that might get me started.

While I did find an extremely simple sample project that did something similar – the bulk of the research was:

Apple doesn’t allow that.

Just out of the gate and the answer is ‘No’.

So inspiring.

Combine this with all the stories of people struggling to get their application distributed by Apple – and there’s good reason for web apps were Apple’s first answer to iPhone development.

Garrick’s Web Technology History

Earlier this week – a message came through the web font mailing list referencing VRML. A painfully slow, barely usable, 3d modeling-for-the-web technology that I experimented with VRML during my time with Jeremy and da5d.

And I hadn’t heard of since.

Shortly after my adventures in VRML, CSS 2.0 supported custom web fonts as we know them today, and I did some early experiments with that technology.

These two memories made me wonder about the intervening years and the web technologies I’ve worked with since.

    Here’s what the journey looks like so far

  • 1996: HTML
  • 1997: VRML 2.0
  • 1998: Web Fonts in CSS2, more about designing with them, no tech development
  • 1999: —
  • 2000: Weblogs, more about the act of publishing with them, no tech development
  • 2001: WiFi & Tablet PCs, yes, these were some very hot Linux tablet PCs
  • 2002: —
  • 2003: RSS Feeds (more about reading them, no tech development)
  • 2004: Podcasting, First Crack Podcast, PodcastMN, etc
  • 2005: Weblogs – round 2, WordPress (WP-iCal, WP-GotLucky, WP-iPodCatter plugins)
  • 2006: RSS Feeds – round 2, Cullect
  • 2007: Twitter
  • 2008: URL Design & Shortened URLs
  • 2009: Web Fonts – round 2, Kernest

How to Make Safari Render Pre-GZipped Web Fonts

After too many sleepless nights, I’ve finally got Safari to render pre-gzipped fonts.

All the fonts in Kernest are pre-compressed on the server (in addition to saving a little bandwidth, it also saves a little disk space and a couple hairs of server performance).

I started with this post by Darren Rush on how to configure Apache to send pre-compressed files, rather than compress on the fly.

While most browsers don’t care if the server does the compressing or if the files are compressed ahead of time. Safari does. Particularly with front-end-oriented files like javascripts, stylesheets, and fonts.

If you take a look, Darren’s code – it ignores Safari (RewriteCond %{HTTP_USER_AGENT} !Safari ).

Turns out Safari just dislikes the idea of javascripts, stylesheets, and fonts using the ‘.gz’ extension.

Yep.

Pre-compress your files – just don’t name them ‘.gz’.

“you CAN’T use the ‘.gz’ extension when serving compressed CSS or JS files to Safari. It knows how to handle gziped files, as long as they don’t have the ‘.gz’ extension (it’s just that weird :)” – sopppas

The convention seems to be ‘.jgz’.

This change is fine – because all reasonable browsers look at the content-type and not the file extension. Unfortunately, the really fast Apache mod_sendfile module doesn’t pass content-type. Now those reasonable browsers now have no idea what they’re getting.

In my testing – the smaller file (~40% savings) and slower serving method is still faster than the larger file size and the faster serving method.

Ban Helvetica: The Brave New World of Web Fonts – MinneWebCon

I just received confirmation that my ‘Ban Helvetica: The Brave New World of Web Fonts’ presentation has been accepted into MinneWebCon on April 12, 2010 at the University of Minnesota.

I’ll be covering; optimizing fonts for web use, browser compatibility, licensing, and answering your questions.

Registration is a very reasonable $200.

Expertise is Declared by Others, Not Yourself

One of the ongoing undercurrents of my thinking is the concept of acknowledged expertise.

A concrete example – we’re the worst people to write our own résumé. Talking with people we’ve worked with is better.

Having others describe us and what we do is far more accurate – if only because there are more of them.

What shows up in my Aadrvark.com profile today? The request to declare what I think my friends are experts in.

trusted_friends

Talent recruiters are about to get pwned.

Big Economy by Any Measure

Too much of the popular economics news paints an economically adversarial picture between the US and other countries of the world.

Aside from the obvious issue that all economies are tied together because economic behavior doesn’t like to be restricted by arbitrary boundaries, the US economy is unbelievably larger than other countries.

3x bigger as measured by stock market capitalizations.

stocks

And by some measures, just US Exports are larger than the GDP of some countries.
exports2

It’s always nice to reset perspective.