1. More Features Won’t Save Your Product

    dilbert (source: http://dilbert.com/2013-02-25 )

    Monday’s Dilbert strip is a perfect illustration of something that happens so often in app development: a collision of design by committee and feature creep that takes a product so far off the rails from its original vision that it becomes a complete trainwreck.

    It’s hilarious when it happens to Dilbert. It’s devastating when it happens to you.

    How does it happen?

    Read more →

  2. Pie Charts, now with Gradient Filling

    Lots of people love pie. Some people love pie charts. I personally love pie charts so much that I wanted mine to use a gradient fill. Now yours can too, and here’s how:

    Drawing pie charts with canvas is relatively straightforward. Draw a complete arc of one color, and then an arc of another color to indicate the completed percent. Canvas even supports gradient fills, so we’re all set, right? Unfortunately, no. The linear and radial fills that canvas uses aren’t quite what we need. What we really need is a ‘polar gradient’. It’s a bit more work, but we can actually build one of these too. Using createImageData, get an array of pixels. Now, visualize this array as four quadrents with an origin in the center. Loop through every pixel and translate its cartesian coordinates to polar coordinates. Then, set the alpha channel of the pixel proportional to its theta value. Finally, insert this array of pixels into an offscreen canvas element with putImageData.

    So what good does this gradient do us? Well, it means we can draw an arc of one color in the main canvas, and then use drawImage to overlay the gradient on top. By default, canvas uses the source-over composite mode. With this set, we’d get the proper arc with drawImage, but there would be some ‘extra’ gradient pixels from the source canvas. So, we set globalCompositeOperation to source-atop, which means that now drawImage will only copy pixels from the source canvas where there are pixels in the target canvas. Perfect. Now we just need the background. We take advantage of globalCompositeOperation a second time, and set it to destination-over. This way, it draws behind the gradient that’s already in the main canvas.

    Here’s what the final pie chart looks like…

    pieChart example

    …and here’s the code to generate it…

    pieChart({
        fillPercent: 95,
        backgroundStrokeColor: "#CCC",
        foregroundStrokeColor: ["green", "blue"],
        animationRate: 5000,
        radius: 120,
        stroke: 12,
        container: document.getElementById('ff')
    });
    

    To learn more, check out the code here on github.

    - William Farrell

  3. MojoTech Team Wins Best Design

    image
    This past weekend Aaron Snyder, Aaron Rosenberg, Andrew Shedd and Ivan Manolov took home the win for best designed app at DownCity.js.

    They created an app called Meet. The app attempts to bridge the “friend of a friend gap.” It’s a location-aware, socially driven dating app that pairs matched couples, suggesting a spot for the two to meet for their date.

    DownCity.js is a twenty four hour hack competition where teams come in with a fresh idea and their laptops. Twenty-four hours later they are judged on what they have created.

    Be sure to follow @MojoTech for more updates!

  4. Introducing Backbone.RouterFilters

    Rails controller like filters for your Backbone Router

    Backbone is amazing and so small that you have no excuse not to look at the source code as you’re using it. The hardest things I’ve encounter with Backbone are reconciling it with my experience using the Rails MVC structure and reminding myself that a 1,500 line library (that’s with comments!) is sure not to have all the features I’ve become used to in Rails.

    Read more →

  5. Our Clients Aren’t The Only Ones Growing

    Since founding MojoTech, everything we’ve done — every project, every hire, every business decision — has been made with the goal of helping our clients be more successful.

    Fortunately, delivering on that goal helps us to continue to achieve our own goals as a business. In fact, we think it’s truly the only way for a firm like ours to grow and thrive.

    And grow we have.

    Last year, we opened our first satellite office in NYC. Many of our clients were already based there, and the city’s vibrant tech scene has led to awesome opportunities for MojoTech to work with even more great companies.

    That’s why we couldn’t be more excited about this announcement: we’ve hired an amazing product manager to lead our efforts in the Big Apple.

    Erin Costanzo Cummins joins us from GetGlue, one of the hottest startups in New York, where she worked on managing products for the company’s 3M+ users.

    She has extensive startup experience and a passion for product that makes her the perfect fit for our team; in addition to her product manager duties, Erin will be spearheading our growth in New York by helping with recruiting, business development and giving MojoTech a powerful presence in the city’s booming tech community.

    Erin has a Bachelor of Science in Biology (woo hoo, science!) from The College of New Jersey and an MBA in Entrepreneurship from the Zicklin School of Business at Baruch College.

    And like the rest of us, while she loves building products, it’s not her only passion. Erin is an expert in the kitchen who makes killer shrimp tacos, and she and Nico, her Italian Greyhound, are both avid runners.

    In NYC and want to talk about your product? Drop Erin a line at erin@mojotech.com.

    Welcome, Erin!

    -Nick (@Kishfy)

  6. Turtles All the Way Down

    The time has come for Rubyists in general and Rails in particular to embrace Ruby’s Lisp heritage and ditch YAML as a configuration default for database. Code is Data/Data is Code.

    Read more →

  7. 2012 Year In Review

    I’m generally focused more on what’s ahead of us than what’s behind us, but I think it’s worthwhile to take a moment, and look back at 2012. It’s been a very exciting year! In 2012 we’ve:

    2012 has been a great year, but I’m sure the best is still ahead of us. We’re looking forward to an even better 2013!

    -Nick Kishfy (@kishfy)

  8. Wanted: Product Manager

    We’re looking to add a Product Manager in Boston, New York, or Providence to our team. Interested in joining us?

    Read more →

  9. Referrals and Beyond: Marketing a Development Firm

    Referrals Got Us Where We Are Today

    Since starting MojoTech I’ve had to invest very little time in marketing. Our first clients were people I already knew from the startup community. As an early employee of two venture-backed startups, I’d built enough of a reputation for building products that clients were coming in as fast as I could find talented engineers. These new clients came to us based primarily on my, and then my teammates, personal reputations.

    As the company grew, it gained its own reputation. There was a shift from people wanting to hire me or specific people, to wanting to hire MojoTech. This was an exciting transition and the first time I realized I was building a brand, one that was stronger than the sum of its parts.

    Read more →

  10. 5 Non-Technical Questions To Ask When Hiring A Development Firm

    Hiring a software development firm is often one of the largest decisions a new web or mobile product company will make. Questions about technology choices, programming languages, frameworks, development methodologies, and the like are all important, but so are the non-technical questions sometimes overlooked by technically-focused or inexperienced entrepreneurs and product authors. Here are a few to keep in mind.

    Read more →