June 6, 2012No Comments

Get Pinteresting, Part 1

In the midst of Facebook’s underwhelming stock performance—which has dipped below $30 a share—some analysts are predicting the beginning of the end of social media. Their claims aren’t completely unfounded in regard to revenue: Facebook isn’t doing too well on the open market, and the other two major social media networks, LinkedIn and Twitter, are still trying to figure out how to turn a profit.

While all this paints a pretty bleak picture, what these analysts are missing is Pinterest, the underdog social networking site that added 10 million users in just two months. And the best part? They’re already successfully monetizing their service and helping businesses of all sizes do the same.

While this is only the first part of my adventures with Pinterest, I’m already a little addicted. It’s like Facebook, Twitter, YouTube, and Instagram all rolled into one.

Read more

May 30, 2012No Comments

Save Money on Meds with MyCouponDoc

We're proud to announce the launch of MyCouponDoc, a new online resource for coupons and discounts that can save people hundreds of dollars on their medications. The company came to Table XI looking for help in developing their core platform: Though they had originally created a prototype for their site, their system lacked the functionality and scalability necessary to grow their online inventory. Together we helped redesign the site and take it to market.

According to co-founder Kishore Eechambadi: “We envisioned MyCouponDoc as a website that families can go to for savings on what’s most important to them—their health. We’ve been collaborating closely with Table XI since February to ensure that our site has the most up-to-date information on healthcare and medication savings, and we couldn’t be happier with the progress we’ve made so far.”

The site launched in April, and we were thrilled when technology media company VentureBeat chose MyCouponDoc as one of 80 companies to present at their DEMO Spring 2012 conference. MyCouponDoc impressed a crowd of entrepreneurs, investors, and journalists, including VentureBeat executive editor Dylan Tweney, who said that “the site couldn’t be simpler to use,” and cited a co-worker who saved $180 in 60 seconds on normal medications.

Over the next few months we’ll continue working with MyCouponDoc on branding, marketing, and SEO efforts, while rolling out new features like refill reminders, a “coupon cabinet” where users can store coupons, and coupon redemptions at partnering pharmacies and doctors’ offices. Stay tuned and check out the site to save some money on your meds.

May 23, 2012No Comments

Rails ActiveModel and Localization

In Ruby on Rails 3, non-database functionality was moved from ActiveRecord to ActiveModel. This is great since it makes it easy to use all the ActiveRecord niceness we’ve come to love for non-ActiveRecord models.

My favorite bit of functionality moved to ActiveModel is localization. (Well, validations are actually my favorite, but localization is a close second.) Rails has robust localization support though the Rails Internationalization (I18n) API. Hopefully you’re already using it, if not for creating multi-lingual sites, then at least for keeping custom attribute and model names consistent between labels, errors messages, etc.

The Rails guide does a great job of walking us through the basics of localization and using it with an ActiveRecord object, but falls short when looking at ActiveModel localization. So let’s dive in…

Let’s say we have the following namespaced model:

module PetShop
class Puppy
include ActiveModel::Conversion
include ActiveModel::AttributeMethods
include ActiveModel::Validations

attr_accessor :name, :price, :image_url

As you can see, we’ve already included some ActiveModel modules. Conversion gives us useful methods including to_param and to_key. AttributeMethods gives us lots of accessor and attribute related goodness. And Validations gives us, well, validations.

Let's look at the attributes. The "name" and "price" attributes will humanize nicely to "Name" and "Price" but I want to refer to "image_url" as "Puppy Pic", not the default humanization "Image Url". This looks like a job for localization!

Read more

May 16, 2012No Comments

i.c. stars Comes to Table XI

Last Friday we got a visit from our friends at i.c. stars, a technology and leadership training program for low-income adults. Our COO Mark Rickmeier gave a lunchtime presentation to nine students from the organization's 25th graduating class. Mark covered several topics relating to pursuing and succeeding in a career in technology, including how to define a career objective and strategy, how to research jobs and hiring companies, and how to impress in an interview and beyond.

"We work 60 hours a week for four months to complete the i.c.stars internship," says Training Program Manager Deborah Cane. "We work with Fortune 500 companies to understand what it means to be a consultant. We work with local venture capitalists to understand what it means to put together a business pitch. We worked with coaches from across the tech spectrum to work on coding from HTML5 to SQL. And at the end of this crazy rollercoaster of learning, Table XI swooped in! Just talking about where your career can go in an atmosphere like this, sitting at the table with people who dream big for a living, gave us the extra boost we need to go out and conquer that job market."

We were so excited to be able to arm these students with these kinds of tactics as they head into the Chicago workforce, where there are lots of developer jobs to be had. We're hoping to do more of these types of sessions in the future; in the meantime, keep your eye out for i.c. stars talent.


May 9, 2012No Comments

JavaScript or Nondescript: Top 11 Creatively-Challenged Project Names

The 1996 version of me would never believe 2012. I've got Linux on my cell phone, we have an African-American (and Chicagoan!) president, but most improbably, I'm preoccupied by software projects centered around a language I used to loathe: JavaScript.

As cool as JavaScript projects can be, you'd never know it from their names. Is it a competition to see who can come up with the least interesting moniker? An unconcious tribute to the 'Self' language, one of JavaScript's original inspirations? Or maybe nobody puts much thought into naming, choosing to channel their creativity into their code?

While pondering that, I came up with my top 11 favorite nondescript JavaScript project names:

11. Prototype

This is the one that got the ball rolling. Named after a universal JavaScript object property, Prototype was the first serious JavaScript library you probably ever used (let's pretend those "disable right-click so people can't steal your precious images" scripts never happened). jQuery may have displaced Prototype in the web developer's toolbox, but its dreary, Google-hostile name choice continues to inspire.

10. Node

Server-side JavaScript was going nowhere until someone gave it a bland enough name. Ever heard of SpidermonkeyRhino? No? How about Node?

9. Processing

I expect some pushback here since the Processing project is not limited to JavaScript, but the fact that something so very nondescript found a home in the JavaScript community is telling.

8. Seriously


7. Underscore

It could have been worse. At least it's not called _.

Read more

May 3, 2012No Comments

Enter the Deepworld

Mike Laurence and I have been building web applications for a long time, and we’ve had the opportunity over the last year to work with Table XI on some fantastic web applications for our clients. The web offers a wide variety of challenges, but we always found scaling to be the most interesting. Things like cloud provisioning, load balancing, caching, and database replication make big projects a worthy challenge.

Sometimes you need a break from the web, though, so we decided to put our architecture skills to the test and build a massively-multiplayer adventure game: Deepworld.

Deepworld features an online, persistent sandbox universe; anyone can jump in to explore, build, or just hang out with friends. It's very engaging, and also the most technically complicated setup we've ever dealt with. We have dozens (soon to be hundreds) of worlds, all hosted across multiple cloud servers, with things like MongoDB, Redis, and various helper apps in the background.

We opted early on to use Ruby to develop our server code—an odd choice to many in the game industry, but something we are very familiar with. It turns out that EventMachine, the very mature Ruby equivalent of Node.js, is quite fast. With it, we've designed our own TCP-based protcol, baking in compression, authentication, and tons of other bells and whistles, as well as TCP testing framework on top of RSpec.

We’re in alpha testing phase right now, with a bunch of regular players in the alpha program. They’ve been building an amazing array of structures and are having an awesome time. We also recently held a Table XI playtesting party, which was great fun!

We've launched a Deepworld Kickstarter to help us with our final fundraising push, and have just under two weeks to go. Check it out for more info, thanks for your support, and hopefully we'll see you in the game!

April 25, 2012No Comments

Will Node.js Make You a Rockstar?

Probably not, but it might help you write a kickass scalable web application that will have your fellow hackers asking for your autograph.

Node.js has been getting a lot of buzz recently, but you're probably in the minority if you have a good idea of how it works and what it's good for. Node is a server-side JavaScript engine. It takes advantage of the event-driven programming model of JavaScript for use on the server-side. You're probably familiar with binding JavaScript handlers to client-side events like button clicks, mouseovers, etc. Node allows you to bind functionality to server-side events like a new connection being made or data being received. Node is non-blocking, so it can handle a large number of concurrent connections on the same machine.

Here are a few practical applications of Node.js:

A Successful Web Front-End Refactor

Klout is a company that measures people's influence based on their activity in social media. We make use of their API at Table XI. Klout was powering a web interface to give users access to their scores with a LAMP (Linux/Apache/MySQL/PHP) stack. They found this was not scaling well as more users accessed the application. They rebuilt this interface using Node.js., and it's now handling tens of thousands of concurrent users on two servers.

Read more: "The Tech Behind Klout.com"


The social media site Yammer is using Node.js to handle API requests from developers, allowing them to tackle a large capacity of concurrent requests. The API requests are made via JavaScript AJAX calls so both the client and server side are written in the same language.

Read more: "Who Is Using Node.js and Why? Yammer, Boucoup, Proxlet and Yahoo" Read more

April 18, 2012No Comments

CoffeeScript Makes JavaScript Go Down Smooth

CoffeeScript is a great little language that compiles down to readable, clean JavaScript. When we were recently in Costa Rica I gave a lightning talk on some of CoffeeScript's cooler features. It's great on the surface, since this:

$("#foo").click(function () {
bar( "some text #{ something / 2 } a unit" );

is more cleanly written as this:

$("#foo").click ->
bar("some text " + something / 2 + "a unit" )

But as I've been writing more JavaScript, there are a handful of other neat things I find myself using a lot. Here are a few: Read more

April 11, 2012No Comments

Tech Tip: SEO Keyword Tools for Blogs

Many businesses are finding value in writing blogs these days, and rightly so—it's certainly something we recommend to our clients. A blog is a way to keep your customers and stakeholders aware of new products, promotions, and industry-related news. It also serves as a PR tool to address your audience quickly in case of a crisis, and provides an additional platform to syndicate your company’s press.

So, for many, the question is not, Should I blog? but rather, What do I write about?

Search Engine Optimization (SEO)

One of your blog’s most valuable (and commonly overlooked) functions is its ability to impact SEO, since it gives your site a venue for fresh, keyword-rich content. Whereas homepages or product pages can be difficult to update with detailed copy, a blog allows you to tell a longer narrative that can positively impact your ability to rank for key terms.

We recently conducted a workshop for guests from Chicago's Neighborhood Parents Network that was dedicated to the importance of blogging for SEO. Here are some of the free tools we recommended that can help you get the most SEO lift from your blog:

Read more

April 5, 2012No Comments

Notes from PyCon

I’m a Ruby on Rails guy by day, but, in the interest of staying rounded, I’m also active within the Python community. To gain more knowledge from this community, TXI was happy to send me to PyCon, an annual conference centered around Python and the frameworks (or problems solved) utilizing it. Python is a different programming language with a different set of tools and guiding principles. But I feel very strongly that the Python and Ruby communities could learn a lot from each other, and I’m not the only one—just check out RUPY, an annual conference in Poland for both Python and Ruby.

I caught several good presentations which I feel would be valuable for all developers regardless of their choice of tools (read on for some of my notes below); however, with five talks going on simultaneously for three straight days, I’m sure I missed some great sessions that would have been more applicable to both Python and Ruby. What’d I miss? What talks did you like? Leave your thoughts in the comments or drop me a line at ross@tablexi.com.

All formal talks given at PyCon are recorded and have been posted @ http://pyvideo.org so you can tune in even if you couldn’t attend. I’d definitely recommend checking out the following talks:

Read more

tech done right in your inbox

Sign up for our monthly newsletter to stay up to date on the latest tech tips from Table XI and to receive exclusive invites to events

GoodFirms Badge