Matt Gornick's Blog

a day in the life of an entrepreneur

Implementing GCal4Ruby with Google AuthSub

leave a comment »

On a side project I'm working on, StudentPlanr, we needed the ability to use Google AuthSub for a little more security than passing a username/password in the clear.  I have used the gCal4Ruby gem in the past (by Mike Reich) and loved the ease of use and simple interface to interact with Google Calendar.

Today, I coded up a way for gCal4Ruby to use AuthSub and now everything is up and running.  I'll be cleaning up some code and adding in things that are useful to the StudentPlanr project, so feel free to check it out.  Hope it will be useful for your projects.

Feel free to fork and contribute:

Written by mattgornick

February 19, 2010 at 4:13 am

Posted in Personal

How to Bundler 0.9.5, Rails 2.3.5, and running on Heroku

leave a comment »

So Heroku recently updated to the latest Bundler this week.  I did the update locally, did all the Gemfile changes, and pushed to heroku… moments later my app died!  Now I should have pushed it to a new heroku app instance so I didn't bring down a production app, so lesson learned.

I put together my notes on what I needed to get everything back up and running smoothly as well as getting my local setup working:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 
# put this directly above the Rails.boot! line
 
class Rails::Boot
  def run
    load_initializer
    extend_environment
    Rails::Initializer.run(:set_load_path)
  end
 
  def extend_environment
    Rails::Initializer.class_eval do
      old_load = instance_method(:load_environment)
      define_method(:load_environment) do
        Bundler.require :default, RAILS_ENV
        old_load.bind(self).call
      end
    end
  end
end
 
 

I'm running Snow Leopard, Bundler 0.9.5, Rails 2.3.5, and use SQLite for my production DB.

Written by mattgornick

February 18, 2010 at 6:09 pm

Posted in Personal

Xcode: A signed resource has been added, modified, or deleted.

leave a comment »

I recently had been getting the error "A signed resource has been added, modified, or deleted." everytime I wanted to install an application from source on my iPhone.  I ran into this blog (http://blog.tapmode.com/post/127796473/how-to-move-code-signing-certificates-to-a-different) that recommended:

1. Xcode > Build > 'Clean' and then 'Clean All Targets'
2. Xcode > Build > 'Build and Go'

After that everything worked out and the app properly installed on my iPhone.

Written by mattgornick

July 21, 2009 at 3:37 pm

Posted in Personal

Social Hedging: A Tactical Approach to Life Hacking

leave a comment »

2 things I hate:
1. Standing in lines that exceed 3 minutes
2. Wasting time

Yesterday, I was asked to see an opening day movie (Harry Potter) with a group of friends.  I was indifferent to seeing the movie and would normally not have gone if it wasn’t for friends going.  As you may guess, the lines at the Harry Potter movies are long and filled with tons of dedicated fans.  I have nothing against people dressing up as wizards, movie characters, etc., but its not my cup of tea so if I can prevent myself from spending several hours waiting in line I’ll do it.

(9 p.m. + opening night of Harry Potter and the Half-Blood Prince) I needed to fill up my tank of gas.  Show starts at 12:01 a.m. My friends will be getting to the theater around 11:15 p.m. to get tickets for the showing (while waiting almost an hour in a line filled with thousands of people).  I was not entirely sure that they would be able to get tickets at this point as this is a highly anticipated movie with tons of fans: the movie can easily sell out if you aren’t in line earlier enough.  At this point, I recalled that I used Fandango in the past when I was in New York City to see the recent Batman movie.  I loaded the Fandango app on my iPhone, purchased a ticket for the movie, and received the email confirmation.
(9:30 p.m.) I swing by the theater and to my surprise the line for the Harry Potter movie had already started and was outside the theater!  I walked in the regular entrance, grabbed my midnight showing ticket at the Fandango counter and drove back to my apartment.
(11:45 p.m.) I call my friend to find out that they are in line for tickets and they’ll get in to see the show tonight.  They mention that I need to hurry up if I want to get tickets.  I left my apartment.
(11:57 p.m.) I arrived at the theater, casually walked in past a few thousand people inline to get tickets, and comfortably got my seat.  At this point, my friends are still in line trying to get tickets, worrying that the show my start without them, and potentially missing the movie.
(12:01 a.m.) Typical movie start
(12:15 a.m.) Moved to where my friends were sitting, watched movie, enjoyed time with friends, etc.

The reason I bring up this story is that so much uncertainty surrounded this event.
1. If I get there at this time, will the show be sold out?
2. If it isn’t sold out, will I miss part of the movie because the line is too long/slow?
3. How early should I get there to get a good seat?

I had made the decision that I will stay at my apartment as long as I could to optimize my utility (getting things done, knocking out email, relaxing, etc.).  I’ll go ahead and buy the Fandango tickets not knowing if my friends will get tickets (if the show sold out) and simply wait until either:
a). My friends get in the ticket line about an hour early and do in fact get tickets.  I will drive over to join them.
b). My friends didn’t get tickets because the line was too long and now I don’t have to waste my time in line but loose the cost of the Fandango tickets.

These decisions are seemingly reminiscent of financial stock options at expiration.  After retrieving the tickets, I had socially hedged my night for either outcome: I am guaranteed to come out ahead or at least protect myself from downside risk (of not knowing what to do or to do nothing).  I try to keep up with the standard life hacking and productivity news, but I feel that combining the right tactics and planning with a mixture of life hacking can be highly effective.

I’m going to experiment with other strategies as they present themselves as I don’t think this is an isolated event.  If you have any other social hedging or life hacking ideas, let me know.

Written by mattgornick

July 16, 2009 at 3:22 am

Hostname resolution errors on CruiseControl.rb on Ubuntu 9.04

leave a comment »

I finally resolved an error I’ve been having with CruiseControl.rb with our Ruby on Rails project in Subversion (SVN).  Currently we use RoR with Cucumber for our BDD and CruiseControl.rb as the CI environment.  Below are the steps I’ve taken and the final resolution to fix the problem:

1. Setup Ubuntu Server 9.04 (grab all the necessary gems, subversion, db, etc.)
2. After downloading the source from http://cruisecontrolrb.thoughtworks.com/
3. cd ~/cruisecontrol-1.4.0
4. ./cruise add ProjectName –repository ‘https://projectpath.com/trunk‘ -s subversion –username cruisecontrol –password secretpassword
At this point, the code properly checked out of subversion and I didn’t receive any errors.
5. cd ~/.cruise/projects/ProjectName/
6. edit cruise _config.rb and uncomment project.rake_task = ‘features’
This will build using the ‘cucumber features’ tests
7. cd ~/cruisecontrol-1.4.0 and run ./cruise start
At this point the CruiseControl.rb server is supposed to startup, svn update your projects, and run a build if necessary.  I notice that I received errors:
svn –non-interactive log –limit 1 –revision HEAD:1 –verbose –xml
Host not found

I went into the ~/.cruise/projects/ProjectName/work/ directory and ran a svn update and it would intermittently work and other times return “host not found”.
8. Since this appeared to be a DNS issue I modified the DNS entries via:
sudo vi /etc/resolv.conf
modified and added a line for 4.2.2.2 (Verizon’s public DNS server).
9. I reran step 7 and magically my CruiseControl.rb build ran successfully

Written by mattgornick

July 16, 2009 at 2:17 am

Our office space part 2

leave a comment »

Decided to take some more shots of the office in use. As you can see,
we are running low on computers.

See and download the full gallery on posterous

Written by mattgornick

June 4, 2009 at 2:14 am

Posted in Uncategorized

Entrepreneur Dinner Meetup 1 at UIUC

leave a comment »

Today a bunch of UIUC entrepreneurs met up at Za’s on Green St. to
grab dinner and talk about the stuff we’re working on. I can’t wait
until the next meetup.

See and download the full gallery on posterous

Written by mattgornick

June 4, 2009 at 2:08 am

Posted in Uncategorized

First Few Weeks at OrangeQC

leave a comment »

So 2 weeks have passed since we first started working on OrangeQC. I
wanted to post some random ideas and opinions about stuff at OrangeQC
and starting up in no particular order.
 
Early Mornings:
I love getting into work first thing in the morning (5 a.m.-). I can
knock out all my email for the day, catch up on some last minute
tasks, plan out my day accordingly, etc. It is a lot easier to get
things done when you don’t have distractions to divert you from work.
Also the sunrise out of our windows is pretty nice in the morning too.
 
Test Driven Development:
Should have started with this. Writing tests afterward is a pain and
defeats the purpose of agile development. I think I’m going to find
myself writing more tests and fixing more code than if we just started
by writing tests.
 
Food:
Eating healthy. Enough said.
 
Afternoon workout:
This is a must for me. Getting in early and working till ~noon is
pretty exhausting and I need a break in the day. Hitting the gym and
doing a solid workout has been great in clearing my mine and helping
me solve problems that I couldn’t get before. After the gym, I grab a
healthy lunch and head back to work.
 
Deadlines:
You work fast when you have a deadline to meet. You work even faster
when the deadline is set by the customer.
 
Dual monitors:
This is a productivity must. I’ve found myself programming and
working much more efficiently than with just a single monitor. The
SongAlive team has a pretty nice 24 inch monitor. I might look into
one after we get a few sales. Right now, we’ll use the free 17 inch
monitors.
 
Fire at Five (Event):
Fox Development Corp. has a once a month event for all the tenants at
Research Park and EnterpriseWorks. Fire at Five is a time to relax,
enjoy a bonfire, grab some food, and socialize with employees at other
companies. This being my first Fire at Five, I was pretty impressed.
There were a ton of people, great food, and a very social atmosphere
(not to mention the weather was great).

See and download the full gallery on posterous

Written by mattgornick

May 31, 2009 at 4:12 pm

Posted in Uncategorized

Fitness and Measuring Everything

leave a comment »

After spending a good portion of my life not caring about keeping track of my exercises, calories, weight lifted, miles ran, etc. I've come to the conclusion that that just doesn't suffice anymore.  Without a doubt in my mind, I'm pretty healthy: I eat good, excercise frequently, and enjoy rock climbing.  When trying to enact change like gain weight, losing weight, run a 6 minute mile, and climb harder routes one must properly measure the progress being vs the goals.

Generally speaking, one can't efficiently change something they can't measure.  The same holds true for workouts, health, lifting, you name it.  Students gain a clear understanding of their performance by receiving grades on homework and tests.  Although debatable, this is an objective way for students to tell if they are meeting their goals.  I'm going to test the methodology and apply it to my physical activity.

I read an article by Tim Ferris that described his "arguably exaggerated" journey in gaining 34-lbs of muscle in 28 days.  Despite this incredible feat, he brings up some very interesting points; namely, he says "6. Record every workout in detail, including date, time of day, order of exercises, reps, and weight. Remember that this is an experiment, and you need to control the variables to accurately assess progress and make adjustments."  I'm also keeping track of food (carb, protein, fat) intake as they are useful measure to gauge progress of change as well. 

I'm attempting to keep track of the variables by using a service called Gyminee (www.gyminee.com).  It does a pretty decent job of keeping track of food, workouts, and personal goals.  I'll be experimenting with the service for the summer and see how it works out for me.  Initially, I can tell that it doesn't have some basic excercises in its database and it has been ridiculously slow for some reason, but I'm going to stick with it and see how it works for my lifestyle.

Written by mattgornick

May 20, 2009 at 12:52 am

Posted in Uncategorized

Why meetings fail and how to change that

leave a comment »

I recently attended several meeting which, in hindsight, turned out to be completely pointless.  Oddly enough, we have meetings to fulfill a particular goal (e.g. inform others, brainstorm, follow-up on pending tasks) but when meetings occur just because their is nothing else to do, everything gets lost in translation.

I see one huge reason that meetings fail: lack of strict agenda.  From this there are two things that could occur:

1. There is absolutely no agenda at all, or

2. There is an agenda but it is not strictly adhered to

The first bad, but the second is worse.  May people lack agendas in their meetings because they don’t think ahead or they do not think that it will drastically improve the quality of their meeting.  Unfortunately, it is even worse when people think that their agenda is solid and perfect.  This gives people the false sense of hope that their meeting will in turn be successful and productive even though the opposite is usually true.

So how do you fix dysfunctional meetings?  There have been books written on this topic and a laundry list of remedies that people prescribe, but their are two fundamental laws that should be followed:

1. Create an agenda.  This includes:

  • creating a document that outlines the date/time/duration this meeting will occur
  • key bullet points that need to be addressed (limit to ~2 or 3 per hour)
  • sub-bullet points that are more specific and granular
  • try to separate the document so notes can be taken on the paper (if necessary)

2. Follow that agenda.  This includes:

  • Having the person in charge (usually the one who created the agenda in the first place) keep the group from digressing.  This is critical!  Many meetings start with a goal to inform the team of everyone’s progress only to find that one person spoke and then started a debate about new features, previous meetings/engagements, and highly granular topics.
  • Sometimes the agenda creator is shy or timid and thus feels bad if they need to cut a topic off or move onto other items.  I would recommend trying a timer or something to the effect of, “We’re going to go around the table and give about 5 minutes per person to fill everyone in on what action items they’ve completed. Go!”  This gives each person a clear understanding that they need to fit possibly months of work into a 5 minute summary so they need to be concise and cogent.  Once you allow for unlimited time to be spent talking and digressing, the meeting will in fact fail.

This summer, I’ll be following my own advise when setting up meetings with OrangeQC.  We’ll be following a mix of Agile and Extreme Programming methodologies in order to get things done.  I’ll keep you in the loop as to the successes and failures of my future meetings.

Written by mattgornick

May 16, 2009 at 5:05 pm

Follow

Get every new post delivered to your Inbox.