Downtown Cartel sponsors local Film Festival

Posted August 20, 2008 by Cody Marx Bailey in Business, Events with tags , , , , , , .


Downtown Cartel, as a whole, believes that culture is a very important part in our local communities and that is why we have chosen to sponsor the 2008 Red Wasp Film Festival. The Red Wasp Film Festival attracts many film industry professionals early in their careers. Through the years we have enjoyed the festival and this year we felt that stepping up and sponsoring was the right thing to do.

We live in a small city where finding culture isn’t as easy as it may be in places like Los Angeles or Chicago. When we started our company we knew that we couldn’t sit around and wait for others to bring the culture to us. Sometimes you have to be the catalyst and actively cultivate it.

I think this attitude and understanding runs very deep in Downtown Cartel, as well as the other members of the Creative Space. I hate sounding cliche, but the words “Be the change you want to see in the world” seem to resonate in us.

The Sixth Annual Red Wasp Film Festival in downtown Bryan at StageCenter (201-B W 26th St.), October 24-25, 2008, from 7:30 until 11:30 pm. Tickets are available at the door: $15 for one night or $25 for both nights. There is also a special student rate of $10 for one night and $15 for both nights.

Comments: 0


Choosing a Venue

Posted August 14, 2008 by Cody Marx Bailey in Business with tags .


I think choosing the right venue for an event is one of the most important factors of having a great event. There are a few things to think of when scouting venues. After holding more than three dozen venues over the last year, I believe I have learned a thing or two and I’d like to share them.

  1. Physical Location - Will most of your guests/visitors be in the area already? If you plan on holding your event, be it a Happy Hour or Networking Event, at 6PM on a weekday ask yourself where most of the participants will be when they get off work.
  2. Parking - Make sure to inform your guests of any parking information. Will there be valet parking? If so, how much will it cost? Is there a parking garage? Parking meters?
  3. Size - When I began planning events I would err on the side of a larger venue, just in case more people showed up than I was expecting. After attending other events I realized that the more cozy things are the better. If there is too much open space between people they will be more reluctant to start talking.
  4. Type of Venue - For a happy hour, it’s obvious that there should be alcohol of some sort. Wine bars make excellent venues for business events. Social groups do well at coffee shops (with a meeting area). I think matching the overall feel of a place has a lot more to do with a place than the amenities.

Finding the perfect venue can be difficult at times - especially if you live in a smaller city or town as your options are not that great.

Comments: 0


Products that benefit Charity

Posted August 13, 2008 by Cody Marx Bailey in Business, Notes, Products, presentations, projects with tags , , , , .


Downtown Cartel, in partnership with Always Creative and Matt Fruge, will be launching DesiredHearts.com in the near future. Part of the unique value Desired Hearts is bringing to the online t-shirt business model is the idea of building a donation to charity into the price of the product. With every shirt purchased, a portion of the revenues will go towards a charity of the t-shirt designers choosing.

I have not seen this done in many cases online, but I do feel that it’s a socially responsible thing to do. If more businesses followed this model, where your dollars go directly to charities for things that affect us all, such as the American Cancer Society or Oxfam International, even a fractional percent of sales would add up really fast considering the $14 trillion economy we have in the US alone. The question, and risk of this model, is would you choose to shop at places where you knew that a fixed amount (5-10%) would be going to a charity - or would you shop around to save a few bucks?

An added value that can emerge from this model is the free marketing your products receive if you work in conjunction with the charities you are raising money for. For instance, if you donate $600/mo from your sales to a charity with a large distribution network, like Oxfam International or similar, there is a distinct possibility of having your products marketed throughout their extensive distribution network on a continual basis because of the benefit they receive from your increased sales.

Share your thoughts in the comments section below.

Comments: 0


BarCampHouston 3

Posted August 12, 2008 by Cody Marx Bailey in Events, presentations with tags , , .


On Saturday, a few of us from The Creative Space made it down to Houston for their 2008 BarCamp. I had not been down to Houston for any community/tech events lately and it was really nice to finally get a chance to see folks I hadn’t seen in a while. I would list them all but I’ll save you the time having to read 50 or so names.

Ben gave a presentation on Merb - The Pocket Rocket Web Framework, which was a modified version of the talk he and Brian gave at Austin on Rails recently. Several in his audience had either used or at least heard of Merb, which is always a suprising thing to us considering the newness of the framework. Ben’s talk generated great discussion afterwards.

Roby, of Always Creative fame, followed up with a presentation on Building Better Brands (slideshare). He did an outstanding job and piqued the interest of several in the audience when he took folks through the process for three jobs they had recently done.

Overall, the BarCamp was fun and the community was definitely out in force.

Comments: 1


Desired Hearts in Las Vegas

Posted August 11, 2008 by Cody Marx Bailey in Business, Events, projects with tags , , , .


I will be attending the Magic tradeshow in Las Vegas in two weeks. You may be thinking to yourself “Cody, you are a grown man, what are you doing playing Magic the Gathering”, but I’m proud to say that is not the case. Magic is the premeir, twice a year, tradeshow for the fashion industry.

So, now you may be asking yourself “Cody, you are involved with a software company, what are you doing going to a fashion tradeshow?”. I will be there with Desired Hearts, a t-shirt label for now, learning about the industry and promoting our soon-to-launch website that Downtown Cartel built.

I’ve been to a few fashion shows, and been to plenty of boutiques in the different metropolitan areas I’ve lived in, but I’ve never been on the “industry side” of things.

What I’m Expecting To Learn

I want to learn how the different companies pitch their ideas. How they separate themselves from each other. I’m also wondering if there is something to learn about how we do our own service/product pitches by looking at a wildly different industry. I’ll be taking lots of notes and really digging into the techniques.

I think it will be a wildly different type of tradeshow than I’m used to, to say the least. I mean Linux World doesn’t quite have the same sort of feel that this one will.

Comments: 1


The New Entrepreneurs

Posted August 7, 2008 by Cody Marx Bailey in Notes with tags , , , .


It seems like it’s every few days we’re mentioned in our local paper. I guess that’s what happens when you are busy all the time changing the world.

Today, The Eagle mentioned us as “New Entrepreneurs”. The Brazos Valley has been a great place for us grow and start our company and Holli Estridge mentioned Downtown Cartel and Always Creative in a piece highlighting our companies.

I think she hit on some very good points about how the area is ripe for new businesses and start-ups.

The Article

Comments: 0


Come on Twitter…

Posted August 5, 2008 by Cody Marx Bailey in Hashtags with tags , , , , .


Well, as many of you have pointed out, hashtags.org has been down since July 10th - nearly a month. This is because we rely on Twitter’s XMPP service to recieve tweets. They took the service down on the 10th and since then we’ve been waiting, patiently.

I have emailed the folks at twitter several times, but I haven’t been able to get a solution from them. In the mean time we are going to try a few other ways to get the data from them - even if it means banging on the public RSS feed every 2 seconds.

I assure you that we will be back, it’s just a matter of when Twitter gets it’s things in order.

Comments: 1


Merb Presentation at Austin on Rails

Posted July 28, 2008 by Brian Smith in presentations with tags , .


Last tuesday (it’s been a busy week) Ben and I gave a presentation on Merb to the Austin on Rails group.  I was kind of surprised that everyone had heard of Merb and most have played with it.  Overall I think it went pretty well. We gave a quick overview on the layout of Merb, then focused on what Merb “does right”: the cool features that don’t exist in any other Ruby web frameworks, and the clever implementation that make Merb really shine.  There were a few things we missed or could have explained better, so hopefully this will clear things up a bit more.

merb-action-args

merb-action-args is a gem that allows actions to add parameters to thier method signature, which are filled in with request parameters when the action is called.  This is accomplished by some clever use of the ParseTree gem.  When a controller is first loaded, merb-action-args uses ParseTree to extract the arity of each action, which is stored in the controller.  The _call_action method, who dispatches requests to actions, has been rewritten in merb-action-args.  Instead of a simple send to the action name, the actions argument list is constructed by matching the parameter names in the arity list to the parameter names in the request’s params hash.  Finally, send is called on the action name with the newly built argument list.  merb-action-args is an optional gem in merb-more.  It is not part of merb-core because it is dependent on the ParseTree gem.

run_later

The run_later method is a recent addition to merb-core.  It’s usefull for delaying the execution of code until after the response has been served.  For example, if you need to send a confirmation email, but you don’t want the response to wait for the smtp chatter, you can wrap the email code in a run_later block.  The run_later block is pushed onto a worker queue which is always executed after the request has finished.  Because the block is essentially a proc, it keeps the same context it was called in, allowing you to access controller variables if called from within a controller.  So run_later can used instead of BackgrounDRb in some circumstances.  However, if you have very long running or CPU intensive work, it’s probably best to stick with a BackgrounDRb type solution, because the mongrel instance is consumed durring the run_later work just like during a request. It will not prioritize new requests over run_later work.

thanks

Thanks again to Damon Clinkscales and the rest of the folks over at Austin on Rails.  We had an absolute blast. Though being the first time we presented, we seemed to have a good back and forth. Hopefully they’ll have us back soon to talk more about DataMapper.

Comments: 0


Randexp gem

Posted July 9, 2008 by Ben Burkert in projects with tags , .


Regular expressions are a developer’s best friend. Seasoned programmers can wield regular expressions to extract structured information from often near random input. And Ruby’s explicit syntax for regular expressions makes adding a little order to your data chaos a pinch. Turns out, the syntax works well for the opposite as well — creating random data from simple expressions.

Randexp allows you to use regular expression to generate a random string that matches the regular expression. Say you have a model with a serial_number property that validates against a regular expression.

/XX\d{4}-\w-\d{5}/

With our regular expression, we can generate random strings that always matches this expression using the generate (or gen, for short) method.

/XX\d{4}-\w-\d{5}/.generate    #=> "XX3770-M-33114"

The generate and gen methods are added to the Regexp class when the regexp gem is required, and construct a Randexp object with the regex’s source, which is ‘reduced’ into a string. The Randgen class is used to generate the actual random values, which can be extended to allow for more complex expressions, which covered later.

Right now, there is support for the single character matchers: word(\w), whitespace(\s), and decimal(\d), along with literals and multiplicity operators(*, +, ?, {}). One caveat though, most expressions raise errors when combined with the * or + operator.

/Aa{3}h*!/.gen
# => RuntimeError: Sorry, "h*" is too vague, try setting a range: "h{0,3}"
 
/Aa{3}h{3,15}!/.gen
# => "Aaaahhhhh!"
 
/(never gonna (give you up|let you down), )*/.gen
# => RuntimeError: Sorry, "(...)*" is too vague, try setting a range:
 "(...){0, 3}"
 
/(never gonna (give you up|let you down), ){3,5}/.gen
# => "never gonna give you up, never gonna let you down, never gonna give
 you up, never gonna give you up, "

The exception being the word matcher, which is treated as a random word. If a specific length or range is given for a word matcher, a word of suitable length is generated.

/\w{10}/.gen  # a word with 10 letters
# => "Chaucerism"
 
/\w{5,15}/.gen
# => "cabalistic"

This is still a bit cryptic, but the [:method_name:] syntax can be used to clean it up a bit, which calls the class level method of the Randgen class.

/[:word:]/.gen
# => "deutomala"
 
/[:sentence:]/.gen
# => "Antiphonically electrotellurograph chromatype proczarist plumet"
 
/[:paragraph:]/.gen
# => "Sesquioxide conationalistic paragoge dingus unsteadfast tenophyte
 goetic phytonomy hebephrenia rix uninjured biventral.  Householdry clunk
 amateur ramekin baronet chirotonsory mythical hobbist semblative
 cubonavicular outbrother templeward thaumatology velutina dharmasmriti
 kassak.  Persecutor wudu bertie deputative carburant."

Extending Randgen

You can add class level methods to the Randgen class which can be used within your regular expression using the [:xxx:] syntax.

class Randgen
  def self.serial_number(options = {})
    /XX\d{4}-\w-\d{5}/.gen
  end
end
 
/[:serial_number:]/.gen
#=> "XX3770-M-33114"

Under the Hood

There are two major steps involved in generating the random string. First, the regular expression is converted into a nifty little s-expression with the Parser class that is stored in the Randexp instance.

Randexp.new("(a|b)\\w*").sexp
# => [:union,
           [:intersection,
             [:literal, "a"],
             [:literal, "b"]],
           [:quantify,
             [:random, :w],
           :*]]

This sexp is then ‘reduced’ to the random output by the Reducer class, which walks the sexp constructing the string.

Dictionary

Randomly generated words are not actually generated. Instead they are picked from a dictionary of words loaded from your local words file, which typically holds thousands of words. So it’s got plenty to choose from. The words are also mapped by size, allowing you to generate words of a specific length, or within a range.

/\w{2,6} \w{10,20}, inc/.gen
#=> "mold forethoughtfulness, inc"

Note Right now randexps looks for your words file in /usr/share/dict/ or /usr/dict/. This works on OSX and most *nix distros, although I had to create a symlink on gentoo. Windows users are S.O.L., unless there’s a way to get a words file with cygwin.

Installation & Use

It’s published on github’s gemserver for the time being, it will be on rubyforge soon as well. Here’s the command to install it from github’s gemserver. Note You must be running the latest version of rubygems for this to work.

gem sources -a http://gems.github.com/
gem install benburkert-randexp

Load randexp from irb with the following.

gem "benburkert-randexp"
require "randexp"

Raison d’être

I started writing randexp because of another gem I was working on, can_has_fixtures, yet another alternative to fixtures. CHF replaces fixtures by generating pseudo-random data for model instances. By itself, randexp probably isn’t very useful, but combined with a model generator it can be quite helpful.

User.fixture(:employee) {{
  :first_name => (first_name = Randgen.word).capitalize,
  :last_name => (last_name = Randgen.word).capitalize,
  :username => username = "#{last_name}#{first_name[0, 1]}",
  :email => /#{username}@(corp|subsidiary|partner)\.com/.gen,
  :ssn => /\d{3}-\d{2}-\d{4}/.gen,
  :addr1 => /\d{2,4} (\w+ ){1,3}(street|lane|way), \w+, \d{5}/.gen,
  :records => (1..5).of { Record.generate(:employee) }
}}
 
User.generate(:employee).ssn
  # => "735-50-9234"
User.generate(:employee).addr1
  # => "8829 yearbook way, unconvenable, 29290"

Pretty cool, especially when you start extending the Randgen class.

I’m about to start rewriting CHF due to a few nasty bugs caused by single table inheritance models on DataMapper edge. It will probably be DataMapper specific because DataMapper is now our ORM of choice. (you can follow along here, but right now it’s just vaporware).

Comments: 2

@superphly will be in San Antonio for the Tweetup at Blue Star Brewery on Monday at 6:30

July 3, 2008 at 3:11 pm
Older Posts »