Development

9 MongoDB 2.6 Drivers Released

I’m pleased to announce the coordinated release of drivers in 9 languages in preparation for the release of MongoDB 2.6. This is the largest driver release in the history of MongoDB, both in terms of code changes as well as in terms of drivers released. Official Drivers for C, C++, C# (.net), Java, Node.js, PHP, Python, Ruby and Scala were all released with Perl following shortly. In the upcoming weeks community drivers will be updated to take advantage of the new features present in MongoDB 2.6.

Cross Compiling with Go

One of the great features of golang is that you can compile executables for many different platforms and architectures from a single machine. It’s really nice to be able to provide executables of Hugo for a bunch of different platforms and architectures without having to have all these different machines in a build cluster. As I’ve been working with Hugo, I’ve wanted to make the experience of cross compiling as easy and painless as possible.

A modern CLI Commander for go

While developing Hugo I became disappointed with the interface limitations flags alone provide. A quick look at virtually any command line application (ls, grep, less, etc) reveals that most applications overuse flags to do everything and often allow conflicting flags to be applied. Even though hugo is relatively simple, we already had the ability to stack flags that didn’t make sense. You can set the port using –port but this only has an effect if you also specified –server.

Building Modern Web Applications

I gave this presentation to a packed house at DevCon5 in NYC July 24th. DevCon5 is a web developers conference and this year it focused on HTML5. This was one of the hardest presentations I’ve worked on for the simple fact that the audience had name recognition, but not familiarity with the database industry. Typically I’ve leaned on the fact that most participants were familiar with at least one database prior to my presentation, I had no such luxury here.

MongoDB and PHP Webinar

This is a 90 minute MongoDB tutorial on using MongoDB in PHP which I gave as a webcast for O’Reilly last year.. The tutorial covers everything from Installing MongoDB along with installing and configuring the MongoDB PHP driver. You will learn how to work with MongoDB from within PHP as well as within the MongoDB shell. What would happen if you optimized a data store for the operations application developers to actually use?

Hugo: A fast and flexible static site generator built in GoLang

Hugo is a static site generator written in GoLang. It is optimized for speed, easy use and configurability. Hugo takes a directory with content and templates and renders them into a full html website. Hugo makes use of markdown files with front matter for meta data. Written in GoLang for speed, Hugo is significantly faster than most other static site generators. A typical website of moderate size can be rendered in a fraction of a second.

Nitro : A quick and simple profiler for golang

Nitro
Nitro is a quick and easy performance analyzer library for golang. It is useful for comparing A/B against different drafts of functions or different functions. Building on the standard pprof library, Nitro provides a very high level view of your application performance to help identify areas to investigate further. It also provides an easy metric to compare as you revise and improve each part of your application.

spf13-vim : Steve Francia's Vim Distribution

spf13-vim is a distribution of vim plugins and resources for Vim, Gvim and MacVim. It is a good starting point for anyone intending to use VIM for development running equally well on Windows, Linux, *nix and Mac. The distribution is completely customisable using a ~/.vimrc.local and ~/.vimrc.bundles.local Vim RC files. Unlike traditional VIM plugin structure, which similar to UNIX throws all files into common directories, making updating or disabling plugins a real mess, spf13-vim 3 uses the Vundle plugin management system to have a well organized vim directory (Similar to mac’s app folders).

PIV : PHP Integration for VIM

This project contains the most feature complete and up to date PHP Integration for Vim. It began as a fork of the largely outdated VIP (formerly PDV), but has morphed into it’s own project. It is intended to include the best PHP specific plugins, configurations and resources for editing PHP. Special care has been taken to include the best, keep them up to date and make sure everything plays well together.

Release early, release often to minimize risk

Release Cycles have been debated for the last 30 years and will certainly be for the next 30. Arguments for longer release cycles with larger releases usually focus on how risky these rapid releases are and the stability and polish these larger releases with their longer cycles bring. These arguments are absolute rubbish. To add to the discussion I’ll put a different emphasis than I’ve heard before. Release early and release often to minimize risk.

Getting Started with Symfony2

In a follow up to my popular post on Symfony2, the open source PHP framework we use at OpenSky, I’m providing an easy guide to getting started using Symfony2. This isn’t your basic “Hello World”, but a practical guide to beginning a project with Symfony2. Requirements To get started with Symfony2 you should have a working install of Git as well as a well made install of PHP version 5.3+. Symfony2 also requires internationalization support compiled into PHP.

On Symfony2

Disclaimer I’ve got a couple disclaimers in writing this. 1. I’m one of the primary authors of the Zoop Framework for PHP. It’s pretty much the first web framework for PHP dating back to 2001. In spite of it’s age it’s still quite relevant and in use by thousands worldwide. 2. I run engineering for OpenSky where we elected to build our ecommerce platform on the Symfony2 framework and have since become the 2nd largest contributors to it.

Software Development's Magic Triangle

There’s an old adage “Fast, Cheap, Good; Pick Two”. This situation is called a magic triangle. You can have two and only two, if you try for all three you will compromise all three. Fools often try, losing everything. In the world of software development, another magic triangle exists. You can pick any two of the three, but not all three, so figure out what’s truly important. Fixed Schedules Fixed Features High Quality Unfortunately business owners rarely have visibility into the last one (Quality).