Blog

  • Find Jobs Using RSS Feeds from Job Boards

    Tip #1: Do not take a break from your job hunt until you’ve found a job, and this means weekends.

    Some folks try to game the job hunt. These folks tell themselves, “If I apply on Saturday, I look desperate, but Sunday evening looks much better.” I say bullshit.

    As a creature with a hunter-gatherer past, you should be looking for work now, and you should have fun looking for it.

    Think of it this way. If you take today off, somebody else gets to be the first cover letter from Saturday in someone’s inbox.

    Tip #2: Scour the web for Job Boards (e.g. craigslist) and subscribe to as many RSS feeds as you can. Have the RSS feeds go to your mobile if you have to.

    I basically took all the RSS feeds from the Job Boards that I love like Authentic Jobs and put them into my RSS reader. My top priority is to read each feed and then if I get too much info, filter out the feeds or posts I don’t need using Thunderbird.

    Wish me luck!

  • Jason Calacanis Wants Startups to do 10 Things NOW

    Jason Calacanis Lists 10 things startups need to do now given the economic climate.

    Since I can’t reprint, here are my comments on his points 1 through 10.

    1. Barce’s comment: That goes without saying. I’d like to see another option besides this one. I think it’s this. You’ve got your health and you’ve got your sanity. Be happy with that and let others enjoy your happiness. It’s a scarce commodity in difficult times.

    2. Barce’s Comment: I couldn’t agree more. Teach your team how to use the latest collaborative technologies. Make notes of who is technology shy with the new communication tools. At Dogster one of the last things I tried to introduce was the use of IRC, a tried and true communication tool for avoiding inefficient back and forths with IM.

    3. Barce’s Comment: Make sure you are firing the “average people.” Work at startups can often be blurred by politics. Very often, the one who speaks the least is the one who does the most work. It’s better to keep someone who disagrees with you than a yes person who will lead you blithely to the end of your business.

    4. Barce’s comment: Also be sure to adjust your terms from net 60 to net 90… the extra 30 days can help with your accounts payable.

    5. Barce’s comment: This is pretty tough to execute so have an all hands and ask for ideas.

    6. Barce’s comment: This means that every worker of yours is a marketer who must do there best to market your company. If you’re at a social media site, that means talking face to face with at least 5 new people a day about your website. That’s not asking much: 2 at the coffee shop in the morning, 2 at lunch, and 1 at your afterwork hangout or the bus stop in the evening.

    7. Barce’s comment: What a great way to build morale in down economic times! This is pretty fun, and again take note of who isn’t having fun with this.

    8. Barce’s comment: I always shown up for stuff like this, and it’s a great team builder.

    9. Barce’s comment: This can be as simple as a google ad that gets served up on your competitor’s site because they are on life support and can’t watch all the ads anymore.

    10. Barce’s comment: My dream is to have a popular website that I’ve created and that people just love to be on. I want to learn more about raising money. If you’ve got tips, I’m all ears.

    Happy Friday!

  • What Projects Are In The Works

    1. I wrote Noobwatcher.com as an emergency response to a misguided development process and as a solution for when the sysadmin won’t let you configure subversion the way the dev team and the company as a whole needs it.
    2. I wrote the number one Google entry for installing the sfGuardPlugin as of this writing, and wow, they still weren’t happy with my work.
    3. I worked closely with symfony developers to figure out some complicated undocumented symfony issues such as formatting errors in forms. Thanks, Dustin!
  • Beware the Recruiter Bait and Switch: Get References!

    There’s a slimy bait and switch tactic that’s been pretty common this year, and it’s the recruiter bait and switch. They send you a letter that looks like this:

    Dear Victim,
    
    Nice to find you on linkedin. I'm contacting you as your work experience looks
    like a good fit for roles at AwesomeCompany.com .
    
    Cheers, Slimy Recruiter
    

    Then they tell you that the job that they were originally trying to fill is gone, but they have other jobs available at SlaveLabor.com.

    The sad thing is that if you dig around, you find out that these recruiters never had a relationship with AwesomeCompany.com and are really just working for SlaveLabor.com .

    Takeaway: Get references from your recruiter of people that have placed.

  • 3 Ways to Green Your Office

    These 3 steps can easily green your office:

    1) Restrict your paper usage. Ya, I still use notebook paper, but I didn’t use the printer to print out a single sheet of paper in September. September should be “No Printing Month”. 😀

    2) Buy carbon credits. Your servers, laptops, electronic gadgets, cars or buses carbon emissions can be offset through carbon credits. A site like myclimate might spend the money on algae in the sea for more oxygen.

    3) Go Solar! With the Solio Charger for your iPhone, or solar backpacks from Voltaic Systems, you don’t ever have to plug into the grid again… as far as computing goes.

  • Saving Time on Subversion Merging: svn merge Manually

    I just ran a benchmark on merging files using Eclipse which then calls subversion and running subversion manually on a 28MB repository.

    The results are interesting.

    svn merge destination_url@HEAD source_url@HEAD destination_folder

    took exactly 7 minutes

    Using a subversion merge in eclipse on the same repo and revision took 10 minutes.

    Take away: use svn merge on the command-line.

    Ya, I’d love to go back to using git.

  • Part II of NoobWatcher: Automatically Reporting Server File Changes

    With Noobwatcher, I’m now able to be really on top of subversion commits. But now it’s time to start working on part II, the part that keeps track of my server configuration and makes sure that it’s correct for all the servers that I want to use.

    I’m taking a look at Tripwire. Are there any libraries that you use for automatically checking if files have changed?

  • How Do You Avoid Presentation Disaster?

    It’s been a rough few days at work. We got hacked. I had to cancel a lunch with some pals at the Reverie. @alicetiara and @walnotes were gonna be there and everything was set for a pretty convivial conversation and some fun debate.

    But the code used for my presentation didn’t work because the machine it was working on wasn’t configured correctly. There might have been an issue with someone overwriting my code, too.

    How do you avoid presentation disaster?

    For my part, I’m creating a tool called Noobwatcher that:

    • checks the repo for changes every N seconds — because of a high noobage level, I’m gonna check every second
    • the moment that there is an update send the diff to me via IM, email, twitter. Take your pick.
    • check the server configuration files important to my code every N seconds
    • the moment a configuration file changes send the diff to me via IM, email, twitter — might as well use pownce, too.

    Have you had to set something like this up? If so, what solution did you use?

  • Symfony Has a Swift Plugin for Sending Gmail

    It’s easy to send emails using your gmail account with the Swift Plugin.
    Here’s some sample code below

    
    $to          = 'somebody@example.com';
    
    $htmlMessage = "OH HAI!";
    $textMessage = "*OH HAI!*";
    
    $connection = new Swift_Connection_SMTP(
      sfConfig::get('app_email_smtp_server'),
      sfConfig::get('app_email_smtp_port'), 
      Swift_Connection_SMTP::ENC_SSL
    );
    
    $connection->setUsername(sfConfig::get('app_email_username')); # gmail email
    $connection->setPassword(sfConfig::get('app_email_password')); # gmail password
    
    $mailer = new Swift($connection);
    $message = new Swift_Message("Your subject goes here. OH HAI!");
     
    $message->attach(new Swift_Message_Part($htmlMessage, 'text/html'));
    $message->attach(new Swift_Message_Part($textMessage, 'text/plain'));
     
    // Send,
    // try and catch
    try {
      if (!$mailer->send($message, $to, sfConfig::get('app_email_username'))) {
        throw new Exception('mailer error');
      }
    } catch (Exception $e) {
        sfContext::getInstance()->getLogger()->info(
          "Caught swift send error exception:\n" .  
          $e->getMessage(). " ".
          $e->getFile() . ": Line ".
          $e->getLine() . "\n", $e->getTraceAsString(), "\n"
      );
    }
              
    $mailer->disconnect();  
    
  • sfGuardPlugin: The Extra Documentation

    Hey Folks,

    The Symfony project has a section called sfGuardPlugin Extra Documentation.

    It’s worth a read, especially the part about using the sfGuardUserProfile calls.

    The docs haven’t been updated since March, so if something isn’t working, please refer to my previous blog post on installing the sfGuardPlugin.

    I’d like to state that personally, there isn’t really the right way to do this. Sometimes you already have a table that has a username and password. You can skip using the sfGuardAuth password tables by doing the following:

      sf_guard_plugin:
        algorithm_callable: md5
        success_signin_url: @homepage
        profile_class: sfGuardUserProfile
        profile_field_name: account_id
        check_password_callable: [Account, checkPassword]
    

    The important line here is check_password_callable, where you are telling symfony to use the Account table and to use your own checkPassword method.