Keep up-to-date by subscribing to the Vokle RSS feed. Keep up-to-date by following the Vokle Twitter feed.

Examining WarningShot::FileResolver (As an example resolver)

Filed under: RubyDevelopment, WarningShot — Wrote by Cory O'Daniel on Tuesday, November 11th, 2008 @ 10:10 pm

Read about it on GitHub, (who’s formatting didn’t bastardize it, as much).

A Congratulations is in Order

Filed under: polictics — Wrote by Cory O'Daniel on Wednesday, November 5th, 2008 @ 11:13 am

Congratulations to everyone that voted against Same-Sex Marriage.  We won, now we can begin to live in a United States that oppresses people and condones hatred and inequality, I never dreamed I’d see the day, I’d say that Im the Ann Nixon Cooper of hatred.  </sarcasm>

 

Seriously though, I hope that everyone that voted to Eliminate Rights of Same-Sex couples realizes that we have taken the first step as a country in eliminating the rights of mankind in general.  Americans have been fighting inequality since we landed here, and now we’ve taken a giant step backwards.

 

Everyone that voted to Eliminate Rights of Same-Sex couples for the ’sake of the children’, I hope you are ok with your children being taught in their history classes about how hateful and oppressive their parents were way back in 2008.

 

And please remember to spread the hate this holiday season.

Quick Post about Disappointment

Filed under: Uncategorized — Wrote by Cory O'Daniel on Tuesday, November 4th, 2008 @ 10:13 am

Andrew Jackson, Samuel Tilden, Benjamin Harrison, Al Gore.  I hope if the electoral college ignores the American people this time around there are some serious repercussions.

I’ll show you “behind the curtain”… blog

Filed under: Thoughts from the Team — Wrote by Edward Dekeratry on Sunday, November 2nd, 2008 @ 8:16 pm

So I know everyone on the team has been running around pulling all nighters this past week.  I think its time Vokle shows a little more of who and what is “behind the curtain” with a video or two of our activities as we move foreward…  thoughts?

Vokle Private Beta Delay

Filed under: Notice — Wrote by Edward Dekeratry on Sunday, November 2nd, 2008 @ 6:50 pm

Hey Everyone,

So we ran into some unexpected hiccups while making the final development push for Vokle’s launch, and are hard at work removing them.  It is important for us that Vokle breathe smoothly so that you can speak out and see others live, clearly.  We don’t expect it to hold us up too long, but we’ll keep you posted as we progress.  Follow us on twitter if you’d like to keep a close eye on our progress!

Hope everyone had a great weekend :)

-Edward

Massive Flaw in DataMapper 0.9.6 - Write Once Read Many Many Many Many Many, Im outta space here…

Filed under: RubyDevelopment, Uncategorized — Wrote by Cory O'Daniel on Thursday, October 30th, 2008 @ 9:00 pm

So I found a pretty massive flaw in DataMapper (ticket @ lighthouse).  Whenever using the :fields attribute when doing Resource#first or Resource#all a crap load (techincally speaking) of queries are fired at MySQL.  I put a ticket in and a lot of information and links to some pasties with examples (see lighthouse).  I don’t have the time to look into this now, being that I have a deadline Saturday, but it’s a pretty serious problem and I’m sure a lot of people are experiencing it and don’t realize it.

To try it out for yourself lets use Merb (and Ive tried it without merb, and without any dm plugins and the problem still persists).

Steps to reproduce:


merb-gen app my_test_app

cd ./my_test_app

merb -i

DataMapper.auto_migrate!

#turn on dm loggering (thats what I call it)

DataObjects::Mysql.logger = DataObjects::Logger.new('log/dm.log', 0)

# create a few users, then, get their IDs, I dare you...

User.all(:fields=>[:id])

So, the problem is if you look at your mysql log or DataMapper Query Log you’ll see a crapload of selects trying to get what the first select in the list retrieved.  The funnier part is, the subsequent selects are selecting the fields that aren’t included in the :fields list.

Why is this a huge problem?  That query above for my 3 user test table generated about 90 trips to MySQL.  The ‘friend button’ on Vokle.com just generated about 240 trips to MySQL in one click, that’s how I found the issue in the first place.

Someone fix this please!?  If its not fixed by Saturday (my day ‘off’), I’m going to look into it.

Happy (bug) hunting.

WarningShot - New advanced ‘no more tears’ formula

Filed under: RubyDevelopment, WarningShot — Wrote by Cory O'Daniel on Saturday, October 18th, 2008 @ 5:13 pm

 

Get Your Guns

Get Your Guns

WarningShot is a project I have been working on for quiet a while and I now feel that it is stable enough to be available to the masses.

WarningShot is a dependency resolution framework with the goal of making staging machines for software as simple as possible, so developers can focus on developing. Another goal of the project is to get rid the process of keeping Wikis on how to set up servers to meet the requirements for an application.

Like a lot of developers I have rake and cap scripts that do all sorts of things for me when I deploy software, like create symlinks for database.yml files, install gems, you name it.  I also have a different wiki page for every application and every type of server role.  Sometimes I forget to cross update stuff and next thing you know the next deployment sucks.

How does WarningShot solve this problem?  Well WarningShot is composed of one or many ‘machine recipes’ or config files (YAML).  Machine recipes are essentially list of requirements and dependencies to make a machine environment be ideal for your software (or just to your liking, I use warningshot to set up computers to my liking, keeping all my computers uniform).  Machine recipes are kept in your source repository and should be updated whenever features are added or removed.  So instead of updating a wiki, you update the config files, this way any version of your application that is release also has a set of specs with it that determine what it would take to properly stage a computer to run it.

You might be saying, ‘well that sounds neat, but what does it look like?’  

WarningShot Machine Recipes can be as complicated or as simple as you want.  Each recipe can contain one or more ‘branch.’  A branch is a part of the Dependency Tree that is created when all of the related Machine Recipes are loaded for an application.  Here is a simple recipe to spec out gems that an example application might require.

---
:branch: gem
:environments:
  :production:
    - {name: 'merb-core', version: '>0.9.5'}
    - {name: 'dm-core', version: '>0.9.5'}
    - rack

In the above example I essentially stated that I am dependent on merb v 0.9.5 or greater, datamapper v 0.9.5 or greater and any version of rack when in production mode (there is also a ‘global’ environment that you can set requirements in as well to make them apply to all environments: test, qa, development, production, etc).

Here is a more complex Machine Recipe:

---
- :branch: gem
  :environments:
    :global:
      - {name: 'merb-core', version: '>0.9.5'}
      - {name: 'dm-core', version: '>0.9.5'}
      - rack
- :branch: file
  :environments:
    :global:
      - {source: 'http://example.com/nginx/nginx.conf', target: '/etc/nginx/nginx.conf', md5: '16ec37c499f64fc60e95650b500e30a4'}
- :branch: directory
  :environments:
    :global:
      - /tmp/uploads
      - /mnt/media/images
- :branch: symlink
  :environments:
    :global:
      - {source: '/tmp/uploads', target: './public/uploads', force: true}

The second machine recipe states my app’s gem, file, directory, and symlink dependency (note, when multiple branches are listed they should be prefixed with a hyphen).

 

So what makes this better than a wiki?  This:

$: sudo warningshot –resolve

 

A simple one line command and having to remember to set up dependencies becomes a thing of the past.  

You can interface with WarningShot from your Cap or Vlad scripts and deploy to a machine that has never been set up and have nothing to worry about. WarningShot will give you statistics and let you know if there was anything it wasn’t able to fix.  Another great place to use WarningShot is to get up and running on new projects.  Instead of a developer spending a few hours reading Wikis on how to set up an application and configuring all the dependencies if WarningShot is installed and the configs are up to date a simple ‘warningshot –resolve’ will set the environment all up.

WarningShot can do a lot of things out of the box, er out of the github, whatever. Currently it supports the following dependency resolvers:

  • File
  • Directory
  • Symlink
  • Gem
  • URL
  • CoreLib
  • Manual

 

WarningShot can’t fix everything (yet) and that is why there is a ‘ManualResolver’ which is a glorified TODO list. If there is anything that you can’t resolve with WarningShot you can put it in the ManualResolver and after WarningShot fixes what it can it’ll output the TODOS so the developer knows exactly what else needs to be done.  No web page or wiki to hunt down, its all together.

Beside a TODO list the ManualResolver serves as a ‘feature request.’ Anything that can’t be resolved by WarningShot, in my opinion, should be able to be resolved by WarningShot. So if you use the ManualResolver, send me a feature request and tell me what I need to implement or even better join in on the project :).

This post is really just meant as an introduction, stay tuned for more posts about WarningShot in the near future.  If you are interested in using WarningShot and want some more reading check out these wikis.  

If you are interested in hacking on it, check out http://github.com/coryodaniel/warningshot or http://warningshot.lighthouseapp.com.

The Unified Independent Vote

Filed under: Thoughts from the Team — Wrote by Cory O'Daniel on Friday, October 10th, 2008 @ 2:01 am

There are a lot of Ron Paul supporters that are left without a candidate to vote for this November. A lot of people think you can just write Paul in, well you can’t in most state (if any). Instead look into other candidates besides the Dems and the GOP. Nader is running (when isn’t he) and so is Chuck Baldwin, Bob Barr and Cynthia McKinney.

What I’d like to do is get as many people as possible that are frustrated with the ‘lesser of two evils’ voting practices to debate on the best independent candidate and then make a pact to vote for that candidate come November in one great unified independent vote.

Please spread this post if you are not planning on voting for Obama or McCain. Post your favored independent candidate and why as a comment on this blog. Come back November 4th before you vote and see who is in the lead. Let’s all vote for whoever is most posted come November and unite to for a change in our broken election system.

Bailout Signed into Law - Politics, dirty tricks.

Filed under: Thoughts from the Team — Wrote by Cory O'Daniel on Sunday, October 5th, 2008 @ 12:13 pm

I really just want to hear some people’s opinions on my proposition.  Critique positively or negatively as you may.

People listed in the ‘yea’ columns need to lose their jobs next election.

Congressmen

Senators

I am generally not really into politics, but this bill has infuriated me.  I have seen lots of polls online about the number of Americans against this bailout, numbers range from 62% -> 80+%.  So many people against it, but we are doing it anyways [1, 2, 3, 4].  Not only are so many people against it, but it was shot down by the House only to be crammed back down the throats of the American people three days later with $100,000,000,000 in pork attached to it.

America, Uncle Sam, this is goddamn ridiculous.  We are treating our currency and the Federal Reserve like a whore, we continue to put out and put out and just ruin the value of our currency and what America stands for.

We aren’t talking about $700b dollars here, we are talking about $700,000,000,000 dollars, one obviously has more impact.  $700,000,000,000 dollars, that is $3,300 per American, if you count all of the children, it is estimated at $5,000 to $9,000 if you don’t.

My favorite part is that this is the ‘only solution.’  Some politicians and a majority of citizens believe it will only do more harm to our failing economy, and does not address the true problems.

So what do you do when their is nothing you can do.  American’s yelled, we wrote congress, the senate, state representatives and we were ignored.  What’s the point of having a vote if it doesn’t get counted.

What is the point of all of this?  I was thinking, if this money ‘has to’ be put into the economy at the expense of American tax payers, why not offer an optional solution that could benefit the people as well, and still help the economy.

The first thing to do is calculate the cost to a household.  Since this is going to be costing tax payers for generations to come, count your children.  I’ll use my wife and I for the example.  Two of us, no kids, at $3,300 dollars each comes to $6,600.  Instead of our $6,600 going to people who have already poorly invested the money given to them, give the $6,600 to us.  We are going to pay for it in the long run.  Think of it as an interest free loan from yourself.

If the US ‘has to’ print/borrow this money and pump it back into the economy, give it to the people, with restrictions of course.  Each household would receive one of the following investment packages based on personal preference or financial situation.

* Mortage Assistance - If you have a mortgage that is not ‘toxic’ your contribution to the economy (number of people in your household times $3,300) is applied directly to your mortgage.  Banks that were less risky and were not shuffling toxic debt around will receive a vast amount of funds, banks that were irresponsible with their lending would receive less funds.  Either way, homeowners will be X amount of dollars closer to paying off their home.

* Stock Investment - If you have a toxic mortgage or are not a home owner, you would have the ability to select from pre-packaged stock investments.  These investments would be packages with low, medium or high levels of risk depending on your personal choice.  The packages would consist of the banks in trouble as well as other stocks to balance out risk.  Again, as a household you would get X amount of dollars to invest in the market.  The DOW would start to recuperate, the stock market would get billions of dollars pumped into it, and the American people would have the potential to even make profit off of their interest free loan.

* Retirement - If you already own your home, or don’t have a mortgage and are not fond of the stock market, the third option would be to have your contribution added to your 401k or IRA.  Just like the stock market option this money would begin to be dispersed into corporations and banks via money market accounts or stocks that are backing the retirement package.  It would also offer citizens concerned about their retirement some additional security.

There are obviously details that would have to be worked out for this to work, but there are details that have to be worked out for giving $700,000,000,000 to a group of people that irresponsibly destroyed the US economy for their own benefit.

The bill has already been passed, but it may not be too late to find a better way to invest the money into America’s failing economy without it being a complete burden on the tax payer.  If you found any logic in this, please write the Congress, the Senate and your State Representatives and say, “We don’t agree with the bailout, but if we have to do it, let’s try to do it right, honesty and fair.”  Three things that haven’t been done in a long time.

Build a brand like Marriott

Filed under: Thoughts from the Team — Wrote by Ian Serlin on Tuesday, September 16th, 2008 @ 10:25 am

Or better yet, don’t.

I’ll share a secret with you: No company sells just a product, they sell a lifestyle. From Apple to Honda, the Army to Subway they’re trying their best to convince you that their product is going to allow you to live the life you want to live. There’s a reason why Joe Camel was effectively banned in 1997.

Recently I attended a timeshare presentation for the Las Vegas Marriot Vacation Club, mostly because every once in a while I enjoy the Las Vegas lifestyle and this was an excuse to go there.

Now, walking in I had a pretty open attitude towards Marriott, I had stayed in their hotels a few times and remember them being comfortable. Walking out however was a completely different story, Marriott is just one chain in the sea of hotels and right now, for me, they’re sitting on the bottom of the ocean right next to those scary glow in the dark fish.

Here’s what sunk them:

  1. Poor setup - The reward for listening to the timeshare presentation was a discounted 2 day-1 night stay at the Tuscany Suites Las Vegas which sounds nice, but in actuality was more like your hometown’s motel than the quality experience you’d want to associate with your brand. The presentation happened on the second day.
  2. Poor use of resources- We had to wait almost an hour after arriving at the location before beginning the presentation. During this time we languished in the hotel lobby only to discover later that there was an entire floor of the hotel set up as an exhibition space for the history of Marriot and the Vacation Club which we were subsequently whisked through in about 5 minutes. There seemed to be some clever displays too, I wouldn’t know for sure though, I didn’t really get the chance to see them.
  3. Poor core differentiator - Marriott’s big idea for “fixing” timeshares is basically to include something for everyone and as a result it came off as the lowest common demoninator. Even more damningly, by virtue of their noble goal they inadvertently made their system so complex that the conversation shifted sharply from “where do I want to go for vacation” to “how can I best maximize my Marriot points”? Managing Marriott points is not my goal. Flexible and complicated does not beat fixed and simple - Pareto’s principle anyone?
  4. Poor follow-through - Near the conclusion of the presentation a “manager” was brought in to present the “special offer” as an incentive for closing the deal that day - I would get to start using my timeshare this calendar year and they would sprinkle more points on for good measure. If I buy something and it doesn’t come in the mail I expect to be able to start using it immediately. On top of the purchase price there was also a litany of small fees for similar things you’d simply expect to be able to do.
  5. Poor targetting- I didn’t see any evidence during the entire time I was there that the sales people knew they were selling a lifestyle and they clearly didn’t appreciate it was so. In a nutshell, you give Marriott a fair chunk of money over a period of years and you get to stay in Marriott affiliated properties all over the world. This assumes, however, that you are the kind of person who would want to stay in the same kind of place (Marriott) no matter where you were in the world, pretty much for the rest of your life. If that’s you, fine, no problem but if my Marriott experience up to that point in the conversation was any indication, I think I’d rather take my chances with the Candiru fish.

In the end the salesperson wrapped up their presentation, showed me to another sales rep who played the “you’re-gonna-feel-like-a-schmuck-tomorrow-if-you-pass-up-this-golden-opportunity-today” card and then silently escorted us down the elevator back to the lobby.

Now, one of the worst possible things that a company can do is lower the opinion of itself in the mind of an outside party, customer or not. Doing that via direct interaction with that third party shows some serious lack of critical thinking skills on the part of whoever is managing those operations.

At Vokle, we know we’re selling a lifestyle and we’re proud of it because it’s a lifestyle that we all believe in and enjoy. Also we want to be able to open up direct lines of communication with our users so that we make sure we’re staying true to this lifestyle (especially when it’s 6am and I’m still awake because Monster drinks are so delicious). I know it might not be obvious from the name, but we love good conversations and opinionated people so we’re building a product to make finding and having those kinds of interactions easy… in so many words.

behind the curtain